6361459_PC_XT_Technical_Reference_Apr84 6361459 PC XT Technical Reference Apr84

User Manual: 6361459_PC_XT_Technical_Reference_Apr84

Open the PDF directly: View PDF PDF.
Page Count: 307

Download6361459_PC_XT_Technical_Reference_Apr84 6361459 PC XT Technical Reference Apr84
Open PDF In BrowserView PDF
----- ----- --------,-

Technical
Reference

Personal Computer
Hardware Reference
Library

Revised Edition (April 1984)
The following paragraph does not apply to the United Kingdom or any country where such
provisions are inconsistent with local law: International Business Machines Corporation
provides this manual "as is," without warranty of any kind, either expressed or implied,
including, but not limited to the particular purpose. IBM may make improvements and/or
changes in the product(s) and/or the program(s) described in this manual at any time.
This product could include technical inaccuracies or typographical errors. Changes are
made periodically to the information herein; these changes will be incorporated in new
editions of the publication.
It is possible that this material may contain reference to, or information about, IBM

products (machines or programs), programming, or services that are not announced in
your country. Such references or information must not be construed to mean that IBM
intends to announce such IBM products, programming, or services in your country.
Products are not stocked at the address below. Requests for copies of this product and for
technical information about the system should be made to your authorized IBM Personal
Computer dealer.
The following paragraph applies only to the United States and Puerto Rico: A Reader's
Comment Form is provided at the back of this publication. If the form has been removed,
address comments to: IBM Corp., Personal Computer, P.O. Box 1328-C, Boca Raton,
Florida 33432. IBM may use or distribute any of the information you supply in any way it
believes appropriate without incurring any obligations whatever.

© Copyright International Business Machines Corporation 1981, 1982, 1983, 1984

Federal Communications Commission
Radio Frequency Interference Statement
Warning: The equipment described herein has been certified
to comply with the limits for a Class B computing device,
pursuant to Subpart J of Part 15 of the FCC rules. Only
peripherals (computer input/output devices, terminals
printers, etc.) certified to comply with the Class B limits may
be attached to the computer. Operation with non-certified
peripherals is likely to result in interference to radio and TV
reception. If peripherals not offered by IBM are used with the
equipment, it is suggested to use shielded grounded cables
with in-line filters if necessary.
CAUTION
The product described herein is equipped with a grounded
plug for the user's safety. It is to be used in conjunction with
a properly grounded receptacle to avoid electrical shock.

iii

iv

Preface

This publication describes the various units of the IBM Personal
Computer XT and IBM Portable Personal Computer; and the
interaction of each.
The information in this publication is for reference, and is
intended for hardware and program designers, programmers,
engineers, and anyone else with a knowledge of electronics
and/ or programming who needs to understand the design and
operation of the IBM Personal Computer XT or IBM Portable
Personal Computer.
This publication consists of two parts: a system manual and an
options and adapters manual.
The system manual is divided into the following sections:
Section 1, "System Board," discusses the component layout,
circuitry, and function of the system board.
Section 2, "Coprocessor," describes the Intel 8087
coprocessor and provides programming and hardware
interface information.
Section 3, "Power Supply," provides electrical input/output
specifications as well as theory of operation for both the IBM
Personal Computer XT power supply and the IBM Portable
Personal Computer power supply.
Section 4, "Keyboard," discusses the hardware make up,
function, and layouts of the IBM Personal Computer XT and
the IBM Portable Personal Computer keyboards.
Section 5, "System BIOS," describes the basic input/ output
system and its use. This section also contains the software
interrupt listing, a BIOS memory map, descriptions of vectors
with special meanings, and a set of low memory maps. In
addition, keyboard encoding and usage is discussed.

v

Section 6, "Instruction Set," provides a quick reference for the
8088 assembly instruction set.
Section 7, "Characters, Keystrokes, and Colors," supplies the
decimal and hexadecimal values for characters and text
attributes.
Section 8, "Communications,"describes communications
hardware and discusses communications interface standards
and the sequence of events to establish communications.
A glossary, bibliography, and index are also provided.
The Technical Reference options and adapters manual provides
information, logic diagrams, and specifications pertaining to the
options and adapters available for the IBM Personal Computer
family of products. The manual is modular in format, with each
module providing information about a specific option or adapter.
Modules having a large amount of text contain individual indexes.
The modules are grouped by type of device into the following
categories:

• Expansion Unit
• Displays
•

Printers

• Storage Devices
•

Memory Expansion

•

Adapters

• Miscellaneous
• Cables and Connectors
Full page length hard tabs with the above category descriptions,
sep~rate the groups of modules.

vi

The term" Technical Reference manual" in the option and adapter
manual, refers to the IBM Personal Computer XT /IBM Portable
Personal Computer Technical Reference system manual.
The term "Guide to Operations manual" in the option and adapter
manual, refers to either the IBM Personal Computer XT Guide to
Operations manual or the IBM Portable Personal Computer Guide
to Operations manual.

vii

Prerequisite Publications

•

IBM Personal Computer XT Guide to Operations

•

IBM Portable Personal Computer Guide to Operations

Suggested Reading

•

BASIC for the IBM Personal Computer

•

Disk Operating System (DOS), Version 2.1

•

IBM Personal Computer XT Hardware Maintenance and
Service

•

IBM Portable Personal Computer Hardware Maintenance and
Service

•

MACRO Assembler for the IBM Personal Computer

viii

Contents

SECTION 1. SYSTEM BOARD .....................
Description ..................................
Microprocessor ...............................
Data Flow Diagrams ...........................
System Memory Map ..........................
System Timers ..............................
System Interrupts ............................
ROM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
RAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
DMA .....................................
I/O Channel ................................
System Board Diagram ........................
I/O Channel Diagram ......... . . . . . . . . . . . . . . ..
I/O Channel Description ......................
I/O Address Map ............................
Other Circuits ...............................
Speaker Circuit ..........................
8255A I/O Bit Map ......................
System-Board Switch Settings ..............
Specifications ...............................
Card Specifications .......................
Logic Diagrams ..............................

1-1
1-3
1-4
1-5
1-8
1-10
1-10
1-12
1-12
1-12
1-13
1-15
1-16
1-18
1-21
1-23
1-23
1-25
1-27
1-28
1-28
1-30

SECTION 2. COPROCESSOR .....................
Description ..................................
Programming Interface .........................
Hardware Interface ............................

2-1
2-3
2-3
2-4

SECTION 3. POWER SUPPLY .....................
IBM Personal Computer XT Power Supply .........
Description ..............................
Input Requirements .......................
Outputs .................................
Overvoltage/Overcurrent Protection ..........
Power-Good .............................
Connector Specifications and Pin Assignments ..
IBM Portable Personal Computer Power Supply .....

3-1
3-3
3-3
3-3
3-4
3-5
3-5
3-5
3-7

ix

Description ..............................
Input Requirements .......................
Overvoltage/Overcurrent Protection ..........
Power Good .............................
Connector Specifications and Pin Assignments ..

3-7
3-7
3-9
3-9
3-9

SECTION 4. KEYBOARD .........................
IBM Personal Computer XT Keyboard and IBM
Portable Personal Computer Keyboard ............
Description ..............................
Block Diagram ...........................
Keyboard Diagrams .......................
Connector Specifications ..................
Keyboard Logic Diagram ..................

4-1
4-3
4-3
4-5
4-5
4-13
4-15

SECTION 5. SYSTEM BIOS .......................
System BIOS Usage ...........................
Keyboard Encoding and Usage ..................
Extended Codes .........................
System BIOS Listing ..........................
Quick Reference .........................

5-1
5-3
5-12
5-16
5-23
5-23

SECTION 6. INSTRUCTION SET ...................
8088 Register Model ..........................
Operand Summary ............................
Second Instruction Byte Summary ................
Memory Segmentation Model ....................
Use of Segment Override .......................
Data Transfer ................................
Arithmetic ...................................
Logic .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
String Manipulation ..........................
Control Transfer .............................
8088 Conditional Transfer Operations ............
Processor Control ............................
8087 Extensions to the 8088 Instruction Set .......
Data Transfer ...............................
Comparison ................................
Arithmetic ................ . . . . . . . . . . . . . . . . ..
Transcendental ..............................
Constants ..................................
Processor Control ............................
8088 Instruction Set Matrix ....................

6-1
6-3
6-4
6-4
6-5
6-5
6-6
6-8
6-10
6-11
6-12
6-15
6-16
6-17
6-17
6-19
6-19
6-21
6-21
6-22
6-25

x

Instruction Set Index ............ . . . . . . . . . . . . ..

6-27

SECTION 7. CHARACTERS, KEYSTROKES, AND
COLORS ...................................... 7-1
SECTION 8. COMMUNICATIONS ................. 8-1
Description .................................. 8-3
Establishing a Communications Link .............. 8-5
Establishing Link on Nonswitched Point-to-Point Line 8-6
Establishing Link on Nonswitched Multipoint Line ... 8-8
Establishing Link on Switched Point-to-Point line ... 8-10
Glossary

................................... Glossary-l

Bibliography .............................. Bibliography-l

Index ........................................ Index-l

xi

xii

Section 7. Characters, Keystrokes, and Colors .............. .

Section 8. Communications

.............................

Glossary ........................................... .

Bibliography ........................................ .

Index .............................................. .

xv

xvi

INDEX TAB LISTING
Section 1. System Board ............................... .

Section 2. Coprocessor ................................ .

Section 3. Power Supply ............................... .

Section 4. Keyboard .................................. .

Section 5. System BIOS

............................... .

Section 6. Instruction Set

...............................
xiii

xiv

System Block Diagram (XT)
The following is a system block diagram of the IBM Personal
Computer XT.
Expansion Unit

SYstem Unit

~ Pow"
So"IV
130Wat1

System Board

I

Expansion Board

4 level
8088

Oscillator

8 Interrupt
levels

Speaker
Adapter

4 Channels
Direct Memory
Access

Keyboard
Adapter

Memorv

Read·Only
Memory

Math
Coprocessor

H

Speaker

H

Keyboard

Oscillator

I
8 Slot
Expanded

.---

I/O Channel

.---

(Optional)

1

r-

.---

BSlot
I/O Channel

l/

r--

Extender
Card

rL-

rr-

r--

r--

I-

V-

f-

r-'-

Note: A "System to Adapter Compatibility Chart," to
identify the adapters supported by each system, and an
"Option to Adapter Compatibility Chart," to identify the
options supported by each adapter, can be found in the front
matter of the Technical Reference options and adapters
manual, Volume 1.

xvii

System Block Diagram (Portable)
The following is a system block diagram of the IBM Portable
Personal Computer.
Sysl.m Unit

{

I

Composll.
CRr

Expansion Unit
Expansion Board

Powor Supply
114 Wall

I

Sysl.m Board
Oscilialor
Spoaker
Adapter
K.yboard
Adapter
Road-Only
Memory

8088
8 Inl",upl
L.v.ls
4 Chann.ls
OIrocl M.mory
Access

Memory
Coprocessor

-

r,-.

f--

~

-

t-t-i-

-

r-

'--

'--

~Options Slot
f4- Olskelte Adapter

I ~OIOr/GraPhICS

.- '-

'-

-

2 ~ Exlendor Card

_

Card

8-Slot
Expand.d
1/0 Channel

'-

5 ::-- Options Slot

r-

Oscll1alor

r-

Receiver
~

6 ::;-. Options Slot

r-

~
~

r-

B
7 ~ o'pUons Slot

r-

8-Slot
1/0 Channel

t--

r-

r-

(Optional!

I
K.yboard I
Spoaker

S.. Note

-

Math

-

H
H

Powor Supply
130 Walt
4 L.v.1

'-

I

Note: A "System to Adapter Compatibility Chart," to
identify the adapters supported by each system, and an
"Option to Adapter Compatibility Chart," to identify the
options supported by each adapter, can be found in the front
matter of the Technical Reference options and adapters
manual, Volume 1.

xviii

SECTION 1. SYSTEM BOARD

Contents
1-3

Description

Microprocessor ................................... 1-4
Data Flow Diagrams

1-5

System Memory Map

1-8

System Timers ................................... 1-10
System Interrupts

................................ 1-10

ROM

......................................... 1-12

RAM

1-12

DMA

1-12

I/O Channel .................................... 1-13
System Board Diagram

............................ 1-15

1/ 0 Channel Diagram ............................. 1-16
I/O Channel Description ........................... 1-18
I/O Address Map

................................ 1-21

Other Circuits ...................................
Speaker Circuit ...............................
8255A I/O Bit Map ...........................
System-Board Switch Settings ....................

1-23
1-23
1-25
1-27

System Board 1-1

Specifications ................................... 1-28
Card Specifications ............................ 1-28
Logic Diagrams .................................. 1-30

1-2 System Board

Description
The system board fits horizontally in the base of the system unit
of the Personal Computer XT and Portable Personal Computer
and is approximately 215.9 mm by 304.8 mm (8-1/2 x 12 in.). It
is a multilayer, single-land-per-channel design with ground and
internal planes provided. DC power and a signal from the power
supply enter the board through two 6-pin connectors. Other
connectors on the board are for attaching the keyboard and
speaker. Eight 62-pin card-edge sockets are also mounted on the
board. The I/O channel is bussed across these eight I/O slots.
Slot J8 is slightly different from the others in that any card placed
in it is expected to respond with a 'card selected' signal whenever
the card is selected.
A dual in-line package (DIP) switch (one eight-switch pack) is
mounted on the board and can be read under program control.
The DIP switch provides the system programs with information
about the installed options, how much storage the system board
has, what type of display adapter is installed, what operation
modes are desired when power is switched on (color or
black-and-white, 80- or 40-character lines), and the number of
diskette drives attached.
The system board contains the adapter circuits for attaching the
serial interface from the keyboard. These circuits generate an
interrupt to the microprocessor when a complete scan code is
received. The interface can request execution of a diagnostic test
in the keyboard.
The system board consists of five functional areas: the processor
subsystem and its support elements, the ROM subsystem, the
R/W memory subsystem, integrated I/O adapters, and the I/O
channel. All are described in this section.

System Board 1-3

Microprocessor
The heart of the system board is the Intel 8088 Microprocessor.
This is an 8-bit external-bus version of Intel's 16-bit 8086
Microprocessor, and is software-compatible with the 8086. Thus,
the 8088 supports 16-bit operations, iI1cluding mUltiply and
divide, and supports 20 bits of addressing (1 M byte of storage).
It also operates in maximum mode, so a coprocessor can be added
as a feature. The microprocessor operates at 4.77-MHz. This
frequency is derived from a 14.31818-MHz crystal, the frequency
of which is divided by 3 for the microprocessor clock, and divided
by 4 to obtain the 3.S8-MHz color-burst signal required for color
televisions.
At the 4.77-MHz clock rate, the 8088 bus cycles are four clocks
of 210 nanoseconds (ns), or 840-ns. I/O cycles take five 210-ns
clocks or 1.OS microseconds (fLS).

1-4 System Board

Data Flow Diagrams
The system board data flow diagram follows.

System Board 1-5

System Board Data Flow (Part 1 of 2)

1-6 System Board

ConirolBu5

System Board Data Flow (Part 2 of 2)

System Board 1-7

System Memory Map
Start Address
Decimal
Hex

0
16K
32K
48K

00000
04000
08000
OCOOO

64K
80K
96K
112K

10000
14000
18000
1COOO

128K
144K
160K
176K

20000
24000
28000
2COOO

192K
208K
224K
240K

30000
34000
38000
3COOO

256K
272K
288K
304K

40000
44000
48000
4COOO

320K
336K
352K
368K

50000
54000
58000
5COOO

384K
400K
416K
432K

60000
64000
68000
6COOO

448K
464K
480K
496K

70000
74000
78000
7COOO

512K
528K
544K
560K

80000
84000
88000
8COOO

576K
592K
608K
624K

90000
94000
98000
9COOO

Function

128-256K Read/Write Memory
on System Board

384K R/W Memory Expansion
in I/O Channel

System Memory Map (Part 1 of 2)

1-8 System Board

Start Address
Decimal
Hex

640K
656K
672K
688K

Function

AOOOO'
A4000
A8000'
ACOOO

704K

BOOOO

720K

B4000

736K

B8000

752K

BCOOO

768K
784K

COOOO
C4000

800K

C8000

816K
832K
848K
864K
880K
896K
912K
928K
944K

CCOOO
DOOOO
D4000
D8000
DCOOO
EOOOO
E4000
E8000
ECOOO

960K
976K
992K
1008K

FOOOO
F4000
F8000
FCOOO

128K Reserved
Monochrome
Color/Graphics

Fixed Disk Control

192K Read Only Memory
Expansion and Control

64K Base System ROM
BIOS and BASIC

System Memory Map (Part 2 of 2)

System Board 1-9

System Timers
Three programmable timer/ counters are used by the system as
follows: Channel 0 is used as a general-purpose timer providing a
constant time base for implementing a time-of-day clock;
Channel I is used to time and request refresh cycles from the
DMA channel; and Channel 2 is used to support the tone
generation for the audio speaker. Each channel has a minimum
timing resolution of 1.0S-.us.

System Interrupts
Of the eight prioritized levels of interrupt, six are bussed to the
system expansion slots for use by feature cards. Two levels are
used on the system board. Level 0, the higher priority, is attached
to Channel 0 of the timer/counter and provides a periodic
interrupt for the time-of-day clock.
Level I is attached to the keyboard adapter circuits and receives
an interrupt for each scan code sent by the keyboard. The
non-maskable interrupt (NMI) of the 8088 is used to report
memory parity errors.

1-10 System Board

The following diagram contains the System Interrupt Listing.
Number
NMI

UsaJle

Parity

8087
0
1
2

3

4
5
6
7

Timer
Keyboard
Reserved
Asynchronous Communications (Alternate)
SDLC Communications
BSC Communications
Cluster (Primary)
Asynchronous Communications (Primary)
SDLC Communications
BSC Communications
Fixed Disk
Diskette
Printer
Cluster (Alternate)

8088 Hardware Interrupt Listing

System Board 1-11

ROM
The system board supports both read only memory (ROM) and
read/write (R/W) memory. It has space for 64K by 8 of ROM
or erasable programmable read-only memory (EPROM). Two
module sockets are provided, each of which can accept a 32K or
8K device. One socket has 32K by 8 of ROM, the other 8K by 8
bytes. This ROM contains the power-on self test, I/O drivers,
dot patterns for 128 characters in graphics mode, and a diskette
bootstrap loader. The ROM is packaged in 28-pin modules and
has an access time and a cycle time of 250-ns each.

RAM
The system board also has from 128K by 9 to 256K by 9 of R/W
memory. A minimum system would have 128K of memory, with
module sockets for an additional 128K. Memory greater than the
system board's maximum of 256K is obtained by adding memory
cards in the expansion slots. The memory consists of dynamic
64K by 1 chips with an access time of 200-ns and a cycle time of
345-ns. All R/W memory is parity-checked.

DMA
The microprocessor is supported by a set of high-function support
devices providing four channels of 20-bitdirect-memory access
(DMA), three 16-bit timer/counter channels, and eight
prioritized interrupt levels.
Three of the four DMA channels are available on the I/O bus and
support high-speed data transfers between I/O devices and
memory without microprocessor intervention. The fourth DMA
channel is programmed to refresh the system's dynamic memory.
This is done by programming a channel of the timer/counter

1-12 System Board

device to periodically request a dummy DMA transfer. This
action creates a memory-read cycle, which is available to refresh
dynamic memory both on the system board and in the system
expansion slots. All DMA data transfers, except the refresh
channel, take five microprocessor clocks of 21 O-ns, or 1.05-/Ls if
the microprocessor 'ready' line is not deactivated. Refresh DMA
cycles take four clocks or 840-ns.

1/0 Channel
The I/O channel is an extension of the 8088 microprocessor bus.
It is, however, demultiplexed, repowered, and enhanced by the

addition of interrupts and direct memory access (DMA)
functions.
The I/O channel contains an 8-bit, bidirectional data bus, 20
address lines, 6 levels of interrupt, control lines for memory and
I/O read or write, clock and timing lines, 3 channels of DMA
control lines, memory refresh-timing control lines, a 'channel
check' line, and power and ground for the adapters. Four voltage
levels are provided for I/O cards: +5 Vdc, -5 Vdc, + 12 Vdc,
and -12 Vdc. These functions are provided in a 62-pin connector
with 100-mil card tab spacing.
A 'ready' line is available on the I/O channel to allow operation
with slow I/O or memory devices. If the channel's 'ready' line is
not activated by an addressed device, all
microprocessor-generated memory read and write cycles take four
210-ns clock cycles or 840-ns/byte. All
microprocessor-generated I/O read and write cycles require five
clocks for a cycle time of 1.05-/Ls/byte. All DMA transfers
require five clocks for a cycle time of 1.05-/Ls/byte. Refresh
cycles occur once every 72 clocks (approximately 15-/Ls) and
require four clocks or approximately 7% of the bus bandwidth.

I/O devices are addressed using I/O mapped address space. The
channel is designed so that 768 I/O device addresses are available
.to the I/O channel cards.

System Board 1-13

A 'channel check' line exists for reporting error conditions to the
microprocessor. Activating this line results in a non-maskable
interrupt (NMI) to the 8088 microprocessor. Memory expansion
options use this line to report parity errors.
The I/O channel is rep owe red to provide sufficient drive to power
all eight (11 through 18) expansion slots, assuming two low-power
Schottky (LS) loads per slot. The IBM I/O adapters typically use
only one load.
Timing requirements on slot 18 are much stricter than those on
slots 11 through 17. Slot 18 also requires the card to provide a
signal designating when the card is selected.

1-14 System Board

System Board Diagram
The following diagram shows the component layout for the
system board.
Clock Chip
Trimmer
System Expansion Slots
r~--------~'-------~
Jl

$

J2

J3

System
Board
Power
Connections

J4

~ IBM Math

I~II

00

Nl

0000000000 rJ ~

IlODDDOD DD0 ~

Up to 256K
Read/Write
Memory
with parity
Checking

Coprocessor
Intel 8088

~~:oprocessor

~ ~~c

ODD:
:-:DTJD
- - -0--00
--- -10 0DOD DOQ ~~:~~g:ration

naaoooooo!DDDDODD
noooooOOaOOODDDD
D_[DDDDDDilooDODOO
$

~ .3

-=--c::J- 0

:!:;to...

$

Pin 1t='\ Speaker
Output
System Board Component Diagram

System Board 1-15

1/0 Channel Diagram
The following page contains the I/O channel diagram. Alllines
are TTL-compatible.

1..., 16 System Board

Rear Panel

r\

Signal Nam e

-

GNO

-

BI

AI-

r---

Sig nal Name
-I/O CH CK

-

-

-

-

-

+OS

-

'04

+OR02

-

-12V

>-

-

'02

+RESET ORV

+.v
+IRQ2

-.voc

-

-CARD SLCTO

+12V

-

GNO

f-- BI 0

-MEMW

r-

-MEMR

'-

-lOW

'-

-lOR

c-

-

+07
+06

'03

-

+01

-

+00
'I/O CH ROY

AIO -

-

'AEN

tA19
'AIS

tAll

-OACK3

r-

-

+OR03

f--

-

-OACKI

f--

-

+

+OROI

......

-

IA13

-

+

-OACKO

r-

CLK

f-- BZO

+IROJ
+IRQ6
+IRQ5

tA16

-

- - - - +A 15
A 14

A12

A20 -

tA11

f--

-

'AIO

r-

-

·A9

rr-

-

+AS

-

'A7

+IRQ3

r-

-

'A6

-OACK2

r-

+T/C

f--

-

+ALE

r-

-

'A3

+.v

r-

-

+A2

+OSC

r-

+GNO

r- B31

+IR04

~

\

.AS
·A4

-

'AI

A31 -

+AO
'---

\

Camp anent Side

I/O Channel Diagram

System Board 1-17

110 Channel Description
The following is a description of the I/O Channel. All lines are
TTL-compatible.
Signal

I/O

Description

AO-A19

o

Address bits 0 to 19: These lines are
used to address memory and I/O
devices within the system. The 20
address lines allow access of up to 1M
byte of memory. AO is the least
significant bit (LSB) and A19 is the
most significant bit (MSB). These lines
are generated by either the
microprocessor or DMA controller.
They are active high.

AEN

o

Address Enable: This line is used to
de-gate the microprocessor and other
devices from the I/O channel to allow
DMA transfers to take place. When
this line is active (high), the DMA
controller has control of the address
bus, data bus, Read command lines
(memory and I/O), and the Write
command lines (memory and I/O).

ALE

o

Address Latch Enable: This line is
provided by the 8288 Bus Controller
and is used on the system board to latch
valid addresses from the
microprocessor. It is available to the
1/ 0 channel as an indicator of a valid
microprocessor address (when used with
AEN). Microprocessor addresses are
latched with the falling edge of ALE.

-CARD SLCTD

I

-Card Selected: This line is activated by
cards in expansion slot J8. It signals the
system board that the card has been
selected and that appropriate drivers on

1-18 System Board

the system board should be directed to
either read from, or write to, expansion
slot J8. Connectors J1 through J8 are
tied together at this pin, but the system
board does not use their signal. This line
should be driven by an open collector
device.
CLK

o

System clock: It is a divide-by-3 of the
oscillator and has a period of 21O-ns
(4.77-MHz). The clock has a 33%
duty cycle.

DO-D7

I/O

Data Bits 0 to 7: These lines provide
data bus bits 0 to 7 for the
microprocessor, memory, and I/O
devices. DO is the LSB and D7 is the
MSB. These lines are active high.

-DACKO to
-DACK3

o

-DMA Acknowledge 0 to 3: These lines
are used to acknowledge DMA requests
(DRQI-DRQ3) and refresh system
dynamic memory (-DACKO). They are
active low.

DRQ1-DRQ3

I

DMA Request 1 to 3: These lines are
asynchronous channel requests used by
peripheral devices to gain DMA service.
They are prioritized with DRQ3 being
the lowest and DRQ 1 being the highest.
A request is generated by bringing a
DRQ line to an active level (high). A
DRQ line must be held high until the
corresponding DACK line goes active.

-I/O CH CK

I

-I/O Channel Check: This line
provides the microprocessor with parity
(error) information on memory or
devices in the II 0 channel. When this
signal is active low, a parity error is
indicated.

System Board 1-19

I/O CHRDY

I

I/O Channel Ready: This line,
normally high (ready), is pulled low (not
ready) by a memory or I/O device to
lengthen I/O or memory cycles. It
allows slower devices to attach to the
I/O channel with a minimum of
difficulty. Any slow device using this
line should drive it low immediately
upon detecting a valid address and a
Read or Write command. This line
should never be held low longer than 10
clock cycles. Machine cycles (I/O or
memory) are extended by an integral
number of clock cycles (210-ns).

-lOR

0

-I/O Read Command: This command
line instructs an I/O device to drive its
data onto the data bus. It may be
driven by the microprocessor or the
DMA controller. This signal is active
low.

-lOW

0

-I/O Write Command: This command
line instructs an I/ 0 device to read the
data on the data bus. It may be driven
by the microprocessor or the DMA
controller. This signal is active low.

IRQ2-IRQ7

I

Interrupt Request 2 to 7: These lines
are used to signal the microprocessor
that an I/ 0 device requires attention.
They are prioritized with IRQ2 as the
highest priority and IRQ7 as the lowest.
An Interrupt Request is generated by
raising an IRQ line (low to high) and
holding it high until it is acknowledged
by the microprocessor (interrupt service
routine).

-MEMR

0

-Memory Read Command: This
command line instructs the memory to
drive its data onto the data bus. It may

1-20 System Board

be driven by the microprocessor or the
DMA controller. This signal is active
low.
-MEMW

o

-Memory Write Command: This
command line instructs the memory to
store the data present on the data bus.
It may be driven by the microprocessor
or the DMA controller. This signal is
active low.

OSC

o

Oscillator: High-speed clock with a
70-ns period (14.31818-MHz). It has a
50% duty cycle.

RESETDRV

o

Reset Drive: This line is used to reset
or initialize system logic upon power-up
or during a low line-voltage outage.
This signal is synchronized to the falling
edge of CLK and is active high.

T/C

o

Terminal Count: This line provides a
pulse when the terminal count for any
DMA channel is reached. This signal is
active high.

1/0 Address Map
The following page contains the I/O Address Map.

System Board 1-21

Hex Range*

Usage

OOO-OOF
020-021
040-043
060-063
080-083,

DMA Chip 8237A-5
Interrupt 8259A
Timer 8253-5
PP18255A-5
DMA Page Registers
l
NMI Mask Register
(
. /~~
-ZOU-Lor
Game Control
210-217
Expansion Unit
2F8-2FF
Asynchronous Communications (Secondary)
300-31F
Prototype Card
320-32F
Fixed Disk
378-37F
Printer
380-38C***
SDLC Communications
Binary Synchronous Communications (Secondary)
380-389***
390-393
Ch,Jster,
3AO-3A9
Binary Synchronous Communications (Primary)
3BO-3BF
I BM Monochrome Display / Printer
3DO-3DF
Color / Graphics
3FO.-3F7
Diskette
.~c- (3.F8-3~. ____ - - -Asyrn:hronous Communications (Primary)
?90-793
CIt1ster (Adapter 1)
ij90-B93
Cluster (Adapter 2)
1390-1393
Cluster (Adapter 3)
2390-2393
Cluster (Adapter 4)

r
en

~
~

I~~
~

§:!!!

~

iii

ill

~

I

II

lill;;;I!!;;;

~

[;l

;c

;;;:

=:E:::~

-

1-32 System Board

~

~

;;;:

""'1"'<;
~~ ~>C

.'"

=:eI ~§:

~

II

§:

5
~

II

~

!
-

I~I~I~I~ II II I

I~

o....
'0

...

('t)

i

.J:.

sa

...

~

(II

o

aI

E

!III

>

en

~~

~~;; ~~
=:::=:::§§:

•
0:

;0 ;0
0:

0:

I•"'

-•

0: 0:

~II

!2!a

~1j

:;;!i

!2~

I~~

EE

System Board 1-33

~

" ~!~~~

~

i

~

0'
....
....
0
~

....
G)
G)

.s:

en

J
'"

0"

111111,

" "

111111

:!;: ::~~ ;:~:lI~U~I~I~III~ i~~~§!!ij!HH!!l!!~
=~

"'"

><~

=

~~@~~@@2ffE~~ee~@~~;g~@@§@@@@~

1-34 System Board

..

"C
(II

0

r:n
E

....III
en>
G)

11
111111111111111111

I

111111

=

System Board 1-35

E

;

E

EEEEEEEEE EEEEEEEE

~§:

;

~;;i;;i;;

gi;i:ls;g:g:g~

~i~

E
~
~

!II

IIII III

E:E:E:E:E:E:EiIE

I II III

.......

0

0
CD

...

Q)
Q)

.l:

5!!

"

...ca

"C

~

0

i

CO

E
Q)

...
UI

>

(/)

~g::g;gS~c;:g

e§:§:~§:§:ili§:

Ii ~~
"

§:§:

~
~

~

E

1-36 System Board

[~~~
§:§

~

"

~~ ~~§i!g

§:§ §:§:§:§:§

:i~ ~~~~ ~

e§:§:§:§:§:

!1 [~~

='~

~

" " tl§: "

;;;

§:§:

0'
......o
"....
CD
CD

~

~

'EIII

o

a:I

E

.!1/1

>en

System Board 1-37

i!E

:::~

:!E

!;;

~

2

~~

~

0
..-

....0

:::

.

00
~

G)
G)

.c

~

"0

ia0

£Q

..

E
G)
1/1

>

C/)

II
§:§:

if

~

I II III

I~~l~ !!~l! ~iii'l i!!l!lei

l~~
;

;=

i!E

1-38 System Board

ee~ e§:§: e!!?:e@§:@:§:

:=-

~

:n[N
o

~ ~

~ ~~
<
W~~

N~.n

~~-U------+H~~-~

~~

~

,,:8
!e::'
f

",1,,1
l" _

,-

§ ~

g

.......o
o

0)

;

~

Q)

.&:.

5!!
r

...ca

"C

~iS . .
~~:...,

.

~

~

:2~~~
N~

~~~N

T

E
Q)

ti

en>

System Board 1-39

it

~~

fl~
it

~

i
i
i

!BHHH! !HHH! ~;:S:l iSiS:: :;:;~§g ~g ~§gl~I1l!I~I~ ~~;5'l~I~Ii'iI~I1!Oi
>C~~

III

iiN ~~;

i aai3C3

it

-~

§!!H§:§§ § § § § §§§§§§§§§!!H!'H!i§:§§§§§§ §§eL§§~~§!S1: §5f5f5ffl

it

ii~

8~

-

I

!

i
iN

....0
0

.-

...
G)
G)

§

.::

re

"C
«J

~

I!~
-

1-40 System Board

0.-

..

0
IX!

...E
G)

til

en>

SECTION 2. COPROCESSOR

Contents
Description
Programming Interface

2-3
............................. 2-3

Hardware Interface ................................ 2-4

Coprocessor 2-1

2-2 Coprocessor

Description
The Math Coprocessor (8087) enables the IBM Personal
Computer to perform high-speed arithmetic, logarithmic
functions, and trigonometric operations with extreme accuracy.
The 8087 coprocessor works in parallel with the microprocessor.
The parallel operation decreases operating time by allowing the
coprocessor to do mathematical calculations while the
microprocessor continues to do other functions.
The first five bits of every instruction's operation code for the
coprocessor are identical (binary 110 11). When the
microprocessor and the coprocessor see this operation code, the
microprocessor calculates the address of any variables in memory,
while the coprocessor checks the instruction. The coprocessor
takes the memory address from the microprocessor if necessary.
To gain access to locations in memory, the coprocessor takes the
local bus from the microprocessor when the microprocessor
finishes its current instruction. When the coprocessor is finished
with the memory transfer, it returns the local bus to the
microprocessor.
The IBM Math Coprocessor works with seven numeric data types
divided into the three classes listed below.
•

Binary integers (3 types)

•

Decimal integers (1 type)

•

Real numbers (3 types)

Programming Interface
The coprocessor extends the data types, registers, and instructions
to the microprocessor.

Coprocessor 2-3

The coprocessor has eight 80-bit registers, which provide the
equivalent capacity of the 40 16-bit registers found in the
microprocessor. This register space allows constants and
temporary results to be held in registers during calculations, thus
reducing memory access and improving speed as well as bus
availability. The register space can be used as a stack or as a
fixed register set. When used as a stack, only the top two stack
elements are operated on. The figure below shows
representations of large and small numbers in each data type.

Data Type

Bits

Significant
Digits (Decimal)

Approximate Range (decimal)

Word Integer
Short Integer
Long Integer
Packed Decimal
Short Real*
Long Real*
Temporary Real

16
32
64
80
32
64
80

4
9
18
18
6-7
15-16
19

- 32,768:5 X:5 + 32,767
- 2x 109 :5 X:5 + 2x 109
- 9x10'S:5X:5 + 9x10 '8
- 99 ... 99:5 X:5 + 99 ... 99 (18 digits)
8.43x 10 37 :51 X 1:5 3. 37x 10 38
4.19x 10- 307 :5IXI:5 1.67x 10 308
3.4x 10-4932 :51 XI :5 1. 2x 10 4932

*The short and long real data types correspond to the single and double precision
data types.

Data Types

Hardware Interface
The coprocessor uses the same clock generator and system bus
interface components as the microprocessor. The coprocessor is
wired directly into the microprocessor. The microprocessor's
queue status lines (QSO and QS 1) enable the coprocessor to
obtain and decode instructions simultaneously with the
microprocessor. The coprocessor's 'busy' signal informs the
microprocessor that it is executing; the microprocessor's WAIT
instruction forces the microprocessor to wait until the coprocessor
is finished executing (WAIT FOR NOT BUSY).
When an incorrect instruction is sent to the coprocessor (for
example, divide by 0 or load a full register), the coprocessor can

2-4 Coprocessor

signal the microprocessor with an interrupt. There are three
conditions that will disable the coprocessor interrupt to the
microprocessor:
1. Exception and interrupt-enable bits of the control word are set
to l's.
2. System-board switch-block 1, switch 2, set in the On position.
3. Non-maskable interrupt (NMI) register (REG) is set to zero.
At power-on time, the NMI REG is cleared to disable the NMI.
Any program using the coprocessor's interrupt capability must
ensure that conditions 2 and 3 are never met during the operation
of the software or an "Endless WAIT" will occur. An "Endless
WAIT" will have the microprocessor waiting for the 'not busy'
signal from the coprocessor while the coprocessor is waiting for
the microprocessor to interrupt.
Because a memory parity error may also cause an interrupt to the
microprocessor NMI line, the program should check the
coprocessor status for an exception condition. If a coprocessor
exception condition is not found, control should be passed to the
normal NMI handler. If an 8087 exception condition is found,
the program may clear the exception by executing the FNSAVE
or the FNCLEX instruction, and the exception can be identified
and acted upon.
The NMI REG and the coprocessor's interrupt are tied to the
NMI line through the NMI interrupt logic. Minor modifications
to programs designed for use with a coprocessor must be made
before the programs will be compatible with the IBM Personal
Computer Math Coprocessor.

Coprocessor 2-5

Memory
and
System
Board

NMI f - - -..... NMI
NMI INT
Logic

8088

INT

Family
Bus
Interface

Multimaster
System
Bus

Components

8284
Clock
Generator
CLKI--t----'--.! CLK

Math
Coprocessor

L -_ _---1

INT

RO/GT1

Coprocessor Interconnection

Detailed information for the internal functions of the Intel 8087
Coprocessor can be found in the books listed in the Bibliography.

2-6 Coprocessor

SECTION 3. POWER SUPPLY

Contents
IBM Personal Computer XT Power Supply ..•.•.......•. 3-3

Description ...................................
Input Requirements .............................
Outputs ......................................
Overvoltage/Overcurrent Protection ...............
Power-Good ..................................
Connector Specifications and Pin Assignments ........
IBM Portable Personal Computer Power Supply

.•..•.....
Description ...................................
Input Requirements .............................
Amperage Output ...........................
Vdc Sense Voltage Output .....................
Overvoltage/Overcurrent Protection ...............
Power Good ..................................
Connector Specifications and Pin Assignments ........

3-3
3-3
3-4
3-5
3-5
3-5
3-7
3-7
3-7
3-8
3-8
3-9
3-9
3-9

Power Supply 3-1

3-2 Power Supply

IBM Personal Computer XT Power
Supply

Description
The system dc power supply is a 130-watt, 4 voltage-level
switching regulator. It is integrated into the system unit and
supplies power for the system unit, its options, and the keyboard.
The supply provides 15 A of +5 Vdc, plus or minus 5%, 4.2 A of
+ 12 V dc, plus or minus 5 %, 300 rnA of -5 V dc, plus or minus
10%, and 250 rnA of -12 Vdc, plus or minus 10%. All power
levels are regulated with overvoltage and overcurrent protection.
There are two power supplies, 120 Vac and 220/240 Vac. Both
are fused. If dc overcurrent or overvoltage conditions exist, the
supply (lutomatically shuts down until the condition is corrected.
The supply is designed for continuous operation at 130 watts.
The system board takes approximately 2 to 4 A of +5 Vdc, thus
allowing approximately 11 A of +5 Vdc for the adapters in the
system expansion slots. The + 12 V dc power level is designed to
power the internal 5-1/4 inch diskette drive and the 10M fixed
disk drive. The -5 Vdc level is used for analog circuits in the
diskette adapter's phase-lock loop. The + 12 Vdc and -12 Vdc
are used for powering the Electronic Industries Association (EIA)
drivers for the communications adapters. All four power levels
are bussed across the eight system expansion slots.
The IBM Monochrome Display has its own power supply,
receiving its ac power from the system unit's power system. The
ac output for the display is switched on and off with the Power
switch and is a nonstandard connector, so only the IBM
Monochrome Display can be connected.

Input Requirements
The nominal power requirements and output voltages are listed in
the following tables.

Power Supply 3-3

Voltage @ 50/60 Hz
NominalVac

MinimumVac

MaximumVac

110
220/240

90
180

137
259

Input Requirements
!~

Frequency: 50/60 Hz ± 3 Hz
Current: 4.1 A max at 90 Vac

Outputs
Current (Amps)

Voltage (Vdc)

Regulation (Tolerance)

Nominal

Minimum

Maximum

+%

-%

+ 5.0
- 5.0
-12.0
-12.0

2.3
0.0
0.4
0.0

15.0
0.3
4.2
0.25

5
10
5
10

4
8
4
9

Vdc Output

Voltage (Vac)

Current (Amps)

Voltage Limits (Vac)

Nominal

Minimum

Maximum

Minimum

Maximum

120
220/240

0.0
0.0

1.0
1.0

88
180

137
259

Vac Output

The sense levels of the dc outputs are:
Output
(Vdc)

Minimum
(Vdc)

Sense Voltage Nominal
(Vdc)

+5
-5
+12
-12

+4.5
-4.3
+ 10.8
-10.2

+ 5.0
- 5.0
+ 12.0
-12.0

3-4 Power Supply

Maximum
(Vdc)
+ 5.5
- 5.5
+ 13.2
-13.2

Overvoltage/Overcurrent Protection
Nominal
Voltage (Vac)

Type
Protection

Rating (A)

100-125
200-240

Fused
Fused

5A
2.5A

Voltage and Current Protection

Power Good
When the power supply is switched off for a minimum of 1
second and then switched on, the 'power good' signal is
regenerated.
This signal is the logical AND of the dc output-voltage sense
signal and the ac input-voltage fail signal. This signal is
TTL-compatible up-level for normal operation or down-level for
fault conditions. The ac fail signal causes 'power good' to go to a
down-level when any output voltage falls below the sense voltage
limits.
When power is switched on, the de output-voltage sense signal
holds the 'power good' signal at a down level until all output
voltages reach their minimum sense levels. The 'power good'
signal has a turn-on delay of 100 to 500 milliseconds.

Connector Specifications and Pin Assignments
The power connector on the system board is a 12-pin connector
that plugs into the power supply connectors, P8 and P9. The
Input Voltage Selector switch and the pin assignment locations
follow.

Power Supply 3-9

Power Supply Fan Connector
IBM Display Connector "'==:::l
5-1/4 Inch Diskette Drive
Power Connectors

0'

~ Pin 1. -12 Vdc
Pin

.

Pin 2. Ground

:

Pin 4. +5 Vdc
Pin 3. Ground
Pin 2. Ground
Pin 1. +12 Vdc
Pin 4. +5 Vdc
Pin 3. Ground
Pin 2. Ground
Pin 1. + 12 Vdc
Pin 6. +5 Vdc
Pin 5. +5 Vdc
Pin 4. +5 Vdc
Pin 3. -5 Vdc
Pin 2. Ground
Pin 1. Ground
Pin 6. Ground
Pin 5. Ground
Pin 4. -12 Vdc
Pin 3. +12 Vdc
Pin 2. Key
Pin 1. Power Good

~ Pin 1. +12 Vdc

~
:
:

:
~
:

Voltage
Selector
Switch
ON/OFF
Switch

Power Supply Fan

Power Supply and Connectors

3-10 Power Supply

2. Ground

.~

~

Overvoltage/Overcurrent Protection
Voltage Nominal Vac

Type Protection

Rating Amps

110
220/240

Fuse

5.0
3.5

Fuse

Power-Good
When the supply is switched off for a minimum of 1.0 second,
and then switched on, the 'power good' signal will be regenerated.
The 'power good' signal indicates that there is adequate power to
continue processing. If the power goes below the specified levels,
the 'power good' signal triggers a system shutdown.
This signal is the logical AND of the dc output-voltage 'sense'
signal and the ac input-voltage 'fail' signal. This signal is
TTL-compatible up-level for normal operation or down-level for
fault conditions. The ac 'fail' signal causes 'power good' to go to a
down level when any output voltage falls below the regulation
limits.
The dc output-voltage 'sense' signal holds the 'power good' signal
at a down level (during power-on) until all output voltages have
reached their respective minimum sense levels. The 'power good'
signal has a turn-on delay of at least 100-ms but no greater than
SOO-ms.

Connector Specifications and Pin Assignments
The power connector on the system board is a l2-pin male
connector that plugs into the power-supply connectors. The pin
assignments and locations are shown on the following page.

Power Supply 3-5

~

I

="

~

...
~

i

"8
E
...

5·1/4 Inch Diskette Drive
Power Connector

~

rn
r:::

Fixed Disk Drive
Power Connector

"'0
"'0

<"
o

:l
:l
~

...
o
o

...

III

ei.....

Pin
Pin
Pin
,Pin

~~

'"

8

8

8

Pin 4, +5 Vdc
3, Ground
Pin 2, Ground
Pin 1, +12 Vdc

~Pin

~~

(")

®::::

t

Q)

:l

Q.

Pin 4, +5 Vdc
3, .Ground
Pin 2, Ground
. Pin1,+12Vdc

~ Pin

6,
5,
4,
3,

+5 Vdc
+5 Vdc
+5 Vdc
-5 Vdc

in 1, Ground
- 6, Ground
n 5, Ground
4, -12 Vdc
- .3, +12 Vdc

System
Board
Power Connectors

2, Key
Pin l,Pwr Good

Power On/Off

\

\. System Unit

Power -Connector
IBM Monochrome Display
Powar Connector
(Internally Switched)

.c_ -:;:;;..

IBM Portable Personal Computer Power
Supply

Description
The system unit's power supply is a 114-watt, switching regulator
that provides five outputs. It supplies power for the system unit
and its options, the power supply fan, the diskette drive, the
composite display, and the keyboard. All power levels are
protected against overvoltage and overcurrent conditions. The
input voltage selector switch has 115 Vac and 230 Vac positions.
If a dc overload or overvoltage condition exists, the power supply
automatically shuts down until the condition is corrected, and the
power supply is switched off and then on.
The internal 5-1/4 inch diskette drive uses the +5 Vdc and the
+ 12 V dc power levels. Both the + 12 V dc and -12 Vdc power
levels are used in the drivers and receivers of the optional
communications adapters. The display uses a separate + 12 Vdc
power level. The + 5 V dc, -5 Vdc, + 12 Vdc, and -12 Vdc power
levels are bussed across the system expansion slots.

Input Requirements
Nominal
Voltage (Vac)

100-125
200-240

Minimum
Voltage (Vac)

90
180

Maximum
Voltage (Vac)

137
259

Note: Input voltage to be 50 or 60 hertz, ± 3 hertz.

Power Supply 3-7

Amperage Output
Nominal
Voltage (Vdc)
+5
-5
- 12
+12
+ 12 (display)

Minimum
Current (A)

Maximum
Current (A)

2.3
0.0
0.0
0.04
0.5

11.2
0.3
0.25
2.9
1.5

Amperage Output

Note: Maximum current is 3.5 amperes at 90 Vac.

Vde Sense Voltage Output
Nominal
Voltage (Vdc)

+5
-5
- 12
+ 12
+ 12 (display)

Minimum
Sense
Voltage (Vdc)
+4.5
- 4.3
- 10.2
+ 10.8
+ 10.8

Vdc Sense Voltage Tolerance

3-8 Power Supply

Maximum
Sense
Voltage (Vdc)
+ 6.5
- 6.5
- 15.6
+ 15.6
+ 15.6

SECTION 4. KEYBOARD

Contents
IBM Personal Computer XT Keyboard and IBM Portable
Personal Computer Keyboard ................ i • • •

• • ••

4-3

Description ................................... 4-3
Block Diagram ................................. 4-5
Keyboard Diagrams ............................. 4-5
Connector Specifications ........................ 4-13
Keyboard Logic Diagram ....................... 4-15

Keyboard 4-1

4-2 Keyboard

Block Diagram
8255A5

LS322

P A O - - - - - - i OH OH'
PA1
OG

PA2

OF

PA3

OE

PA4

aD

PA5

OC

PA6

OB

PA7------I

PB7

PB6

Keyboard Clock
Keyboard Data
Reset
GND
+5 V

0
0 t - = i - - - -___-:-:-:::--+-....
0
0
0

PC LK --t-+-t

Keyboard Interface Block Diagram

Keyboard 4-5

Keyboard Diagrams
The IBM Personal Computer keyboard is available in six different
layouts:
•

U.S. English

•

U.K. English

•

French

•

German

•

Italian

•

Spanish

The following pages show all six keyboard layouts.

4-6 Keyboard

~

•
00
•
~

=
....

11.9..
--

----_________

.

.

5[EJIEJJ lEJiO if[]i[]i[]l[] i~ i[] l(]I[]i[]iEJi[;] jOBOiJ§QCJ~O

lEJrEJJ

'O§U~lEJI[JIEJr[]l'[]lEJIEJrEJI[JI[]lill]r ~ 71~1[]1~IEJJ

r.Il

~
~

',EJrD tCElDJ[~j[]rEJr[]l'EJ1EJrf]lEJrEJILJ1[]IO~[]I[)l[]'"~ 8'...
6[01EJJ lu@]IDT~r[)rEJrtJr~1~lEJ1[]I[]y[JJO~Dlul[JI[Jl[Q
~
0
r l::: 0
l F9 lLJJ
:
--

-----------------

+

67EJ68

~

lfT:11~[

wuul~
57

c

2

fOlOiln-,
~ l~

Note: Nomenclature is on both the top and front face of key buttons
as shown. The number to the upper left designates the button
position.

g
a...
I

-...I

17 UO!paS

....

~

9

~

.&;..
I

oc
~
('>
'<

g

•
~

-- --.---.----'----.

•
~

a TEJTEJJ iEJ{OJ iGJi[]i[]l[JirJ i[] I(]I[]i[Jlui[J jOBOID§[jlD~~::~ 0 €.
6(EJrEJJ D[;][IEJ1EJI[]IEJI~l'rJIEJrDIEJl[]I[]lu[JU8 ~ 7'~I[]I~IEJJ ~
'[EriE] [EOEJl'EJrEJrEJ1'EJjEJrEJI[]rDILlr1!J1[] 1§l[]I[]Y[]'"~ ~
TEJIEJJ lu8UfDI[JIEJrEJrEJr[]rEJIEJlOrEJr[J](BuBI[JIIDIlQ ~ ~
'8fEIJ [JEl[]
"
lE ~:::rn~OfHJ
;
Note: Nomenclature is on both the top and front face of keybuttons
as shown. The number to the upper left designates the button
position.

...
:
~

~

a

=
~

5[oIDJ lEJi() i[]jDi[]i[]ilP fro l[Dlr8i[]iDiEJ JOGQO§[JIOSO
6(010) 'O[;]CiEJi[JI[]I~I[]l'[]rEJIDIEJI[]IPluGJUbt~l[]l~IEJJ

"rEJ1'EJJ

'08)tJl'[]r[]r[]rEJrEJIEJr[]r[]rr-'Ji[]l[8~[]I[]l[],e~

6[EJ1EJJ 100UI1DrEJJEJrD(EJrEJyEJI1JIDtrJrDJCEfuBIlbJI1DIg·
0
67EJ68
50EJ1J[
57
r~ L::''OOIolD(T"
l F9 IDJ
~ All u
il ~ lLeu
c

Note: Nomenclature is on both the top and front face of key buttons
as shown. The number to the upper left designates the button
position.

~

rD

~

~

=""'-=
I

17 UO!paS

=-

~

g

a
~

:;
e

~

~

....
o
I

e~

~

~
o

e;Q.
--

-------------

r
"a"

5[01EJJ iEJiITJ i~i[]i[]it]i[J fro IlJI[]i[]i[[]iD jOGOIO§OlO~~::: 0 ~
6(EJrEJJ 'O[;JaEJIEJI[)I[]I[]n~JIEJ1[JrEJI[]r~ l[JJb1~I[]I~IEJJ a

'rOlE]J [EI]EJrEJl~1!JrEJY[]1'EJr[]rOlEJ1~I[] ~[]I[]I~T~ ~
'[018J ilE]jrOfEJJUfnfEJitJrEJ1EJIOrOYEJIDuBIrgr[Jw;i~ ~
57
r~ i801ol08rTT~
a
l 18 J 50~lj[
~ uu
l t:J l~
67EJ68
F9

C.p,

F10

Lock

Note: Nomenclature is on both the top and front face of keybuttons
as shown. The number to the upper left designates the button
position.

IBM Personal Computer XT Keyboard
and IBM Portable Personal Computer
Keyboard

Description
The Personal Computer XT keyboard has a permanently attached
cable that connects to a DIN connector at the rear of the system
unit. This shielded 5-wire cable has power (+5 Vdc), ground, and
two bidirectional signal lines. The cable is approximately 182.88
cm (6 ft) long and is coiled, like that of a telephone handset.
The IBM Portable Personal Computer keyboard cable is
detachable, 4-wire, shielded cable that connects to a modular
connector in the front panel of the system unit. The cable has
power, (+5 Vdc), ground, and two bidirectional signal lines in it.
It is 762 mm (30 in.) long and is coiled.
Both keyboards use a capacitive technology with a
microprocessor (Intel 8048) performing the keyboard scan
function. The keyboard has two tilt positions for operator comfort
(5- or 15-degree tilt orientations for the Personal Computer XT
and 5- or 12-degree tilt orientations for the IBM Portable
Personal Computer).
Note: The following descriptions are common to both the
Personal Computer XT and IBM Portable Personal Computer.
The keyboard has 83 keys arranged in three major groupings. The
central portion of the keyboard is a standard typewriter keyboard
layout. On the left side are 10 function keys. These keys are
user-defined by the software. On the right is a 15-key keypad.
These keys are also defined by the software, but have legends for
the functions of numeric entry, cursor control, calculator pad, and
screen edit.
The keyboard interface is defined so that system software has
maximum flexibility in defining certain keyboard operations. This
is accomplished by having the keyboard return scan codes rather

Keyboard 4-3

than American Standard Code for Information Interchange
(ASCII) codes. In addition, all keys are typematic (if held down,
they will repeat) and generate both a make and a break scan code.
For example, key 1 produces scan code hex 01 on make and code
hex 81 on break. Break codes are formed by adding hex 80 to
make codes. The keyboard 110 driver can define keyboard keys
as shift keys or typematic, as required by the application.
The microprocessor (Intel 8048) in the keyboard performs several
functions, including a power-on self test when requested by the
system unit. This test checks the microprocessor's ROM, tests
memory, and checks for stuck keys. Additional functions are
keyboard scanning, buffering of up to 16 key scan codes,
maintaining bidirectional serial communications with the system
unit, and executing the handshake protocol required by each
scan-code transfer.
Several different keyboard arrangements are available. These are
illustrated on the following pages. For information about the
keyboard routines required to implement non-U.S. keyboards,
refer to the Guide to Operations and DOS manuals.

4-4 Keyboard

~

eo
....
~

--

=
~
~

-------------

5[EJIOJ
lEJ{[]10i[]i[]irDflO i[] i[]I[]lDiDltJjOGODEIIO~~::~ [; ...~
-- -----------------6(EJrEJJ

'OGJCIEJiEJI[]IEJI[]1'[]IEJl[]lrJI[]I(]lD28-=-71QI[]I~IEJJ

BBU~~~~~~O~~~~~-

"r8iElJ

~

('D

~

It

Lock

~L~

Note: Nomenclature is on both the top and front face of keybuttons
as shown. The number to the upper left designates the button
position.

~
o

a...

-

i

lu8iI~I[]ltJTEJIl'Jr~~tJiOrOrOJEJaElI~I1Di~
~ ~
57
r ca·'O,fUOilo,--uJUJ =

678680
l lLJJ 50EJO[
~
F9

~

I

17 UO!I:Jas

Del

....

-

00

I

~

N

~
'<

=-

[

§
.-.

-- ------------=TEJIEJJ iEJiGJJ[]i[] i[]1[]i(]1[0i(JI[]H[]iEJi~ jOGOD§JJ~ ~
III

- -

6(EJIEJJ

- - @ - _ . _ _. _ - - - - - - - - - - -

I]r;]UEJIEJI[]IEJI[JIrJIEJIDlrJl[JIPlU[JI~Ql[JI~IEJJ

~

a-

'tEJIEJJ '(El]eJr[)l'EJ1[Jl'EJlfJ1EJ1[]r[]T~DiD ~[]I~l[]'"~ ~
TEJIEJJ 1U8rIDrEJYrJrEJrEJr[JrEJIEJIOrEJrOJ(EJuBI1hJIlDIlQ . ~.
0
67EJ6
50EJ'j[
57
r~ C,p'OOfOlOiTT,
S·
l lCJJ
~
u
il t:J l~
~.
9
F9

All

look

Note: Nomenclature is on both the top and front face of keybuttons
as shown. The number to the upper left designates the button
position.

Connector Specifications
Rear Panel

5-Pin DI N Connector

TTL Signal

Pin

Signal Level

1

+ Keyboard Clock

+ 5 Vdc

2

+ Keyboard Data

+ 5 Vdc

3

- Keyboard Reset (Not used by
keyboard)
Power Supply Voltages

4

Ground

5

+ 5 Volts

Voltage

0

+ 5 Vdc

Keyboard Interface Connector Specifications

Keyboard 4-13

Connector

Keyboard Cable Connections
DIN
Connector

Modular
Connector

'0.'

•••
•••

4

0

00 5
2

Pin Side
Clock

Keyboard
Connector

1 3 5

246

Wire Side

Wire Side

4

6

Data

2

5

5

Ground

4

3

4

+5 Volts

5

2

2

Modular connector pins 1 and 6 are connected to the ground wire going to the chassis.
The ground wire at the keyboard connector is attached to the ground screw on the
keyboard logic board.

4-14 Keyboard

Keyboard Logic Diagram
~~

j1

~~

~<..>
~r

=;

tl

'"

~

1<

...

'0
...-;

I
~

Q)
~

=
~ ~
~

"

ill

~
iii
'T

e

.

"'C
III

o
.a
>
Q)

::.:::

::E

!!!
Ii:!

=

1l~1'

~ d c 11
~~el"'l ~I;:L

~

I

'-""'----+-----(-11.

J(eyboard 4-15

4-16 Keyboard

SECTION 5. SYSTEM BIOS

Contents
System BIOS Usage ............................... 5-3
Vectors with Special Meanings ................. 5-5
Keyboard Encoding and Usage .......................
Encoding .................................
Extended Codes ..............................
Shift States ................................
Special Handling ...........................
Extended Functions .........................
Keyboard Usage ...........................

5-12
5-12
5-16
5-16
5-18
5-19
5-20

System BIOS Listing .............................. 5-23
Quick Reference .............................. 5-23

System BIOS 5-1

5-2 System BIOS

System BIOS Usage
The basic input/ output system (BIOS) resides in ROM on the
system board and provides device level control for the major I/O
devices in the system. Additional ROM modules may be located
on option adapters to provide device level control for that option
adapter. BIOS routines enable the assembler language
programmer to perform block (disk and diskette) or
character-level I/O operations without concern for device address
and operating characteristics. System services, such as
time-of-day and memory size determination, are provided by the
BIOS.
The goal is to provide an operational interface to the system and
relieve the programmer of the concern about the characteristics of
hardware devices. The BIOS interface insulates the user from the
hardware, thus allowing new devices to be added to the system,
yet retaining the BIOS level interface to the device. In this
manner, user programs become transparent to hardware
modifications and enhancements.
The IBM Personal Computer MA CR 0 Assembler manual and the
IBM Personal Computer Disk Operating System (DOS) manual
provide useful programming information related to this section.
A complete listing of the BIOS is given in this section.
Access to the BIOS is through the 8088 software interrupts.
Each BIOS entry point is available through its own interrupt.
The software interrupts, hex lO through hex lA, each access a
different BIOS routine. For example, to determine the amount of
memory available in the system,

INT 12H
invokes the BIOS routine for determining memory size and
returns the value to the caller.

System BIOS 5-3

Parameter Passing
All parameters passed to and from the BIOS routines go through
the 8088 registers. The prologue of each BIOS function indicates
the registers used on the call and the return. For the memory size
example, no parameters are passed. The memory size, in lK-byte
increments, is returned in the AX register.
If a BIOS function has several possible operations, the AH

register is used at input to indicate the desired operation. For
example, to set the time of day, the following code is required:
MOV AH,l

;function is to set time of day.

MOV CX,HIGH_COUNT ;establish the current time.
MOV DX,LOW_COUNT
INT lAH

;set the time.

To read the time of day:
MOV AH,O

;function is to read time of day.

INT lAH

;read the timer.

Generally, the BIOS routines save all registers except for AX and
the flags. Other registers are modified on return only if they are
returning a value to the caller. The exact register usage is in the
prologue of each BIOS function.

5-4 System BIOS

Interrupt Hex 1E - Diskette Parameters
This vector points to a data region containing the parameters
required for the diskette drive. The power-on routines initialize
the vector to point to the parameters contained in the ROM
diskette routine. These default parameters represent the specified
values for any IBM drives attached to the system. Changing this
parameter block may be necessary to reflect the specifications of
the other drives attached.

Interrupt Hex 1 F - Graphics Character Extensions
When operating in the graphics modes of the IBM
Color/Graphics Monitor Adapter (320 by 200 or 640 by 200),
the read/write character interface forms the character from the
ASCII code point, using a set of dot patterns. The dot patterns
for the first 128 code points are contained in ROM. To access
the second 128 code points, this vector must be established to
point at a table of up to 1K bytes, where each code point is
represented by eight bytes of graphic information. At power-on,
this vector is initialized to 000:0, and it is the responsibility of the
user to change this vector if additional code points are required.

Interrupt Hex 40 - Reserved
When an IBM Fixed Disk Adapter is installed, the BIOS routines
use interrupt hex 30 to revector the diskette pointer.

Interrupt Hex 41 - Fixed Disk Parameters
This vector points to a data region containing the parameters
required for the fixed disk drive. The power-on routines initialize
the vector to point to the parameters contained in the ROM disk
routine. These default parameters represent the specified values
for any IBM fixed disk drives attached to the system. Changing
this parameter block may be necessary to reflect the specifications
of the other fixed disk drives attached.

System BIOS 5-7

Other Read/Write Memory Usage
The IBM BIOS routines use 256 bytes of memory from absolute
hex 400 to hex 4FF. Locations hex 400 to 407 contain the base
addresses of any RS-232C cards attached to the system.
Locations hex 408 to 40F contain the base addresses of the
Printer Adapter.
Memory locations hex 300 to 3FF are used as a stack area during
the power-on initialization, and bootstrap when control is passed
to it from power-on. If the user desires the stack in a different
area, the area must be set by the application.
Address
(Hex)

Interrupt
(Hex)

80-83
84-87
88-8B
8C-8F
90-93
94-97
98-9B
9C-9F
AO-FF
100-17F
180-19F
1AO-1 FF
200-217
218-3C3

20
21
22
23
24
25
26
27
28-3F
40-5F
60-67
68-7F
80-85
86-FO

3C4-3FF

F 1-FF

Function
DOS Program Terminate
DOS Function Call
DOS Terminate Address
DOS Ctrl Break Exit Address
DOS Fatal Error Vector
DOS Absolute Disk Read
DOS Absolute Disk Write
DOS Terminate, Fix In Storage
Reserved for DOS
Reserved
Reserved for User Software Interrupts
Not Used
Reserved by BASIC
Used by BASIC Interpreter while BASIC is
running
Not Used

BASIC and DOS Reserved Interrupts

5-8 System BIOS

Address
(Hex)

Interrupt
Number

0-3
4-7
8-B
C-F
10-13
14-17
18-1B
1 D-1 F
20-23
24-27
28-2B
2C-2F
30-33
34-37
38-3B
3C-3F
40-43
44-47
48-4B

0
1
2
3
4
5
6
7
8

4C-4F
50-53
54-57
58-5B
5C-5F
60-63
64-67
68-6B
6C-6F
70-73
74-77
78-7B
7C-7F
100-103

13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
40

104-107
168-16B
16C-16F
180-19F

41
5A
5B
60-67

9
A
B
C
D
E
F
10
11
12

Name
Divide by Zero
Single Step
Nonmaskable
Breakpoint
Overflow
Print Screen
Reserved
Reserved
Time of Day
Keyboard
Reserved
Communications
Communications
Disk
Diskette
Printer
Video
Equipment Check
Memory
Diskette/Disk
Communications
Cassette
Keyboard
Printer
Resident BASIC
Bootstrap
Time of Day
Keyboard Break
Timer Tick
Video Initialization
Diskette Parameters
Video Graphics Characters
Diskette pointer save
area for Fixed Disk
Fixed Disk Parameters
Cluster
Used by Cluster Program
Reserved for User Programs

BIOS Entry
D11
D11
NMI INT
D11
D11
PRINT SCREEN
D11
D11
TIMER INT
KB INT
D11
D11
D11
D11
DISK INT
D11
VIDEO 10
EQUIPMENT
MEMORY SIZE
DETERMINE
DISKETTE 10
RS232 10
CASSETTE 10
KEYBOARD 10
PRINTER
F600:0000
BOOT STRAP
TIME -OF DAY
DUMMY RETURN
DUMMY RETURN
VIDEO PARMS
DISK- BASE
0

fa

FD TBL
DOOO:XXXX

8088 Software Interrupt Listing

System BIOS 5-5

Vectors with Special Meanings

Interrupt Hex 1 B - Keyboard Break Address

This vector points to the code to be used when the Ctrl and Break
keys are pressed on the keyboard. The vector is invoked while
responding to the keyboard interrupt, and control should be
returned through an IRET instruction. The power-on routines
initialize this vector to an IRET instruction, so that nothing will
occur when the Ctrl and Break keys are pressed unless the
application program sets a different value.
Control may be retained by this routine, with the following
problems. The Break may have occurred during interrupt
processing, so that one or more End of Interrupt commands must
be sent to the 8259 Controller. Also, all I/O devices should be
reset in case an operation was underway at that time.
Interrupt Hex 1 C - Timer Tick

This vector points to the code to be executed on every
system-clock tick. This vector is invoked while responding to the
timer interrupt, and control should be returned through an IRET
instruction. The power-on routines initialize this vector to point
to an IRET instruction, so that nothing will occur unless the
application modifies the pointer. It is the responsibility of the
application to save and restore all registers that will be modified.
Interrupt Hex 1 D - Video Parameters

This vector points to a data region containing the parameters
required for the initialization of the 6845 on the video card. Note
that there are four separate tables, and all four must be
reproduced if all modes of operation are to be supported. The
power-on routines initialize this vector to point to the parameters
contained in the ROM video routines.

5-6 System BIOS

Address
(Hex)
400-48F
490-4EF
4FO-4FF

Mode
ROM BIOS

500-5FF
500

DOS

504
510-511
512-515
516-519

DOS
BASIC
BASIC
BASIC

51A-51D

BASIC

Function
See BIOS Listing
Reserved
Reserved as Intra-Application
Communication Area for any application
Reserved for DOS and BASIC
Print Screen Status Flag Store
O-Print Screen Operation Not Active or Successful
Print Screen Operation
1-Print Screen In Progress
255-Error Encountered during Print Screen
Operation
Single Drive Mode Status Byte
BASIC's Segment Address Store
Clock Interrupt Vector Segment: Offset Store
Break Key Interrupt Vector Segment: Offset
Store
Disk Error Interrupt Vector Segment: Offset
Store

Reserved Memory Locations

System BIOS 5-9

If you do DEF SEG (Default workspace segment):
Offset
(Hex Value)
Line number of current line being executed
Line number of last error
Offset into segment of start of program text
Offset into segment of start of variables
(end of program text 1-1)
Keyboard buffer contents
if O-no characters in buffer
if 1-characters in buffer
Character color in graphics mode
Set to 1, 2, or 3 to get text in colors 1 to 3.
Do not set to O.
(Default = 3)
Example
PEEK (&H2E) + 256*PEEK (&H2F)

100 Print

)
100

L

I

Hex 64

H

I

BASIC Workspace Variables

5-10 System BIOS

Hex 00

I

Length

2E
347
30
358

2
2
2
2

6A

1

4E

1

Starting Address in Hex

00000

BIOS
Interrupt
Vectors

00080

Available
Interrupt
Vectors

00400

BIOS
Data
Area

00500

User
Read/Write
Memory

C8000

Disk
Adapter

FOOOO

Read
Only
Memory

FEOOO

BIOS
Program
Area

BIOS Memory Map

BIOS Programming Hints
The BIOS code is invoked through software interrupts. The
programmer should not "hard code" BIOS addresses into
application programs. The internal workings and absolute
addresses within BIOS are subject to change without notice.
If an error is reported by the disk or diskette code, you should

reset the drive adapter and retry the operation. A specified
number of retries should be required on diskette reads to ensure
the problem is not due to motor start-up.
When altering I/O-port bit values, the programmer should change
only those bits that are necessary to the current task. Upon
completion, the programmer should restore the original
environment. Failure to adhere to this practice may be
incompatible with present and future applications.

System BIOS 5-11

Adapter Cards with System-Accessible ROM Modules
The ROM BIOS provides a facility to integrate adapter cards with
on-board ROM code into the system. During the POST, interrupt
vectors are established for the BIOS calls. After the default
vectors are in place, a scan for additional ROM modules takes
place. At this point, a ROM routine on the adapter card may gain
control. The routine may establish or intercept interrupt vectors
to hook themselves into the system.
The absolute addresses hex C8000 through hex F4000 are
scanned in 2K blocks in search of a valid adapter card ROM. A
valid ROM is defined as follows:
Byte 0:
Byte 1:
Byte 2:

Hex 55
HexAA
A length indicator representing the number of
512-byte blocks in the ROM (length/512). A
checksum is also done to test the integrity of the
ROM module. Each byte in the defined ROM is
summed modulo hex 100. This sum must be 0 for the
module to be deemed valid.

When the POST identifies a valid ROM, it does ~ far call ~te
3 of the RaMiwhich should be executable code). The adapter
card may now perform its power-on initialization tasks. The
feature ROM should return control to the BIOS routines by
executing a far return.

Keyboard Encoding and Usage
Encoding
The keyboard routine provided by IBM in the ROM BIOS is
responsible for converting the keyboard scan codes into what will
be termed "Extended ASCII."

5-12 System BIOS

'

Extended ASCII encompasses one-byte character codes with
possible values of 0 to 255, an extended code for certain extended
keyboard functions, and functions handled within the keyboard
routine or through interrupts.

Character Codes
The following character codes are passed through the BIOS
keyboard routine to the system or application program. A' -1 '
means the combination is suppressed in the keyboard routine.
The codes are returned in AL.
Key
Number
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Base Case

UpperCase

Esc
1
2
3
4
5
6
7
8
9
0

Esc
!

Ctrl

Alt

Esc
- 1
@
Nul (000) Note 1
-1
#
$
-1
-1
%
"
RS(030)
-1
&
-1
*
(
- 1
)
-1
US(031)
- 1
+
=
Backspace (008) Backspace (008)
Del (127)
-1(009)
i-(Note 1)
- 1
Q
DC1 (017)
q
ETB (023)
w
W

- 1
Note 1
Note 1
Note 1
Note 1
Note 1
Note 1
Note 1
Note 1
Note 1
Note 1
Note 1
Note 1
-1
-1
Note 1
Note 1

Character Codes (Part 1 of 3)

System BIOS 5-13

Key
Number
18
19
20
21
22
23
24
25
26
27
28
29 Ctrl
30
31
32
33
34
35
36
37
38
39
40
41
42 Shift
43
44
45
46
47
48
49
50
51
52
53
54 Shift
55
56Alt
57
58 Caps Lock
59
60
61
62
63
64

Base Case

Upper Case

Ctrl

e
r
t
y
u
i

E
R
T
Y
U
I

0

0

p

P

[

{

ENG (005)
DC2(018)
DC4 (020)
EM (025)
NAK (021)
HT (009)
SI (015)
DLE (016)
Esc (027)
GS (029)
LF (010)
-1
SOH (001)
DC3 (019)
EOT (004)
ACK (006)
BEL (007)
BS (008)
LF (010)
VT(011)
FF (012)
- 1
- 1
- 1
- 1
FS (028)
SUB (026)
CAN (024)
ETX (003)
SYN (022)
STX (002)
SO (014)
CR (013)
- 1
- 1
- 1
- 1
(Note 1)
- 1
SP
- 1
Nul (Note 1)
Nul (Note 1)
Nul (Note 1)
Nul (Note 1)
Nul (Note 1)
Nul (Note 1)

1

}

CR
-1
a
s
d
f

CR
- 1
A
S
D
F
G
H

9
h
j
k
I

J
K
L
:
"

-

- 1

- 1

I

\

I

Z

z
x
c
v
b
n

X
C
V
B
N
M

m

<
>
/

?

- 1

- 1
(Note 2)
- 1
SP
- 1
Nul (Note 1)
Nul (Note 1)
Nul (Note 1)
Nul (Note 1)
Nul (Note 1)
Nul (Note 1)

*

Nul
Nul
Nul
Nul
Nul
Nul

- 1
SP
- 1
(Note
(Note
(Note
(Note
(Note
(Note

1)
1)
1)
1)
1)
1)

Character Codes (Part 2 of 3)

5-14 System BIOS

Alt
Note 1
Note 1
Note 1
Note 1
Note 1
Note 1
Note 1
Note 1
- 1
- 1
-1
-1
Note 1
Note 1
Note 1
Note 1
Note 1
Note 1
Note 1
Note 1
Note 1
- 1
- 1
-1
- 1
- 1
Note 1
Note 1
Note 1
Note 1
Note 1
Note 1
Note 1
- 1
- 1
-1
- 1
- 1
- 1
SP
- 1
Nul (Note
Nul (Note
Nul (Note
Nul (Note
Nul (Note
Nul (Note

1)
1)
1)
1)
1)
1)

Key
Number

Base Case
Nul
Nul
Nul
Nul

65
66
67
68
69 Num Lock
70 Scroll Lock
Notes:

(Note
(Note
(Note
(Note
-1
- 1

11
11
11
11

UpperCase
Nul
Nul
Nul
Nul

(Note
(Note
(Note
(Note
- 1
- 1

11
11
11
11

Ctrl

Alt

Nul (Note 11
Nul (Note 11
Nul (Note 11
Nul (Note 11
Pause (Note 2)
Break (Note 2)

Nul
Nul
Nul
Nul

(Note
(Note
(Note
(Note
- 1
- 1

11
11
11
11

1. Refer to "Extended Codes" in this section.
2. Refer to "Special Handling" in this section.

Character Codes (Part 3 of 3)

Keys 71 through 83 have meaning only in base case, in Num Lock
(or shifted) states, or in Ctrl state. Note that the Shift key
temporarily reverses the current Num Lock state.

Key

Num

Number

Lock

71

7

72

8

73

9

74

-

75

4

Base Case
Home (Note 1 )

t

Ctrl

Alt

- 1

Clear Screen

(Note 1)

- 1

- 1

Page Up (Note 1)

-1

Top of Text and Home

--- --- -- --------- -------

-(Note 1)

- 1

-1

- 1

- 1

Reverse Word (Note 1)

- 1

- 1

- 1

Advance Word (Note 1 )

76

5

77

6

78

+

+

-1

- 1

79

1

End (Note 1)

- 1

Erase to EOL (Note 1)

80

2

81

3

Page Down (Note 1 )

82

0

Ins

83

-(Note 1)

,

(Note 1)

Del (Notes 1,2)

- 1

- 1

- 1

Erase to EOS (Note 1)

- 1
Note 2

-1
Note 2

Notes: 1. Refer to "Extended Codes" in this section.

2. Refer to "Special Handling" in this section.

System BIOS 5-15

Extended Codes
Extended Functions
For certain functions that cannot be represented in the standard
ASCII code, an extended code is used. A character code of 000
(Nul) is returned in AL. This indicates that the system or
application program should examine a second code that will
indicate the actual function. Usually, but not always, this second
code is the scan code of the primary key that was pressed. This
code is returned in AH.
Second Code
3
15
16-25
30-38
44-50
59-68
71

72
73
75
77
79
80
81
82
83
84-93
94-103
104-113
114
115
116
117
118
119
120-131
132

-

Function

Nul Character
Alt Q, W, E, R, T, Y, U, I, 0, P
Alt A, S, D, F, G, H, J, K, l
AltZ, X, C, V, B, N, M
F 1 to F 10 Function Keys Base Case
Home

t

Page Up and Home Cursor

-

~

End

~

Page Down and Home Cursor
Ins (Insert)
Del (Delete)
F11 to F20 (Uppercase F1 to F1 0)
F21 to F30 (Ctrl F1 to F1 0)
F31 to F40 (AltF 1to F 10)
Ctrl PrtSc (Start/Stop Echo to Printer)
Ctrl-(Reverse Word)
Ctrl __ (Advance Word)
Ctrl End [Erase to End of Line (EOl)]
Ctrl PgDn [Erase to End of Screen (EOS)]
Ctrl Home (Clear Screen and Home)
Alt 1,2,3,4,5,6,7,8,9,0, -, = (Keys 2-13)
Ctrl PgUp (Top 25 lines of Text and Home Cursor)

Keyboard Extended Functions

5-16 System BIOS

Shift States
Most shift states are handled within the keyboard routine,
transparent to the system or application program. In any case,
the current set of active shift states is available by calling an entry
point in the ROM keyboard routine. The key numbers are shown
on the keyboard diagram in Section 4. The following keys result
in altered shift states:

Shift
This key temporarily shifts keys 2-13,15-27,30-41,43-53,55,
59-68 to uppercase (base case if in Caps Lock state). Also, the
Shift key temporarily reverses the Num Lock or non-Num-Lock
state of keys 71-73, 75, 77, and 79-83.

Ctrl
This key temporarily shifts keys 3, 7,12,14,16-28,30-38,
43-50,55,59-71,73,75,77,79, and 81 to the Ctrl state. Also,
the Ctrl key is used with the Alt and Del keys to cause the system
reset function, with the Scroll Lock key to cause the break
function, and with the Num Lock key to cause the pause function.
The system reset, break, and pause functions are described in
"Special Handling" on the following pages.

Ait
This key temporarily shifts keys 2-13, 16-25,30-38,44-50, and
59-68 to the Alt state. Also, the Alt key is used with the Ctrl and
Del keys to cause the "system reset" function described in
"Special Handling" on the following pages.
The Alt key has another use. This key allows the user to enter
any ASCII character code from 0 to 255 into the system from the
keyboard. The user holds down the Alt key and types the decimal
value of the characters desired using the numeric keypad (keys
71-73,75-77, and 79-82). The Alt key is then released. If more
than three digits are typed, a modulo-256 result is created. These

System BIOS 5-17

three digits are interpreted as a character code and are
transmitted through the keyboard routine to the system or
application program. Alt is handled within the keyboard routine.

Caps Lock
This key shifts keys 16-25, 30-38, and 44-50 to uppercase.
Pressing the Caps Lock key a second time reverses the action.
Caps Lock is handled within the keyboard routine.

Scroll Lock
This key is interpreted by appropriate application programs as
indicating that use of the cursor-control keys should cause
windowing over the text rather than cursor movement. Pressing
the Scroll Lock key a second time reverses the action. The
keyboard routine simply records the current shift state of the
Scroll Lock key. It is the responsibility of the system or
application program to perform the function.

Shift Key Priorities and Combinations
If combinations of the Alt, Ctrl, and Shift keys are pressed and

only one is valid, the precedence is as follows: the Alt key is first,
the Ctrl key is second, and the Shift key is third. The only valid
combination is Alt and Ctrl, which is used in the system reset
function.

Special Handling
System Reset
The combination of the Alt, Ctrl, and Del keys will result in the
keyboard routine initiating the equivalent of a system reset.
System reset is handled within the keyboard routine.

5-18 System BIOS

Break
The combination of the Ctrl and Break keys will result in the
keyboard routine signaling interrupt hex lA. Also the extended
characters (AL = hex 00, AH = hex 00) will be returned.
Pause
The combination of the Ctrl and Num Lock keys will cause the
keyboard interrupt routine to loop, waiting for any key except the
Num Lock key to be pressed. This provides a system- or
application-transparent method of temporarily suspending list,
print, and so on, and then resuming the operation. The
"unpause" key is thrown away. Pause is handled within the
keyboard routine.

Print Screen
The combination of the Shift and PrtSc (key 55) keys will result
in an interrupt invoking the print screen routine. This routine
works in the alphanumeric or graphics mode, with unrecognizable
characters printing as blanks.

Extended Functions
The keyboard routine does its own buffering. The keyboard
buffer is large enough that few typists will ever fill it. However, if
a key is pressed when the buffer is full, the key will be ignored
and the "bell" will sound.
Also, the keyboard routine suppresses the typematic action of the
following keys: Ctrl, Shift, Alt, Num Lock, Scroll Lock, Caps
Lock, and Ins.

System BIOS 5-19

Keyboard Usage
This section is intended to outline a set of guidelines of key usage
when performing commonly used functions.
Function

Key(s)

Comment

Home Cursor

Home

Editors; word processors

Return to outermost menu

Home

Menu driven applications

+

Move cursor up
Page up, scroll backward 25
lines and home
Move cursor left

PgUp
I-Key 75

Full screen editor, word processor
Editors; word processors
Text, command entry

Move cursor right

-..

Text, command entry

Scroll to end of text
Place cursbr at end of line

End

Editors; word processors

t

Move cursor down
Page down, scroll forward
25,li.nes and home

Pg Dn

Full screen editor, word processor
Editors'; word processors

Start/Stop insert text at cursor,
shift text right in buffer

Ins

Text, command entry

Delete character at cursor

Del

Text, command entry

_Key 14

T ext, command entry

Destructive backspace
Tab forward
Tab reverse
Clear screen and home

-..1
1Ctrl Home

t

SCroll up
Scroll down
Scroll left
Scroll right
Delete from cursor to EOL
Exit/Escape

...t

-

Ctrl End
Esc

Text entry
Text entry
Command entry
In scroll lock mode
In scroll lock mode
In scroll lock mode
In scroll lock mode
Text, command entry
Editor, 1 level of menu, and so on

Start/Stop Echo screen to
printer

Ctrl Prt Sc
(Key 55)

Anytime

Delete from cursor to EOS

Ctrl PgDn

Text, command entry

Advance word

Ctrl

Text entry

Reverse word

Ctrl

Window Right

Ctrl

Window Left

Ctrl

Enter insert mode

....

--~

Ins

Text entry
When text is too Wide to fit screen
When text is too wide to fit screen
Line editor

Keyboard - Commonly Used Functions (Part 1 of 2)

5-20 System BIOS

Function
Exit insert mode
Cancel current line

Key(s)
Ins
Esc

Comment
Line editor
Command entry, text entry

Suspend system (pausel

Ctrl
Num Lock

Stop list, stop program, and so on
Resumes on any key

Break interrupt

Ctrl Break

Interrupt current process

System reset
Top of document and home
cursor
Standard function keys
Secondary function keys

Alt Ctrl
Del
Ctrl PgUp
F1-F10
Shift F1-F10
Ctrl F1-F10
Alt F1-F10

Extra function keys

Alt Keys
2-13
(1-9,0,-, =)

Extra function keys

Alt A-Z

Reboot
Editors, word processors
Primary function keys
Extra function keys if 10 are not
sufficient
Used when templates are put
along top of keyboard
Used when function starts with
same letter as one of the alpha
,
keys

Keyboard - Commonly Used Functions (Part 2 of 2)

System BIOS 5-21

Key

Function
Carriage return
Line feed
Bell
Home
Cursor up
Cursor down
Cursor left
Cursor right
Advance one word
Reverse one word
Insert
Delete
Clear screen
Freeze output
Tab advance
Stop execution (break)
Delete current line
Delete to end of line
Position cursor to end of line

-I
Ctrl....J
Ctrl G
Home

,

t

--

Ctrl_
CtrlIns
Del
Ctrl Home
Ctrl Num Lock

~
Ctrl Break
Esc
Ctrl End
End

BASIC Screen Editor Special Functions

Function
Suspend
Echo to printer
Stop echo to printer
Exit current function (break)
Backspace
Line feed
Cancel line
Copy character
Copy until match
Copy remaining
Skip character
Skip until match
Enter insert mode
Exit insert mode
Make new line the template
String separator in REPLACE
End of file in keyboard input

DOS Special Functions

5-22 System BIOS

Key
Ctrl Num Lock
Ctrl PrtSc
(Key 55 any case)
Ctrl PrtSc
(Key 55 any case)
Ctrl
Break
-Key 14
Ctrl.-J
Esc
F10rF2
F3
Del
F4
Ins
Ins
F5
F6
F6

System BIOS Listing

Quick Reference
Page

Line
Number

5-24
5-24
5-24
5-24
5-27
5-42

12
335
67
76
239
1408

5-43
5-46
5-56
5-66
5-68

1461
1706
2303
3078
3203

5-93
5-93
5-99
5-101
5-103

5052
5083
5496
5630
5821

System ROM BIOS
Equates
8088 Interrupt Locations
Stack
Data Areas
Power-On Self-Test
Boot Strap Loader
I/O Support
Asynchronous Communications
(RS-232C)
Keyboard
Diskette
Printer
Display
System Configuration Analysis
Memory Size Determination
Equipment Determination
Graphics Character Generator
Time of Day
Print Screen

System BIOS 5-23

LOC OBJ

LINE

SOURCE
$TITlE(BIOS fOR THE IBM PERsmlAL COMPUTER XTl

1- - - - - -- ---------------- - -- --- -- -- --- ------ ---- - -------------- ---

THE

BIOS ROUTINES ARE MEANT TO BE ACCESSED THROUGH

SOFTWARE INTERRUPTS ONLY.

THE LISTINGS
NOT FOR
ABSOLUTE

ARE INCLUDED

REFEREtICE.
ADDRESSES

ANY ADDRESSES PRESENT IN

ONLY FOR

COMPLETENESS,

APPLICATIONS WHICH
WITHIN

THE

REFERENCE

CODE

SEGMENT

VIOLATE THE STRUCTURE AND DESIGN OF 6IOS.

10

; - - - - - - ---------------- -- - ---- - --------- --- ----------- ------ - - ---

11
12

; - -- - - - -- - --- ------- - - - --- - ---------- - ---

13

EQUATES

14

i ----------- -- - - - -- - - ---------- - - - - ------

0060

15

PORT_A

EOU

0061

16

PORT_B

0062

17

PORT_C

EOU
EOU

0063

18

CHD_PORT

19

INTAOO

EOU
EOU

002:1

20

INTAO!

EOU

0020

21

Ear

0040

"23

TIMER

EOU
EOU

24

TIMERO

25
26
27

THINT

0020

0043
0040
0001
0008

EOU
EOU
EOU

TIM_eTL

0540

28

MAX_PERIOD

EOU
EOU
EQU

0410

29

MIN_PERIOD

EOU

0060
0002

KBD_IN

31

KBDINT

"n

KB_DATA

EOU
EOU
EOU

KB_CTL

EOU

0000

0060

0061

30

DMA08

DMA

60H
6lH
62H
63H
20H
21H
20H
40H
43H
40H

i

8255 PORT A AD DR

i

8255 PORT B AD DR

; 8255 PORT C AOOR

; 8259 PORT
; 8259 PORT

; 8253 TIMER CONTROL PORT ADDR
; 8253 TIMER/CNTER 0 PORT AOOR

01

; TIMER 0 INTR RECVD MASK

08

I DMA STATUS REG PORT AODR

00

; OMA CH. 0 ADDR. REG PORT AODR

540H
410H

60H

; KEYBOARD DATA IN ADaR PORT

02

; KEYBOARD INTR MASK

60H
6lH

i

KEYBOARD SCAN CODE PORT

; CONTROL BITS FOR KEYBOARD SENSE DATA

34
35

i ----- - - - - - - - - - - - - - --- ----- -- - - - - - -------

36

8088 INTERRUPT LOCATIONS

37

; ------- - -- - - - - - ----- - -- - - - ------- - - - - - --

38
39

ABSO

0000

40

STG_lOCO

0008

41

0008

42

0014

43

0014

44
45

002:0
0020

SEGMENT AT 0
LABEL

ORG
ORG
ORG

~ORO

5*4
LABEL

INTS_PlR

BYTE

2*4
LABEL

NMI_PTR

~ORO

8*'

46

INT_AnOR

LABEL

WORD

INT_PTR

LABEL

D~ORD

0040

47
48

00 1,0

49

VIDEO_INT

0074

50

0074

51
52

PARM_PTR

BASIC]TR

0078

53
54

0078

55

OISKJOINTE"

D01C

56

0020

0060

0060

ORG

IDH*4

DRG

18H*4

LABEL

DRG
ORG

007C

57

58

0400
0400

59
60

0500

61

0500

62
63

MFG_TEST_RTN

'"

BOOT_LOCN

EXT._PTR LABEL

ORG
DATA_AREA
DATA_WORO

ORG
ORG

65

ABSO

LABEL

ORG

0400

7eoo
7eoo

10H*4

LABEL

WORD

DWORD

POINTER TO VIDEO PARMS

WORD

ENTRY POINT FOR CASSETTE BASIC
INTERRUPT lEH

01EH*4
LABEL

DWORD

01FH*4

LOCATION OF POINTER

DWORD

POINTER TO EXTENSION

400H
LABEL

BYTE

LABEL

WORD

;

ABSOLUTE LOCATION

0500H
LABEL

FAR

7COOH
LABel

FAR

ENDS

66

67

; ----------------------- ________________________ _

68

; STACK -- USED DURING INITIALIZATION ONLY

69

; -- ------------ --------- ________________________ _

70
71

0000 (128

72

0100

73
74

STACK

SEGtlENT AT 30H

ow

128 DUP(?)

TOS

LABEL

WORD

STACK

ENOS

75
76
77

5-24 System BIOS

; --------- ----------- - ---- -- ------------ROM BIOS DATA AREAS

OF DATA SEGMENT

LaC OBJ

LINE
78

SOURCE
• -------- -- - - - ------ - - -- - - --------- --- - --

79
80

DATA

SEGMENT AT 40H

0000 (4

81

0008 (4

82

0010 ..• ,

83

EQUIP_FLAG

OW

0012 ••

84
85

MFG_TST

DB

; INITIALIZATION FLAG

MEMORY_SIZE

OW

j

HEMORY SIZE IN K BYTES

??

86

MFG_ERRJlAG

DB

j

SCRATCH PAD FOR MANUFACTURING

0016 ..

87

08

i

ERROR CODES

0013 ••••
0015

DW

4 OUPI?)

; ADDRESSES OF RS232 ADAPTERS

4 OUP!?J

j

ADDRESSES Of PRINTERS

; INSTALLED HARDWARE

88

89

; - - - - --- - - - - - ------------------ ---- - - - ---

90

91

KEYBOARO OATA AREAS
i ----------------------------------------

n
0017 ??

93

08

KBJLAG

94
95

j----- SHIFT FLAG EQUATES WITHIN KBJLAG

0080

96
97

INS_STATE

EQU

8DH

0040

98

CAPS_STATE

EQU

40H

; CAPS LOCK STATE HAS BEEN TOGGLED

0020

99

NUM_STATE

EQU

20H

; NUM LOCK STATE HAS BEEN TOGGLED

0010

100

SCROll_STATE

EQU

IDH

; SCROll LOCK STATE HAS BEEN TOGGLEO

0008

101

ALt_SHIFT

EQU

D8H

; ALTERNATE SHIFT KEY DEPRESSED

0004

102

CTL_SHIFT

EQU

D4H

; CONTROL SHIFT KEY DEPRESSED

0002

103

LEFT_SHIFT

EQU

104

RIGHT_SHIFT

EQU

DZH
DlH

; LEFT SHIFT KEY DEPRESSED

0001

; INSERT STATE IS ACTIVE

; RIGHT SHIFT KEY DEPRESSED

105
0018 ??

DB

106

; SECOND BYTE OF KEYBOARD STATUS

107
0080

108

INS_SHIFT

EQU

80H

l

0040

109

CAPS_SHIFT

EQU

4DH

; CAPS LOCK KEY IS DEPRESSED

0020

110
III
112
113
114
115
116
117

NUN_SHIFT

EQU

0010
0008
0019 ??

DOIA ••••
ODIC ????

ODIE (16

DOlE

0038

0010
003A
002A
0036
0052

0053

20H

; NUM LOCK KEY IS DEPRESSED

SCROLL_SHIFT

EQU

IDH

; SCROLL LOCK KEY IS DEPRESSED

HOLD_STATE

EQU

08H

; SUSPEND KEY HAS BEEN TOGGLED

ALT_INPUT

DB

BUFFER_HEAO

DW

BUFFER_TAIL

OW

KB_BUFFER

OW

; STORAGE FOR ALTERNAte KEYPAD ENTRY
; POINTER TO HEAD OF KEYBOARD BUFFER
; POINTER TO TAIL OF KEYBOARD BUFFER
16DUP(?)

; ROOM FOR 15 ENTRIES

118
119
120

0045
0046

INSERT KEY IS DEPRESSED

121
122
123
124
125
126
127
128
129
130

;------ HEAD

SCROLLJEY
ALT_KEY
CTl.....KEY

CAPS_KEY
LEFTJEY
RIGHT_KEY
INS_KEY

DEl_KEY

=

TAIL INDICATES THAT THE BUFFER IS EMPTY

EQU
EOU
EOU
EOU
EOU
EOU
EQU
EOU
EOU

69

; SCAN CODE fOR NUMBER LOCK

7D

I SCROLL LOCK KEY

56
29

; SCAN CODE FOR CONTROL KEY

58

; SCAN CODE FOR SHIFT LOCK

42

; SCAN CODE FOR LEFT SHIFT

54

; ALTERNATE SHIFT KEY SCAN COOE

; SCAN CODE FOR RIGHT SHIFT

82

; seAN CODE FOR INSERT KEY

83

; SCAN CODE FOR DELETE KEY

13l

003E •.

132
133

; ---------------------~----- - ------------

134

;

DISKETTE DATA AREAS

------- -------- ---------- --------------DB

135

; DRIVE RECALIBRATION STATUS

=

136

; BIT 3-0

137

; BEfORE NEXT SEEK IF BIT IS

DRIVE 3-0 NEEDS RECAL

= 0

138
0080
003F .•

139

INTJLAG

EOU

140

MOTDR_ STATUS

DB

oaOH

; BIT 3-0

142

0040 •.
0025

; INTERRUPT OCCURRENCE FLAG
; MOTOR STATUS

141

=

DRIVE 3-0 IS CURRENtlY

RUNNING

143
144
145
146

MOTOR_COUNT

DB

147

MOTOR_WAIT

EOU

; BIT 7

= CURRENT

OPERATION IS A WRITE.

REQUIRES DELAY
; TIME OUT COUNTER FOR DRIVE TURN Off
37

; 2 SEes OF COUNTS FOR MOTOR TURN OfF

148

System BIOS 5-25

LaC OBJ
0041 '??

LINE
149

SOURCE
DISKETTE_STATUS DB

; RETURN CODE STATUS BYTE

0080

150

TINE_OUT

EOU

80H

; ATTACHMENT FAILED TO RESPOND

0040

151
152

BAD_SEEK

EOU
EOU

40H
20H

; SEEK OPERATION fAILED

IS'
154
155

BAD_CRt

EOU

OMA_BOUNDARY

lOti
O9H

BAD_DNA

EOU
EOU

IS6

RECORD_NOT_FND

EOU

WRITE_PROTECT
BAO_ADOR_MARK

EOU
EOU

0001

157
158
159

BAD_OlD

0042 {7

161

NEC_STATUS

16'
163

; - - ----------- -- --------- ----------------

002:0

0010
0009
0008

0004
0003
0002:

BAD_NEC

'8H
04H

; NEt CONTROLLER HAS F AI lEO
; BAD CRt ON DISKETTE READ

; ATTEMPT TO DHA ACROSS 64K BOUNDARY

; DNA OVERRUN ON OPERATION
; REQUESTED SECTOR NOT fOUND

; WRITE ATTEMPTED ON WRITE PROT DISK
; AODRESS HARK NOT FOUND

EOU

"H
O2H
OlH

DB

70UP(?)

; STATUS BYTES FROM NEt

i BAD COMMAND PASSED TO OISKETTE

110

160

..

164

VIDEO DISPLAY DATA AREA

165

1-- - - - ---- -------- - - ------- --------------

0049 ??

166

CRT_MODE

DB

; CURRENT CRT NODE

004A ??

167
168

CRT_COLS

DW
DW

; NUNBER OF COLUMNS ON SCREEN

169
170

CRT_START

004C ?'?
004E

??

0050 (8

0060 ????

CRT_LEN
CURSOR_POSN

171

CllRSOR_t!ODE

0062 ??

172

ACTIVE_PAGE

0063 ????

173

AOOR_6845

006S ??

174

CRT_MODE_SET

175

CRT_PALETTE

0066 ?'?

'W
DW

;

LENGTH OF REGEN IN BYTES

; STARTING ADDRESS IN REGEN BUFFER

8 DUP(?)

; CURSOR FOR EACH OF UP TO 8 PAGES

; CURRENT CURSOR MODE SETTING

'W
DB
DW
DB
DB

; CURRENT PAGE BEING DISPLAYED
; BASE ADDRESS FOR ACTIVE DISPLAY CARD
; CURRENT SETTING OF THE 3XB REGISTER
; CURRENT PALETTE SETTING COLOR CARD

176
177

; ----------------------------------------

178

0067 ????
0069 ????
006B ??

POST DATA AREA

179

; ----------------------------------------

180

IO_RON_INIT

DW

PNTR TO OPTIONAL I/O ROM INIT ROUTINE

181

IO_RON_SEG

'W

POINTER TO 10 ROM SEGMENT

IB'

INTRJLAG

'B

FLAG TO INDICATE AN INTERRUPT HAPPEND

IB'
184

; ------- -- - ---- - ---------- - -- ------------

185

TINER DATA AREA

186

; ------- - - ---- -- ---------- ---------------

DObC ?'???

187

TINER LOW

DObE ????

IBB

TINE~_HIGH

0070

??

-

IB9

TINER_OfL

190

; COUNTS_SEC

191

; COUNTS_NIN

In

; COUNTS_HOUR

193

; COUNTS_DAY

DW
DW
DB
EOU
EOU
EOU
EOU

; LOW WORD OF TIMER COUNT
; HIGH WORD OF TIMER COUNT
; TIMER HAS ROLLED OVER SINCE LAST READ

IB
1092
65543
1573040 :; 1800BOti

194
195

; ----------------------------------------

196

SYSTEN DATA AREA

197

; ----------------------------------------

0071 ??

19B

BIOS_BREAK

0012 ????

199

RESET_FLAG

200

; -- - - ------ - - --------- --- - - -- --- - - -- - - ---

2:01
0074 ????
0076 ????

; WORD=1234H IF KEYBOARD RESET UNDERWAY

FIXED DISK DATA AREAS

'"

DW
DW

20'
204
205

I BIT 7=1 IF BREAK KEY HAS BEEN HIT

DB
DW

; ------- - - -- ---------------------- ---- - ------ ------ ----

206

PRINTER AND RS232 TIME-OUT VARIABLES

207

; -- ----- -- ------------- --- - - ----------- ----- ------- ----

0078 (4

208

4 DUP(? I

007C

'09

4 OUP{?)

(4

210

; ----------------------------------------

l11
212

0080 ????
0082 ????

ADDITIONAL KEYBOARD DATA AREA
- ---- ---- ----- -------------------- - -----

21'
214
215

BUFFER_START

OW

BUFFER_END

OW

216

; --------- ---- ----- ----------------------

217
218

EXTRA DATA AREA
1---------------------- - --- --------------

5-26 System BIOS

DATA

ENOS

LOC OBJ

0000 ??

LINE

SOURCE

219
220

STATUS_BYTE

221
2:22

XXDATA ENDS
; ------ - -- - - --- - ---- -- - - ______ - ___ - _ - ___ _

XXDATA

SEGMENT AT SOH

DB

223
2: 2:4

VIDEO DISPLAY BUFFER
• - --- - - - - -- - - --- - --- -- - -- - - ---- _________ _

225

VIDEO]AM

SEGMENT AT OBBOOH

0000

226

REGEN

LABEL

BYTE

0000

227

REGENW

LABEL

WORD

0000 (16384

228

DB

16384 DUP(? 1

229

2: 30

ENOS
i ------------- - -- - - - - - --- -- - - ------- - - __ _

231
2: 32

ROM RESIDENT CODE
; --- -- - -- -- - --- - _ - - __ - - __ - ______________ _

233

CODE

0000 (57344

234

Eeoo 31353031353132

236

SEGMENT AT OfOOOH
DB

57344 DUP!?)

DB

'1501512 COPR. IBN 1981'

;

f ILL lOWEST 56K

2"
i

COPYRIGHT ~lOTICE

20434F5052:2E20
4942402:0313938

3Z

237
238
239

I - --- --- -------- - -- ---- -- ------ - - - - -- - - -- - -_ - ___ _
INITIAL RELIABILITY TESTS -- PHASE 1

240
241

; --- - - - - - -------- - - -- ----- ---- - - __ - _ -- __ - _______ _

242

243

ASSUME

CS: CODE, SS: CODE. ES:ABSO ,OS :OATA

244
245

; -------------- ----_ --- _________________ _

246
247

OATA DEfINITIONS
; ------------------- ____________________ _

248
f016 07EO

249

el

DW

ell

; RETURN ADDRESS

E018 7EEI

2SD

e2

DW

e24

; RETURN ADDRESS FOR DUMMY STACK

EClA 2:04B42204F4B

251
252

nB

DB

, KB OK' ,13

j

KB FOR MEMORY SIZE

E020 00

253
254

; --- -- -- -- - -------- --- ------ - ------------------ --- -- - -----------------

255

LOAD A BLOCK Of TEST COOE THROUGH THE KEYBOARD PORT

256

fOR HANUfACTUING TEST.

257

THIS ROUTINE WILL LOAD A TEST (MAX LENGTH:::fAFfH l THROUGH

258

THE KEYBOARD PORT, CODE WILL BE lOAOED AT LOCATION

259

0000: 0500. AFTER LOADING, cmHROl WILL BE TRANSFERED

260

TO LOCATION 0000:0500. STACK WILL BE LOCATED JUST BELO~

261

THE TEST CODE. THIS ROUTINE ASSUMES THAT THE FRIST 2

262

BYTES TRANSfERED CONTAIN THE COUNT Of BYTES TO BE LOADED

263
264

(BYTE l=COUNT LOW, BYTE 2:::COUNT HI.)
; ----- --- ------ ---- ----- - - -- ---- --------- ---------------- ----- - - ------

265
266

;----- FIRST, GET THE COUNT

267
E021

268

E02:1 E8131A

269

CALL

SP _TEST

E024 8AFB

270

NDV

BH,BL

; SAVE IT

E026 ESOEIA

271

CALL

SP _TEST

; GET COUNT HI

E029 8AEB

272

NOV

CH,BL

E02B BACF

273

NOV

CL,BH

E02D Fe

274

eLD

fOZE FA

275
276

eLI
NOV

DI,0500H

; SET TARGET OFFSET (OS:::OOOO)

E032 BOFO

277

NDV

Al,OfDH

; UNMASK K/B INTERRUPT

E034 E621

278

DUT

INTAOl,AL

E036 BODA

279

E038 E620

280

OUT

INTACO ,AL

E03A BA6leo

281

NOV

DX.61H

E030 BBCC4C

282

NOV

BX ,4CCCH

E040 8402:

283

NOV

AH,02H

E02F BF0005

MFG_BOOT:

NOV

; GET COUNT LOW

; CX NOW HAS COUNT
; SET OIR, fLAG TO INCRIMENT

AL ,OAH

SEND READ INT. REQUEST REG. eND

SET UP PORT B ADDRESS
CONTROL BITS FOR PORT B
; K/B REQUEST PENDING MASK

TST:

E042

284

E042 BAe3

285

NOV

AL ,BL

E044 EE

286

OUT

DX,Al

; TOGGLE K/B CLOCK

System BIOS 5-27

LaC aBo

LINE

[045 BAC7

287

MOV

E047 EE

288

OUT

AL.8H
OX,AL

E048 4A

289

OEe

OX

; POINT OX AT AD OR • 60 (KB DATA)

E049

290
291
292
293
294
29.

:iN
AND
JZ

Al.INTAOO
AL,AH
TSTl

; LOOP TILL DATA PRESENT

IN

Al,OX

; GET DATA

E049 E420
E04B 22C4

E040 74fA
E04f I!C
E050 AA

E051 42

(052 ElEE
E054 EA00050000

SOURCE

TST1:
; GET IRR REG
; KB REQUEST PENDING?

; STORE IT

STOSB

29'
297
298

INC

ox

POINT OX BACK AT PORT B (61)

LOOP

1ST

LOOP TILL ALL BYTES READ

299

JMP

FAR JUMP TO CODE THAT WAS JUST

300

LOADED

301
302

;

------------------ ----------- ----------6088 PROCESSOR TEST

30'

304
30.
306
307

; DESCRIPTION
VERIFY 6088 FLAGS, REGISTERS
AND CONDITIONAL JUttps
CS: CODE, OS: NOTHING, ES: NOTHING> SS: NOTH ING

f058

OE05BH

E058

FAR

.e056 FA

; DISABLE INTERRUPTS

EOSC B4fJ.5
E05E

AH,OOSH

; SET SF, CF, ZF, AND AF FLAGS ON

n.

EOSY 7~'4C

f061 754A
E-063 7_648

'15

ERROl

; GO TO ERR ROUTINE IF CF NOT SET

JNZ

ERROl

; GO TO ERR ROUTINE IF ZF NOT SET

JNP

ERROl

; GO TO ERR ROUTINE IF PF NOT SET

JNS

ERROl

; GO TO ERR ROUTINE IF SF NOT SET

fObe elOS

31'
317
318
319

NOV

CL,S

; LOAD CNT REG WITH SHIFT CNT

E06A a.2EC

3~O

SHR

AU,CL

; SHIFT AF INTO CARRY BIT POS

EObC 7'31F

'21

JNC

ERRO 1

; GO TO ERR ROUTINE IF AF NOT SET

E'abE B040

'"

NOV

AL,40H

; SET THE OF F LAG ON

'"

SHL

AL,l

; SETUP FOR TESTING

JNO

ERROl

I GO TO ERR ROUTINE IF OF NOT SET

E€l74 32£4

324
32.

XOR

AH ,AH

; SET AH :: 0

E076 9E

326

SAHF

Eon 7634

327
328

JBE

ERHO I

1 GO TO ERR ROUTINE IF CF ON

E079 7832

329

JS

E076 7A30

33'
331

JP

'"

MOV

E065 7946
~Ob7

91'

EO,?O OOEO
E072

n~9

f070 9F
f07E 6105
E080 OZEC

EOS2. 7229
E084 OOE4
E086 7025

LAtiF

; LOAO F LAG IMAGE TO AH

j

j

; GO TO ERR ROUTINE IF SF ON

ERROl

; GO TO ERR ROUTINE IF Pf ON

LAHF

; LOAD FLAG IMAGE TO AH
CL,S

; LOAD CNT REG WITH SHIFT CNT

SHR

AH,Cl

; SHIFT

JC

ERROl

; GO TO ERR ROUTINE IF ON

'"

SHL

AH,I

; CHECK THAT

JO

ERROl

; GO TO ERR ROUTINE IF ON

33'
337
338

WITH ALL ONE'S AND ZEROES'S.

NOV

EOBS F9

'42

'"'
'44

I

OS,AX

; WRITE PATTERN TO ALL REGS

34.

HOV

eX,DS

,ex

ES

'4'
'47

MOV

CX,ES

MOV

SS,CX

'48
'49

MOV

OX,S5

E098 8BE2

MOV

SP,DX

E09A S8Ee

350

MOV

BP.SP

E09C 8BF5

351

MOV

SI,BP

E09E eaFE

'"

E094 8EDl

E096 8e02

SETUP ONE'S PATTERN IN AX

AX,OFFFFH

HOV

STe

C8:

MOV

E0'92 BCCl

OF' IS CLEAR

;----- READ/WRITE THE 6088 GENERAL AND SEGMENTATION REGISTERS

'4'
'41

E090 8fC3

AF' INTO CARRY BIT POS

33'
334

E088 B8FFFF

E08f Bene

GO TO ERR ROUTINE IF ZF ON

ERROl

339

foBC BEDe

CLEAR SF, CF, ZF, AND PF

MOV

01,51

35'
354

JNC

C9

fOA2 33C7

XOR

AX,D!

I PATTERN MAKE IT THRU ALL REGS

EOA4 7507

355

JNZ

ERROl

; NO - GO TO ERR ROUTINE

EOM Fe
fOA7 feD

35'
357
358
359

EOAO 7307

fOA9
fOA9 OBC7
EDAB 7401

EOAD F4

i

eLe
JMP

C8

OR

AX,DI

JZ

elO

; TSTlA

C9:

i

ERROl:

362

; --- - --- ------- --------------------------

5-28 System BIOS

HLT
ROS CHECKSUM TEST I

ZERO PATTERN HAKE IT THRU?

; YES - GO TO NEXT TEST

'"
361
363

TSTlA

; HALT SYSTEM

LaC OBJ

LINE

SOURCE

364

j

A CHECKSUM IS DONE FOR THE 8K

366

ROS NODULE CONTAINING POD
BIOS.

367

EOAE

DESCRIPTION

365

A/'.()

368

;----------------------------------------

3 ••

CI0:

370
EOAE [6AO

371

; ZERO IN AL ALREADY
OAOH,AL

EOBO E683

372

OIJT
OUT

Eoez BA0603

373

~IOV

OX.lOBH

[OB5 EE

374

OUT

DX.AL
AL
DL,DBaH

83H,AL

[OB6 FEeD

375

INC

EOB8 BZBB

376

MOV

EOBA EE
EOBB 8089

377

OUT

378

MOV

DX,AL
AL.89H

EOBD E663

379

OUT

tHO_PORT,AL

EOBF BOAS

360

MOV

AL,lOIOOlOlB

EOCI E661

36'
363

OUT

PORT_S,AL

MOV

AL,O!H

361

; DISABLE NHI INTERRUPTS
; INITIAlZE DHA PAGE REG

; DISABLE COLOR VIDEO

; DISABLE B/W VIDEO,EN HIGH RES
; SET 8255 FOR B,A=DUT. C=IN

I ENABLE PARITY CHECKERS AND
; PULL KB CLOCK HI. TRI-STATE
j KEYBOARD INPUTS.EtIABlE HIGH

364

j

BANK OF SWITCHES->PORT C(O-])

EOt5 f660

3••

OUT

PORT_A,Al

i <><><><><><><><><><><><>
I <:><><>CHECKPOINT 1<><><>

EOC7 8CC8

367

MOV

AX,CS

I SETUP 5S SEG REG

EOC9 8EDO

368

MOV

SS,AX

EOCB 8E08

36'
390

MOV

OS,AX

EOC3 8001

365

<><><><><><><>

EODB E660

410

OUT

PORT_A,AL

j

<><><>CHECKPOIHT 2<><><>

EODD B004

4"

MOV

AL,04

J DISABLE DMA CONTROLLER

EODF E608

4"
413

OUT

DHAoa,AL

E009 8002

414

1----- VERIFY THAT TIMER 1 FUNCTIONS OK

415
SEL TIMER 1,LSB,MODE 2

EOEI B054

416

MOV

AL,54H

EOE3 E043

417

OUT

TIMER+3,AL

EOE5 8ACI

416

MOV

.U,CL

EOE7 E641

419

OUT

TIMER:+l,A.L

£OE9

4"

EOE9 8040

4"

MOV

AL,40H

EOEB E643

4"
423

OUT

TINER+3,AL

CHP

BL,OFFH

; YES - SEE IF ALL BITS GO OFf

424
4,.

JE

C13

i TIMERl.8ITS_OFF

IN

A.L,TIMER+l

I READ TIMER 1 COUNT

426

OR

BL,AL

; ALL BITS ON IN TIMER

LOOP

C"

I TIMERl.BITS_ON

EOED 80FSFF
EOFO 7407
EOF2 E441
EOF4 OAD8
EOF6 E2Ft
EOF8 F4
EOF9 8AC!

430

MOV

AL,SL

EOFB 28C9

431

SUB

CX,CX

HLT
Cll:

OUT

TIMER+l,AL
AL,40H

435

OUT

TIMER+3,AL

436

Nap

EI04 '90

437

Nap

flOS 1;441

43B

IN

AL, TIMER+l

El07 22:08

4"
440

AHD

BL,AL

JZ

C15

4"
4"
434

EIOI E643
E103 90

EI09 7403

LATCH TIMER 1 COUNT

I TINERI.BITS_OFF

MOV

EOFD E641
EOFF 8040

i

) TIMER 1 FAILURE, HALT SYS

EOF9

428
4. .

EOFF

; SET INITIAL TIMER CNT TO 0
; TIMER1_BITS_ON

CI2::

.>7

j

; SET TIMER 1 CNT

I TIMER_LOOP

C14:

i

LATCH TIMER 1 COUNT

; DElAY FOR TIMER
I READ TIMER 1 COUNT
I WRAP_DNA_REG

System BIOS 5..29

LOC OBJ
flaB E2F2
EI00 F4

LINE
441
442
443
444

flOE Ba03
EllO E660

SOURCE

445
446
447

lOOP

C14

HLT
j-----

C15:

; HALT SYSTEM

INITIALIZE TIMER 1 TO REFRESH HEMORY
MOV

AL,Q3H

OUT

PORT_A,Al

OUT

DHA+OOH, AL

449
450
451

; <><><><><><><><><><><><>
i

<><:><>C!-IECKPOINT 3<><><>

; l.olPAP _DNA_PEG

448
E1l2 E60D

; TIMER_lOOP

j-----

; SEND MASTER CLEAR TO DHA

WRAP OMA CHANNELS ADDRESS AND COUNT REGISTERS

452

E1I4 BOFf

453

f1I6 BAD8

EllA 890800

454
455
456

EllD 8,.0,0000

457

E120 EE

458
459

El18 BAFS

E121 50

E 122 EE

E123 Baal
E125 EC
E126 8AEO
E128 EC

E129 l808
E128 7401

E120 F4

Al.OfFH
BL,Al

MOV

SH,Al

MOV

eX,8

I SETUP LOOP tNT

HOV

OX.DMA

; SETUP 110 PORT AODR OF REG

OUT

DX,Al

; WRITE PATTERN TO REG. lSB

; SAVE PATTERN FOR COMPARE

PUSH

AX

I SATISIFY 8237 I/O TIMINGS

OUT

DX.AL

; MSB OF 16 BIT REG

MOV

AL.OIH

; AL TO ANOTHER PAT BEFORE RO

462
463

IN

AL,DX

; READ 16-BlT DNA CH REG,

HOV

AH,AL

; SAVE lSB Of 16-BIT REG

IN

AL.ax

; READ NSB OF DNA CH REG

eMP

aX,AX

;

JE

CI8

; YES - CHECK NEXT REG

464
465
466

E12E

f12E 42

469

E12F E2EF

470
471
472

fIB 74fl

e17:

; WRITE PATTERN FF TO ALL REGS

MOV

460
461

467
468

E131 FEtO

HOV

C16:

HLT

PATTERN READ AS WRITTEN?

; NO -

C18:

LSB

HALT THE SYSTEM

; NXT_DHAJH

INC
lOOP
INC

OX
t17
AL

; WRITE PATTERN TO NEXT REG

JZ

C16

I WRITE TO CHANNEL REGS

j

SET

110 PORT TO NEXT CH REG

; SET PATTERN TO 0

473
474

j-----

INITIALIZE AND START DMA FOR MEMORY REFRESH.

475
E135 8E08
E137 8EC3

El3D 50

478
479
480
481

E139 BOFF

EBB f601

HOV

476
477

OS,BX

MOV

ES,BX

ASSUME

DS:ABSO,ES:ABSO

HOV

AL,OFFH

OUT

OMA+l,AL

PUSH

AX
DNA+l,AL

; 5ET UP ABSQ INTO OS AND ES

SET CNT OF 64K FOR REFRESH

EBE f60l

482

OUT

E140 B058

483

MOV

AL,05BH

E142 E60B

484

OUT

DHA+OBH .AL

j

E144 Boao

485
486

HOV

AL,O

; ENABLE DMA CONTROLLER

E 146 8Af8

; SET DNA MOOE.CH O,RD.,AUOTINT
WRITE DNA NODE REG

HOV

CH,AL

j

487
488
489

OUT

DMA+B, Al

; SETUP DMA COMMAlill REG

PUSH

AX

OUT

DHA+IO,AL

; ENABLE DMA CH 0

490
491

HOV

AL.IB

; START TIMER 1

OUT

TIMER+l.Al

492
493

MOV

Al,41H

E153 E608

OUT

DMA+OBH,Al

E 155 50

494

PUSH

AX

E 148 E608
E14A SO
E14B E60A

E140 B012
E14F E641

flSI 8041

SET COUNT HIGH=OO

; SET MODE FOR CHANNEl 1

E156 £408

495

IN

AL,OHA+08

; GET DMA STATUS

Els8 2410
EISA 7401

496

AND

AL,OOOI0000B

; IS TIMER REQUEST THERE?

497

JZ

C18C

; lIT SHQUlD'T 6E)

EISC F4

498

HLT

ElSO 8042

499

MOV

Al,42H

; SET MODE FOR CHANNEL 2.

OIlA+OBH ,Al

C18C:

; HALT SYS. (HOT TIMER 1 OUTPUT)

E15F E60B

500

OUT

E161 8043

501

MOV

AL,43H

E163 E60B

502

OUT

OtlA+OBH.Al

503

; - ------ - - --- - - - - -- - - -- - - --- - --- -----------------

504
505

; SET MODE FOR CHANNEL 3

BASE 16K READ/WRITE STORAGE TEST
; DESCRIPTION

506

WRITE/READ/VERIFY DATA PATTERNS

507

AA.55,FF,Ol, AND 00 TO 1ST 32K OF

508

STORAGE. VERIFY STORAGE ADORESSABILITY.

509

; - ------ ----- -- --------------------- - ------------

510
511

j-----

DETERMINE MEMORY SIZE AND FIll MEMORY WITH DATA

E168 BOOI

512
513
514

MOV

Al.OIH

ElbA EE

515

OUT

DX,Al

E168 881E7<:04

516
517

HOV

BX.DATA_WORO[OFFSET RESETJLAGl i SAVE 'RESET_flAG' IN

f165 BAi30Z

5-30 System BIOS

HOV

DX,0213H

; ENABLE I/O EXPANSION BOX

ax

LOC OBJ

LINE

E16F 890020

516

MOV

CX,2000H

; SET FOR 16K WORDS

fl72 81FB3412

519

CHP

ex, 1234H

; WARM START?

E176 7416

520

JE

CLR_STG

f176 8e18EO

521

MOV

SP,OFFSET C2

JMP

STGTST_CNT

JE

HOW_BIG

HOV

Bl,Al

; SAVE FAILING BIT PATTERN

HOV

AL,QtfH

; <><><><><><><><><><><><>

OUT

PORT_A,AL

; <><><>CHECKPOINT 4<><><>

SUB

ex,cx

; BASE RAM FAILURE -

lOOP
XCHG

C248
BL,AL

; FAIlH1G BIT PATTERN

JMP

C24A

E178 E9FI04
f17E 7412

523

E180 BADB

524

f182 8004

525

ElB'l· E660

526

522

El66 28C9

527

El88 E2FE

526

ElBA 8608

529

E18C EBF6

SOURCE

C24:

C24A:

C24B:

530

; STORAGE OK. DETERMINE SIZE

HANG

FLIPPING BETI-lEEN 04 AND

E18E

531

E18E 28CO

532

SU6

AX,AX

; MAKE AX::OOOO

E190 F3

533

REP

STOSIoI

; STORE 8K WORDS OF 0000

fI9l AS
EIn:

534

fIn 891E7204

535

MOV

E196 BAa004

HOV

DX,0400H

; SET POINTER TO JUST>16KB

MOV

8X,16

; BASIC COUNT OF 16K

E19C

536
537
536

E19C 8EC2

539

E19E 2BFF

540

SU6

01,01

ElAO B855AA

541

MOV

AX,OAA5SH

;

EIA3 88t8

542

MOV

eX,AX

; SAVE PATTERN

EIAS 268905

543

MOV

ES:(OIJ,AX

; SEND PATTERN TO tlEM.

E199 B61000

HOW_BIG:
OATA_LolORO[OFFSET RESETJlAGl.BX ; RESTORE RESET FLAG

FILL_lOOP:
ES,DX

I SET SEG. REG.
TEST PATTERN

; PUT SOMETHING IN AL

EIAS BOOf

544

MOV

AL ,OFH

ELAA 268805

545

MOV

AX,ES:[OIl

; GET PATTERN

EIAO 33Cl

546

XOR

AX,ex

; COMPARE PATTERNS

EtAF 7511

547
546

JNl

HOW_BIG_END

; GO END IF NO COMPARE

EIBI 890020

HOV

CX.2000H

; SET COUNT FOR 8K WORDS

E184 F3

549

REP

STOSW

; FILL 8K WORDS

f186 81C20004

550

ADO

DX.400H

; POINT TO NEXT 16K8 BLOCK

ElBA 83C310

551

ADO

BX,l6

; BUMP COUNT BY 161\B

E160 80FEAO

552

CMP

OH, eAOH

i TOP pF RAM AREA YET? (AOOOO)

ElCO 75DA

553

JNl

FILL_LOOP

Ele2
E1t2 891E1304

554

E185 AS

HOW_BIG_END:

MOV

555
556

557

DATA_WORD I OffSET MEMORY_SIZE 1 ,8X

; SAVE MEMORY SIZE

j----- SETUP STACK SEG ANO SP

556

EIC6 B83000

559

MOV

AX,STACK

I GET STACK VALUE

EIC9 8EOO

560

MOV

SS,AX

; SET THE STACK UP

EICB BeOCOl

561

MOV

SP.OFFSE'r TOS

; STACK IS REAOY TO GO

562

; -------- ----------- --- - -- - --- -- ------- --- - - - ---- - - - - -- --

563

EleE Bon

564
565

INITIALIZE THE 8259 INTERRUPT CONTROLLER CHIP
; - ---- ---- -------- ---------- - --- - -- - - - ------ ----- --- - ---C25:

NOV

AL ol3H

j

IOU - EDGE, SNGL, lCW4

ElOO E620

566

OUT

lNTAOO,AL

fl02 B008

5b7

MOV

AL.8

EI04 E621
fl06 6009

566

OUT

INTAOl.AL

569

MOV

AL.9

EIDB E621

570

OUT

INTAOl,AL

flDA BOFF

571

MOV

AL.OFFH

; MASK ALL INTS. OFF

EIDC E621

572

OUT

INTAOl,Al

;. (VIDEO ROUTINE ENABLES IHTS. l

I SETUP

IC~2

- INT TYPE 8 (8-F I

; SETUP ICW4 - BUHRO ,8086 MODE

573
574

1----- SET UP THE INTERRUPT VECTORS TO TEMP INTERRUPT

575

flOE IE

576

PUSH

OS

flOf 892000

577

MOV

CX.32

EIE2 2BfF

576

SUB

01,01

;. FIRST INTERRUPT LOCATION

EIE4 8EC7

579

MOV

ES,DI

; SET E5=0000 ALSO

EIE6 B823Ff

560

MOV

AX,OFFSET 011

; MOVE AODR OF INTR PROC TO TBl

EIE9 AS

AX.tS

.; GET AODR OF INTR PROt SEG

03

; VECTBlO

03:

561

STas~

flEA 8CC8

562

HOV

EIEe AS

563

STasw

EIED ElF7

564

lOOP

;. FILL ALL 32 INTERRUPTS

565
586

i-----

ESTABLISH BIOS SUBROUTINE CAll INTERRUPT VECTORS

567

EIEf BF40DO

566

ElF2 DE

569

MOV

01, OFFSET VIDEO_INT

; SETUP ADOR TO INTR AREA

CS

EIF3 IF

590

as

;. SETUP ADDR OF VECTOR TABLE

EIF4 8CD8

591

MOV

AX.OS

;. SET AX=SEGMENT

Elf6 BE03FF90

592

MOV

51 ,OFFSET VECTOR_TABLE+16

POP

i

START WITH VIDEO ENTRY

System BIOS 5-31

LOC OBJ
EIFA 691000

LINE

SOURCE

593

MOV
03A:

CX,16

ElFD AS

594

ElFE 47

595

mc

Dr

EIFF 47

596
597

INC

01

LOOP

D,3A

E200 EZFB

598

MOVE VECTOR TABLE TO RAM
SKIP SEGMENT POINTER

; --- - ------------------ ----- -- ------------- ------

599

600

MOVSW

DETERMINE CONFIGURATION AND MFG. MODE

; ------ ------------------ ----------------- - -- - ---

601

E202 If

602

POP

OS

E203 IE

603
604
6,.

PUSH

OS

; RECOVER DATA SEG

IN

AL, PORT_C

; GET SWITCH INFO

E204 E462

E206 240F

AND

AL,OOOOllllB

; ISOLATE SWITCHES

HOV

AH,Al

; SAVE

MOV

Al,lOlOIIOIB

; ENABLE OTHER BANK Of SWS.

PORT_B,Al

E20A 60AO

606
607

f20C E661

608

OUT

E20E 90

NDP

£20B BAED

E211 6104

609
610
611

E213 02CO

612

ROl

AL,CL

; ROTATE TO HIGH NIBBLE

E2:15 24FO

613

AND

AL,llllOOOOB

; ISOLATE

E217 OAC4

614

OR

AL,AH

; COMBINE WITH OTHER BANK

E219 2AE4

SUB

AH,AH

MOV

DATA_WORD!OFFSET EQUIPJlAGI,AX ; SAVE SWITCH INFO

E21E 6099

615
616
617

MOV

Al.99H

E220 E663

618

OUT

CHD_PORT ,AL

E2:22 f80518

E20F £462:

E2lB A31004

IN
MOV

619

CALL

KBD_RESET

; SEE IF MfG. Jur1PEp IN

E22:5 eOfBAA

620

CNP

BL,OAAH

; KEYBOARD PRESENT;

E228 7418

621

JE

E6

E22A BafB65

622

CMP

BL,065H

E220 7503

623
624

JNE

E22F E9EFFO

03B:

E232 B038

625

E2:34 E661

626

OUT

E236 90

627

NOP

E2:37 90

628

NOP

EZ3e E460

629

IN

E2:3A 24Ff

630
631

AND

E23C 7504
EnE FE061204

;

LOAD HFG. TEST REQUEST?

; GO TO BOOTSTRAP IF SO

JMP
Al,38H

MOV

AL.PORT_A
Al,OFFH

JNZ

; WAS DATA LItlE GROUNDED

E6

; SET HANUFACTURWG TEST FLAG

632
633

OATA_AREA[OfFSET HFG_TSTl

634

; ------- - - - - - - - ---- ----- --------------- -- - - - - --- ----- - ---

635

INITIALIZE AND START CPT CONTROLLER (6845)

636

TEST VIDEO READ/WRITE STORAGE.

637

; DESCRIPTION

638

RESET THE VIDEO ENABLE SIGNAL.

639

SELECT

640

READ/WRITE DATA PATTERNS TO STG. CHECK STG

641

AOORESSABILITY.

642

ERROR

= 1

ALPHANU~lERIC

HODE. 40

*

25, B & W.

LONG AND 2 SHORT BEEPS

643

; --------- --- --- - - -- ----- -- --- - - - - - - ---- --- --- ------- -- --

E242

644

E6:

E242 A11004

645

MDV

AX,DATA_~ORD[OFF5ET EQUIPJLAGI

E245 50

646
647

PUSH

AX

MDV

AL,30H

E246 B030

i GET SENSE SWITCH INFO

; SAVE IT

648

MDV

OATA_WORO[OFFSET EQUIP_FlAGJ,AX

E246 2AE4

649

SUB

AH.AH

E240 COlO

6"

INT

E24f B020

651

MDV

AL,20H

E251 nl004

652
653

MOV

OATA_WORD(OFFSET EQUIP_FLAG1,AX

SUB

AH,AH

654
655

INT

ION

£258 58

POP

AX

E259 A31004

656

MOV

DATA_WORO[OFFSET EQUIPJLAGI,AX ; RESTORE IT

Else 2430

657
658

AND

AL,30H

; ISOLATE VIDEO SWS

JNZ

E7

; VIDEO SWS SET TO O?

MOV

DI,OFFSET VIDEO_INT

I SET INT IOH TO DUHMY

MOV

[oII.OFFSET DUMMY_RETURN

E2:48 A31004

E254 2AE4

E256 COlO

E25E 750A

E260 BF40DO

E263 C7054BFF
E267 E9AOOO

10H

i SEND INIT TO B/W CARD

; AND INIT COLOR CARD
; RECOVER REAL

S~ITCH

INFO

i AND CONTWUE

659
660
661
662

; RETURN IF NO VIDEO CARD
; BYPASS VIDEO TEST

JHP

; TEST_VIDEO:

E7:

E26A

663

E26A 3e30

664

eMP

AL,30H

fZ6C 7408

665

JE

E8

i

INC

AH

; SET COLOR MODE FOR COLOR CD

eMP

AL.20H

; 80X25 MODE SELECTED?

E26E FEC4

E270 3C20

666
667

E2n 7502

668

JNE

E274 6403

669

MOV

5-32 System BIOS

'8

AH,3

; S/W CARD ATTACHED?

i

YES - SET MODE FOR S/W CARD

NO - SET MODE FOR 40X25

; SET MODE fOR 80X25

LOC OBJ

LINE

SOURCE
E8:

XCHG

AH.Al

i SET_MODE:

E278 50

671

PUSH

AX

; SAVE VIDEO MODE ON STACK

E279 2AE4

672

SUB

AH,AH

; INITIALIZE TO ALPHANUMERIC MO

E276 86EO

670

673

INT

10H

; CALL VIDEO_IO

E2:70 58

674

POP

AX

; RESTORE VIDEO SHISE SI.IS IN AH

E27E SO

675

PUSH

AX

i RESAVE VALUE

E27F BB0080

676

MOV

BX.OBDDaH

; BEG VIDEO RAH ADOR 9/14 CO

E282: BABaOl

677

HOV

DX,3B8H

; MODE REG FOR B/W

E278 COlO

HOV

CX,2048

E2:88 BOOI

679

HOV

AL,l

; SET NODE FOR Bioi CARD

ElBA BOFt30

680

eHP

AH,30H

; B/W VIDEO CARD ATTACHED?
; YES - GO TEST VIDEO STG

E285 890008

E28D 7409

678

; RAH WORD CNT FOR B/W CO

681

JE

E9

E28F B7B8

682

MOV

BH, DB8H

i BEG VIDEO RAM AODR COLOR CO

E2:91 BAD803

683

MOV

OX.3D8H

; MODE REG FOR COLOR CD

E2:94 8520

684

E296 FEte

685

E298

686

E2:98 EE
E299 813E72043412:

HOV

CH,2011

; RAM WORD CNT FOR COLOR CO

DEC

AL

; SET NODE TO 0 FOR COLOR CD

687

OUT

DX,AL

688

eHP

OATA_WORO[OFFSET RESETJLAGJ,1234H ; POD INIT BY KBD RESET?

E2:9F 8EC3

689

HOV

ES, ax

;

f2Al 7407

690

JE

ElO

; YES -

E2A3 8EDB

691

HOV

DS.3X

; POINT OS TO VIDEO RAH STG

692

ASSUME

DS:~IOTHIHG,ES:NOTHING

E2:AS E8e703

6.,

flAB 7546

694
695

E9:

; DISABLE VIDEO FOR COLOR CO

POINT ES TO VIDEO RAM STG
SKIP VIDEO RAM TEST

CALL

STGTST_CtH

; GO TEST VIDEO R/W STG

JNE

E17

; R/14 STG FAILURE - BEEP SPK

; ---- --------- - -- ----- ------ - - ------------- ------

696

SETUP VIDEO DATA ON SCREEN fOR VIDEO

697
69B

; TEST_VIOEO_STG:

LINE TEST.
; DESCRIPTION
ENABLE VIDEO SIGNAL At1D SET MODE.

699

DISPLAY A HORIlONTAL BAR ON SCREEN.

700
701

i ------------------------------------------------

EIO:

E2:AA

702

E2AA 58

703

POP

AX

; GET VIDEO SENSE SWS (AH)

ElAB 50

704

PUSH

AX

; SAVE IT

EZAC 8400

705

MOV

AH,O

i

E2AE COlO

706

INT

lOH

; VIDEO

E2BO B82070

707

MOV

AX.7020H

I WRT BlAtlKS IN REVERSE VIDEO

ENABLE VIDEO AND SET tIDDE

708
709

E283 EBll
E2:C3
E20 E99915

E2e6
E2e6 2BFF

E2:C8 S92eoo

E2tB F3

710
711
712
713
714
715
716
717
718

;----- UNNATURAL ACT FOR ADDRESS COMPATIBILITY

SHORT flOA

ORG

OE2C3H

JMP

NMI_INT

ElDA:
SUB

01.01

HOV

CX,40

; NO. OF BLANKS TO DISPLAY

REP

STOSW

; WRITE VIDEO STORAGE

; SETUP STARTING LOC

flte AB
719

; ----------------------------------------

720

721

CRT INTERFACE LINES TEST
i DESCRIPTION

722

SENSE ON/OFF TRANSITION OF THE

723

VIDEO ENABLE AND HORIZONTAL

724

725

SYNC LINES.

; ----- ---- - - - - --- -- - ------- --------------

fZtD 58

726

POP

AX

I GET VIDEO SENSE SW INfO

EltE 50

727

PUSH

AX

I SAVE IT

E2CF BOFOO

728

CNP

AH, 30H

; B/W CARD ATTACHED?

E202 8ABA03

729

MOV

DX,03BAH

; SETUP ADDR OF EW STATUS PORT

E205 7403

730

JE

Ell

; YES - GO TEST LINES

E207 BADA03

731

HOV

DX,03DAH

; COLOR CARD IS ATTACHED

HOV

AH,8

SUB

ex.cx

E20A

732

ElOA 8408

733

Ezoe

734

Ell:

; LINE_ TST:

EI2::

fZOC 28C9

735

E20E

736

HOE EC

737

IN

Al.DX

; READ CRT STATUS PORT

HOF 22C4

738

AND

AL,AH

; CHECK VIDEO/HORZ LINE

E2El 7504

739

JNZ

E14

; ITS ON - CHECK IF IT GOES OFF

E2E3 E2F9

740

LOOP

E13

; LOOP TILL ON OR TIMEOUT

E2E5 E809

741

JHP

SHORT El7

i GO PRINT ERROR MSG

E2E7

742
SUB

CX.cx

IN

AL,DX

E2E7 28C9

743

E2E9

744

E2E9 EC

745

En:

E15:
; READ CRT STATUS PORT

System BIOS 5-33

LOC OBJ

LINE

E2EA 22C4

746
747
748

E2EC 7411
E2EE E2F9

E2FO

E2FO IF
E2Fl IE

749
750
751

SOURCE
AND

Al.AH

; CHECK VIDEO/HORl LINE

JZ

El6

; ITS ON - CHECK NEXT lH1E

LOOP

E15

; lOOP IF OFF TILL IT GOES ON

PDP

OS

E17:

; CRT_ERR:
PUSH

OS

E2F2 C606150006

752

HOV

DS:MFG_ERRJLAG,06H

ElF7 BA020 1

MOV

OX,102H

E2FA E80816

753
754

UFO EB06

755

E2Ff

756

E2Ff 8103

757
758

nOI D2EC
E303 7507

nos
E305 58

n06 8400
E308 COlO
E30A

759
760
761

ERR_BEEP

JHP

SHORT E18

; GO BEEP SPEAKER
NXT_ln~E:

;

E16:
HOV

el,3

SHR

AH,Cl

JNZ

El2

; GO CHECK HORIZONTAL LINE

POP

AX

; GET VIDEO SENSE SWS (AH)

MDV

AH.O

INT

10H

; CALL VIDEO I/O PROCEDURE
; SEE IF ADVANCED VIDEO CARD

; GET NEXT BIT TO CHECK

E18:

762
763
764
765
766

CAll

; <><><>CRT ERR CHKPT. 06<><><>

; DISPLAY_CURSOR:
SET MODE AND DISPLAY CURSOR

MOV

DX,OCOOOH

767
768
769

HOV

DS,DX

SUB

BX,BX

NOV

AX,[BXJ

770
771

PUSH

BX

E314 58

POP

ex

E315 3055AI>.

772

CMP

AX,OAA55H

E318 7505

773

JNl

EIB8

NO? GO LOOK FOR OTHER MODULES

niA E83616

774
775

CALL

ROM_CHECK

GO SCAN MODULE

JHP

SHORT E18C

DOA BAOOCO

E300
E300 8EDA

nOF 2BDB

E311 8B07

E313 53

DID E804

E323

776
777
778

E323 81FAooce

779

E31F
E'31F 81C28000

E327 7CE4

E18A:

DX,0080H

; POINT TO NEXT 2:K BLOCK

DX,OC800H

; TOP OF VIDEO ROM AREA YET?

Jl

E18A

; GO SCAN FOR ANOTHER MODULE

; ---- -- -- - -- -- -- --- ---- - --- - - - - -------- - - --------- - --- --82:59 INTERRUPT CONTROLLER TEST
; DESCRIPTION

784

READ/WRITE THE INTERRUPT MASK REGISTER (IMR)

785

WITH ALL ONES AND ZEROES. ENABLE SYSTEM

786

INTERRUPTS.

787

£329 IF

ADD

eHP

El8C:

782:
783

LET BUS SETTlE
PRESENT?

I

E18B:

780
781

IS PRESENT
GET FIRST 2: LOCATIONS

MASK DEVICE INTERRUPTS OFF. CHECK

FOR HOT INTERRUPTS (UNEXPECTED).

788

; ------ - --- ---- ------ - - -- - -- - -------- - -- - --------- -- - - ---

789
790
791

C2l:

792:

j -----

ASSUME

DS:ABSO

POP

OS

TEST THE IMR REGISTER

793
E32A C606150405

794

C21A:

MOV

; <><><><><><><><><><><><>
; <><><>CHECKPOINT 5<><><>

795
796
AL,O

; SET IMR TO ZERO

E32F BODO

797

MOV

E331 £621

798
799

OUT

INTAOl,AL

IN

AL,INTAOI

E335 OACO

800

OR

AL,AL

; IMR

E337 7518

801

JNZ

06

, GO TO ERR ROUTINE IF NOT

£339 BOFF

802

HOV

Al.OFFH

; DISABLE DEVICE INTERRUPTS

E33B E621

803
804
805

OUT

INTAOl,Al

; WR ITE TO IMR

IN

Al,INTAOl

; READ IMR

ADD

AL'!

; ALL IMP BIT ON?

806
807

JNZ

06

i

E333 E421

E33D E421
E33F 0401

E341 7511

808

; READ IMR

=

O?

a

NO - GO TO ERR ROUTINE

;----- CHECK FOR HOT INTERRUPTS

'09
810

j-----

INTERRUPTS ARE MASKED OFF.

CHECK THAT NO INTERRUPTS OCCUR.

811
£343 A26804

HOV

812

DATA_AREA[OFFSET INTPJlAGJ ,Al

; CLEAR INTERRUPT fLAG

; ENABLE EXTERNAL INTERRUPTS

E346 FB

B13

STI

£347 28C9

814

SUB

CX,CX

; WAIT 1 SEC FOR ANY INTRS THAT
; MIGHT OCCUR

£349

BIS

E349 EZFE

81.

E34B

817

E340 80310680400

818
819

E352 7409

820

E354

821

E354 BEFFF890

822

E34B E2FE

5-34 System BIOS

04:
lOOP

04

LOOP

05

eHP

DATA_AREA[OFFSET INTR_FLAGJ ,OOH ; DID ANY INTERRUPTS OCCUP?

JZ

07

; NO - GO TO NEXT TEST

MOV

SI,OFFSET &0

; DISPLAY 101 ERROR

05:

06:

LOC OBJ

LINE

E358 E84E16

B23

E358 FA

B24

E3SC F4

B25
826

SOURCE

CLI
HlT

827

828

; HALT THE SYSTEM

; -------- -- - - - -- ------------ - ------- - --- --- --- - - - - - - -- ---

8253 TIMER CHECKOUT

; DESCRIPTION

829

VERIFY THAT THE SYSTEH TIMER (0) DOESN'T COUNT

830

TOO FAST OR TOO SLOW.

831
E350

832

E350 C606150402

B33

; -- -- --- - - -- - - - ------- ---- - - - - -- - - ------ - --- - - - --- - - - ---07:
HOV
; < ><>< >< ><>< ><>< >< >< >< >< ><><>< ><>

B34

; <><><>TIMER CtiECKPOINT 12 }<><><>

835
f362 BOFE

MOV

B36

AL,OFEH

E364 E621

837

OUT

f366 BOlO

B3B

HOV

AL.OOOlOOOOB

i

E368 E643

839

OUT

TIM_CTL.AL
CX,16H

; WRITE TItlER CONTROL MODE REG
; seT THIER 0 CNT REG

E36A B91600

INTAOl,Al

; MASK ALL INTRS EXCEPT LVL 0
; WRITE THE 8259 IMR
SE l TIM O.

; SET PGN LOOP CNT

B40

HOV

D6D BACl

841

MOV

E36F E640

B42

OUT

Al.Cl
TIMERO ,AL

TEST

OATA_AREA(OFfSET INTRJLAG1.OIH

E371

843

E371 F6066B0401

B44

LSB. MODE O. BINARY

; WRITE TIMER 0 CNT REG

08:

845

j

DID TIMER 0 INTERRUPT OCCUR?

E376 7504

B46

JNZ

09

; YES - CHECK TIMER OP FOR SLOW TIME

E378 E2F7

847

LOOP

08

; WAIT FOR INTR fOR SPECIFIED TIME

JMP

06

; TIMER 0 nnR DIDN T OCCUR - ERR

HOV

CL.12

; SET PGM lOOP CNT
; WRITE THIER 0 CtlT REG

E37A EBDB

84B

E37C

84.

E37C BlOC

B50

09:

E37E BOFF

851

HOV

AL,OFFH

E380 E640

852

OUT

TIMERO.AL

E382 C606680400

853

HOV

DATA_AREAl OFfSET INTR_FLAG1.O

; RESET INTR RECEIVED FLAG

E387 BOFE

B54

HOV

AL,OFEH

E389 E621

855

OUT

INTAOl,AL

E388

856

DBB F6066B0401
E390 75t2

B57

TEST

DATA_AREAl OFFSET INTRJlAGJ,OIH ; DID TIMER 0 INTERRUPT OCCUR?

B5B

JNZ

06

; YES - TIMER CNTING TOO fAST. ERR

n92 E2F7

859

LOOP

010

; WAIT FOR INTR FOR SPECIFIED TIME

j

REENABLE TIMER 0 INTERRUTS

010:

B60

861

j----- SETUP TIMER 0 TO MODE 3

B62

E394 BOFF

B63

HOV

AL,OfFH

E396 E621

864

OUT

INTAOl,AL

; DISABLE All DEVICE INTERRUPTS

E398 B036

865

HOV

AL,36H

; SEl TIM O.LSB.MSB.MOOE 3

E39A E643

B66

OUT

TIMERt3.AL

; WRITE TIMER MODE REG

E39C BOOO

B67

HOV

AL.O

E39E E640

86B

OUT

TIMER.AL

; WRITE lSB TO TIMER 0 REG

E3AO E640

B6.

OUT

TIMER .AL

; WRlTE MSB TO TIMER 0 REG

B70

;

------------------- ------ -----------------------

871
872

KEYBOARD TEST
; DESCRIPTION

873

RESET THE KEYBOARD AND CHECK THAT SCAN

874

CODE

875

AA' IS RETURNED TO THE CPU.

CHECK FOR STUCK KEYS.

876

; -- ------- - --- - --- ----- ------ -- - - - - - ----- - ---- ---

E3A2

877

TSTl2:

E3AZ 8099

B78

HOV

AL,99H

E3A4 E663

B79

DAb AOI004

B80

OUT
HOV

CMD_PORT ,AL
AL,OATA_AREA[OFFSET EQUIP_FLAG]

E3A9 2401

881

AND

AL,OI

nAB 7431

8B2

JZ

E3AD 803E120401

8B3

CHP

; BYPASS IF SO
F7
DATA_AREAl OFFSET MFG_TST1.l
; MANUFACTURING TEST MODE?

E382 742A

884

JE

F7

YES - SKIP KEYBOARD TEST

E3Bct E87316

B85

CALL

E387 DIE

886

JCXZ

F6

PRINT ERR MSG If NO INTERRUPT

E3B9 8049

BB7

MOV

Al,49H

HIABLE KEYBOARD

E388 £661

BB8

OUT

PORT_B.AL

E3BD 80FBAA

BB9

CMP

BL,OAAH

SCAN CODE AS EXPECTED?

nco

BOO

JNE

F6

NO - DISPLAY ERROR MSG

7515

I SET 8255 MODE A, C=IN B=OUT

; TEST CHAt1BER:

ISSUE RESET TO KEYBRO

BOl
892

j-----

CHECK fOR STUCK KEYS

893
894

HOV

Al,OC811

E3e4 E661

BOS

ouT

PORT_B,AL

nCb 80"8

896

HOV

Al,48H

OUT

PORT_B.AL
CX,CX

BC2 BOC8

nce

E661

B97

DCA 28C9

89B

f3ee

899

SUB

CLR KBO

I

SET CLK LINE HIGH

ENABLE KBD,CLK IN NEXT BYTE

F5:

System BIOS 5-35

LaC OBJ

LINE

nec E2FE
neE E460

900
901

lOOP

F5

; DElAY FOR A WHILE

IN

AL.KBD_IH

; CHECK FOR STUCK KEYS

E300 3COO

CHP

AL,Q

; SCAN CODE:; O?

DOl 740A

902
903

JE

F7

; YES - CONTINUE TESTING

E3D4 E86415

904

CALL

XPC_BYTE

; COINERT AND PR INT

E307

905
HOV

SI,DFFSET Fl

; GET MSG ADDR

CALL

E_MSG

; PRINT MSG ON SCREEN

E307 BE4CEC90

906

E30B E8e815

907

nOE
DOE IE
E30F 2BCO

nEl aECO
E3E3 890800

908
909

; ---------------- ------ ------ ----- - ---- -- -------SETUP HARD~ARE INT. VECTOR TABLE

910
911

; --- - - ------------ - ------- ---------------- -- ----f7:

DEb DE

DE? IF

917

E3E8 BEF3FE90

918
919

E3EF
E3EF AS

nFO 47

DFI 47
E3F2 EHB
E3F4 IF

PUSH

912
913
914
915
916

E3Et BF2aCQ

SOURCE

920
921

OS

SUB

AX,AX

tlOV
HOV

ES,AX
CX,08

PUSH

CS

POP

OS

HOV
HOV

SI,OfFSET VECTOR_TABLE
DI,OfFSET INT_PTR

MOVSW
INC

01

INC

01

lOOP

F7A

POP

OS

; GET VECTOR CNT
; SETUP OS SEG REG

F7A:

'"
923
924
925

; SKIP OVER SEGMENT

926

n7

,----- SET UP OTHER INTERRUPTS AS NECESSARY

928
E3F5 C70608005FFB

929

HOV

NMI]TR,OFfSET NMI_INT

E3FB C706140054FF

930
931

HOV

; PRINT SCREEN
IHT5_PTR,OFFSET PRINT_SCREEN
; SEGMENT FOR CASSETTE BASIC

E401 C706620000F6

HOV

'"

933

; NMI INTERRUPT

;----- SETUP TIMER 0 TO BLINK LED IF MANUFACTURING TEST MODE

934
935
936

CMP

E40e 750A

E40E q0670003CF9

937

HOV

WORD PRT(ICH*4},OFFSET BLINK_INTI SETUP TINER INTR TO BLINK lED

E414 BOFE

938

HOV

E416 [(,21

939

OUT

Al,OFEH
INTAOl,Al

E407 803E120401

DATA_AREA[OFFSET MFG_TSTl,OlH

I MFG. TEST NODE?

JNZ

; -------

940

941
942
943

I ENABLE TIMER INTERRUPT

-- --------------------------------- - --------------- -- ----

EXPANSION I/O BOX TEST
CHECK TO SEE IF EXPANSION BOX PRESENT - IF INSTALLED,
TEST DATA AND ADDRESS OlJSES TO 1/0 BOX

944
945

ERROR='l801'
----- - -- - -- ------ - ------------- ---------------- - - ---- -----------

946
947

j-----

DETERMINE IF BOX IS PRESENT

948
E418

949

E418 6AI002

950

E418 885555

HOV
HOV

951

(CARD WAS ENABLED EARlIERl

i

EXP_IO:
DX,0210H
AX,5555H
DX,Al

; COf.lTROl PORT ADORESS
I SET DATA PATTERN

E41E EE

952

OUT

E41F B001

953

HOV

E421 EC

954

IN

E422 3AC4

955

CMP

AL.OIH
AL,DX
Al,AH

E424 7544

956

JtlE

El9

; REPLY?
; NO RESPONSE, GO TO NEXT TEST
j

E426 F70C

957

NOT

AX

E428 EE

958

OUT

E429 BOOI

959

MOV

DX,Al
Al,OlH

E42B EC

960

IN

Al,DX

E42C 3AC4

961

CHP

Al,AH

E42E 753A

'"
963

JHE

El9

964

; MAKE Al DIFFERENT
; RECOVER DATA

tlAKE DATA=AAAA

; RECOVER DATA

;----- CHECK ADDRESS BUS

965
EXP2:

E430

966

E430 BBO 100

967

HOV

BX,OOOlH

E433 8A1502

968

HOV
HOV

DX,021SH
CX,0016

; LOAD KI ADOR. REG ADDRESS

E436 891000

969

E439

970

E439 2E8807

971

MOV

CS:IBX],Al

j

E43C 90

970

NOP

E430 EC

'73

IN

974

CMP

AL,DX
AL,BH

I READ ADDR. HIGH

E43E 3AC7

'75
976

JNE

EXP _ERR

INC

OX

J GO ERROR IF MISCOMPARE
; DX=216H (ADDR. LOW REGl

E44-0 7521

E442 42

5-36 System BIOS

; GO ACROSS 16 BITS

EXP3:
WRITE ADDRESS FOOOO+BX

LOC OBJ

LINE

SOURCE

E443 EC

977

IN

AL.DX

E444 3AC3

978

CNP

Al,BL

E446 7518

979

JNE

EXP _ERR

E448 4A

980

DEC

OX

E449 DID

98'
98'
983

SHL

ex,!

LOOP

EXP3

E448 E2Et

984

j-----

; COMPARE TO lOI>! ADDRESS

; ox

BACK TO 2ISH

I lOOP TILL 'I' WALKS ACROSS

ax

CHECK DATA BUS

985
E440 890800

986

MOV

CX,0008

E450 8001

987

MOV

Al,OI

; DO

B TIMES

E452 4A

988

OEC

ox

E453

989

E453 8AEO

990

MOV

AH,Al

; SAVE DATA BUS VALUE

OUT

OX.AL

; SEND VALUE TO REG

tl0V

Al,OlH
Al,DX

; RETRIVE VALUE FROM REG

E459 3.4.C4

99'
99'
99'
994

CMP

Al,AH

j

E458 7506

995

JNE

SHORT EXP _ERR

E4S0 ODED

996
997

SHl

Al,l

; FORM NEI>! DATA PATTERN

E4SF E2FZ

lOOP

EXP4

; lOOP TILL BIT WALKS ACROSS

E461 EB07

998

JMP

SHORT E 19

j

E463 BEOFf990

999
1000

MOV

SI,OFFSET F3C

E467 E83F15

1001

CALL

E_MSG

E455 EE
E456 BOO 1
E4S8 EC

E463

; MAKE DX==214H (DATA BUS REG)

EXP4:

IN

== TO SAVED VALUE

Al

GO ON TO NEXT TEST

1002:
1003
1004

ADDITIONAL READ/l-IRITE STORAGE TEST
; DESCRIPTION

1005

WRITE/READ DATA PATTERt~S TO MIY READ/WRITE

1006

STORAGE AFTER THE FIRST 32K.

1007

ADDRESSABIlITY IS CHECKED.

1008

; - -- --- --------------------------- --- -- - - ----- -----------

1009

E46.4.
E46A E8EC15

1010

1012

1013

E46E 813E72003412

ASSUME

DS:OATA

CALL

DDS

PUSH

OS

E19:

1011

E460 IE
E46E

STORAGE

fZO:

1014

CMP

RESET_F LAG ,IZ34H

; WARM START?

E474 7503

1015

JNE

E20A

; CONTINUE TEST IF t-16K

DS,BX

E21 :

E48E SEDB

1028

MOV

1029

MOV

ES,BX

E492 81C30004

1030

ADO

BX,0400H

1031

PUSH

E497 51

1032

rUSH

CX

E498 53

1033

PUSH

BX

1034

PUSH

AX

E49.4. 890020

1035

MOV

CX,ZOOOH

E490 ESCfOI

1036

CALL

STGTST_CNT

E4AO 754C

1037

JNl

EZlA

E4.4.2 58

1038

POP

AX

E4A3 051000

1039

ADD

AX,16

E4.4.6

1040
1041

PUSH

E4A7 880AOO

1042

HOV

BX,10

E4AA 890300

1043

HOV

CX,3

E4AD

1044

E4AD 3302

1045

XOR

1046

DIY

BX

1047

OR

DL,30H

E484 52

1048

PUSH

ox

E485 E2f6

1049

lOOP

DECIMAL_lOOP

E487 690300

1050

MOY

CX,3

E4SA

1051

POP

AX

1052
1053

SAVE WORK REGS

SET COUNT FOR 8K WORDS

GO FPINT ERROR
; RECOVER TESTED MEM NUI-tBER

SET UP FOR DECIMAL CONVERT
I

OF 3 NIBBLES

DECIMAL~LOOP:

E481 80C.4.30

E4BB f80E14

j

AX

E4.A.f f7F3

E4SA 58

; SET SEG. REG

; POINT TO NEXT 16K

OX

E499 50

E4.4.6 50

1ST 16K ALREADY DONE

; DIVIDE BY 16
; SAVE COUNT Of 16K BLOCKS

E490 8EC3

E496 52

; STARTING AMT. OF MEl-IOPY OK

E20B:

DX,OX
; DIVIDE BY 10
MAKE INTO ASCII
I

SAVE

; RECOVER A NUM[3ER

System BIOS 5-37

LOC OBJ

SOURCE

LINE

E4BE E2FA

1054

E4CO 890700

1055

MOV

CX.7

E4C3 BEIAEO

1056

MOV

Sl.0FFSET F3B

E4e6

1057

E4e6 lE8A04

1058
1059
1060

E4C9 46
E4eA ESCFI4

MOV

AL.CS:[SII

INC

SI

CAlL

PR!_nEX

PRINT ' KB OK'

E4eD E2F7

1061

LOOP

KB_Loor

E4CF 58

POP

AX

; RECOVER WORK REGS

E400 301000

1062
10('3

01P

AX,16

; FIRST PASS?

E403 74A9

1064

JE

E20B

E405 56

1065

POP

BX

1066

POP

cx

E407 SA

lq67

POP

OX

E40B E284

1068
1069

LOOP

E21

MOV

AL,lO

CALL

PRT_HEX

E406 59

E40A BOOA

E40C E85D14

1070
1071
1072

lOOP TILL ALL MEM. CHECKED

LINE FEED

;----- DHA Teo SHOULD BE ON BY NOW - SEE IF IT IS

1073
1074
1075

IN
AND

AL.OOOOOOOIB

j

1076
1077

J~lZ

ROM_SCAN

; GO ON WITH NEXT TEST IF OK

POP

OS

E4E6 C606150003

1078

MOV

MFG_ERR_FLAG,03H

; <><><><><><><><><><><><><>

E4EB E966FE

1079

JMP

06

; POST 101 ERROR MSG AND HALT

E40F E408

E4El 2401
E4E3 7533

E4E5 IF

IDeo
1081

AL.DMA+08H
TCO STATUS BIT ON?

;----- PRINT FAILING ADDRESS AND XDR'EO PATTERN IF DATA COMPARE ERROR

1082
CH.AL

; SAVE FAILING BIT PATTERN

E4FO BODO

1084

MOV

AL,l3

; CARRAGE RE1URN

E4F2 E8A714

1085

CALL

PRT_HEX

E4F5 BOOA

1086

MOV

Al.IO

E4F7 E8.6o.214

1087

CALL

E4FA 58

1088

POP

AX

E4FB 83C406

1089
1090

ADO

SP.6

; BALANCE STACK

MOV

DX,OS

; GET FAILING SEGMENT

E4EE 8AE8

E4FE BCOA

1083

E21A:

MOV

PRT_HEX

E500 If
ESDI IE

1091
1092

PUSH

OS

E502 A31300

MEMORY_SIZE,AX

E505 86361500

1093
1094
1095

MOV

E509 EaCEIA

1097

CAll

ESOC 8ACS

E50E E67A14

1098
1099

ESll BE04F990

1100

POP

OS
; LOAD MEM.

SIZE WORD TO SHOW

; HOW MUCH MEM. !-lORKING

; <><><><><><><><><><><><><>

MOV

; <><>CHECKPOINTS 08->AO<><>

1096

E515 E89114

; RECOVER AMT. OF GOOD MEM.

1101

PRT_SEG

; PRINT IT

MOV

AL,CH

; GET FAILING BIT PATTERN

CALL

XPC_BYTE

; CONVERT AND PRINT CODE

MOV

SI,OFFSET El

; SETUP ADDRESS OF ERROR MSG

CAll

E_MSG

; PRINT ERROR MSG

1102

; ---------- ----- -- ------ --- ---- -- - --- - - - ---- ---------------------

1103

I

CHECK FOR OPTIONAL ROM FROM CBOOO->F4000

IN

2.K BLOCKS

1104

(A VALID MODULE HAS '5SAA'

1105

LENGTH INDICATOR ILENGTH/512) IN THE 3D LOCATION AND

1106

IN THE FIRST 2 LOCATIONS,

TEST/INlT. CODE STARTING IN THE 4TH LOCATION.)

1107

; ------- - --_. ------ -- --- -- ---- - - -- -------- ---- -------- - -----------

E518

1108

ROM_SCAN:

E518 BAOOC8

1109

MOV

E51B

1110

ROM_SCAN_l:

E51B 8EOA

1111
1112

MOV

DS,DX

SUB

DX.OCBOOH

I SET BEGINNING ADDRESS

BX,BX

; SET ex=oooo

ESIF 8B07

111,3

MOV

AX, leX)

; GET 1ST !-lORD FROM MODULE

E521 53

1114

PUSH

E522 58

1115

POP

BX
BX

; BUS SETTLING

E523 3055AA

1116

CMP

AX,OAA55H

; :; TO 10 WORD?

E526 7506

1117

JNZ

NEXT _ROM

; PROCEED TO NEXT ROM IF NOT

E510 ZBDS

E528 E82814

1118

CALL

RDtI_CHECK

; GO CHECK OUT MODULE

E528 E60590

1119

JMP

ARE_WE_DONE

; CHECK FOR END OF ROM SPACE

ES2E

llZ0

E52E 81C28000

1121

ADO

DX,OOBOH

; POINT TO NEXT 2K ADDRESS

CMP

OX,OF600H

; AT F6000 YET?

1124

JL

ROM_SCAN_l

; GO CHECK ANOTHER ADD. IF NOT

1125

JMP

BASE_ROM_CHK

; GO CHECK BASIC ROM

E532

llZZ

E532 8lFADDFb

1123

E536 7eE3
E536 EB0190

1126

; ----- - ------ ----------- - - - - - -- - -- ------ --- - -- --- - ------ -- ------- --- - - - --

1127

;

A CHECKSUM IS DONE FOR THE 4 ROS MODULES CONTAINING BASIC CODE

1l~8

J ----- - - - ----- -- --- -- -- -- - - --- -- - - ----- - - - - -- -- - - - ------- - ------- ------ --

E538

1129

BASE_ROM_CHK:

E538 8404

1130

5-38 System BIOS

MOV

AH,4

; NO. OF ROS MODULES TO CHECK

LOC OBJ
E53D

LINE
1131
1132

SOURCE
E4:
SUB

eX,ex

E53F 8EDA

1133
1134

MOV

OS,OX

ES41 EaAEl3

1135

CALL

ROS_CHECKSUM

E544 7403

1136
1137
1138

JE

E5

CALL

ROM_ERR

; POST ERROR

ADD

DX,0200H

; POINT TO NEXT 8K MODULE

DEC

AN

; ANY HORE TO DO?

JNZ

E4

;

E53D 2.80B

E546 E88201

E549
E549 81C20002
E54D FEee

E54F 75ft

I CHECK ROS

1143
1144

;

DISKETTE ATTACHtlENT TEST
; DESCRIPTION

CHECK IF IPl DISKETTE DRIVE IS ATTACHED TO SYSTEM.
ATTACHED

I

VERIFY STATUS OF NEe FOC AFTER A RESET.

A RECAL AND SEEK eHD TO Foe AND CHECK STATUS. COMPLETE

LOADER PROGRAM.

----------------------------------------------------- - ------- ---

1150

;

E551

1151

F9:

E551 1F

1152

PDP

E552 AOIOOO

1153

MDV

At. ,BYTE PTR EQUIP_flAG

ESSS 2401

1154

AND

At..01H

JZ

Fl5

1155
1156

E559 E421

IF
ISSUE

SYSTEM INITIALIZATION THEN PASS CONTROL TO THE BOOT

Il49

E559

YES - CONTINUE

----------------------------------------------------------------

1145
1146
1147
1148

E557 743E

; CONTINUE IF OK

E5:

1139
1140
1141
1142

; SETUP STAI(TIHG ROS AOOR

OS

FlO:

1157

; DISKETTE PRESENT?
; NO - BYPASS DISKETTE TEST
• DISK_TEST:

IN

At..INTAOl

E55B 24BF

1158

AND

Al,OBFH

E550 E621

1159

OUT

INTAOl,AL

E55f 5400

1160

MDV

AH.O

; ENABLE DISKETTE INTERRUPTS
; RESET HEe FOC

E561 8AD4

1161

MOV

Dl,AH

; SET FOR DRIVE 0

E563 COB

1162

INT

13H

; VERIFY STATUS AFTER RESET

E565 F6C4FF

1163

TEST

AH.OFFH

; STATUS OK?

E568 7520

1164

JNZ

F13

J NO - FOC FAILED

1165
1166

;----- TURN DRIVE 0 NOTOR ON

1167
E56A BAF203

1168

MDV

OX,03F2H

; GET AOOR OF Foe CARD

E560 801e

1169

MDV

AL.leH

; TURN MOiOR ON. EN DNA/INT

E56F EE
E570 2BC9

1170

OUT

OX.Al

1171

SUB

ex.ex

E572

1172

E572 E2FE

1173

E574

1174

E574 E2FE

1175

WRITE Foe CONTROL REG

FU:

MOTOR_WAIT:
lOOP

'11

LOOP

F12

WAIT fOR 1 SECOND

F12:

MOTOR_WAIT I :

E576 3302

1176

XOR

OX,OX

E578 B501

1177

MOV

CH,1

E57A 88163EOO

1178

MDV

SEEK_STATUS,Ol

E57E E8FC08

1179

CALL

SEEK

; RECALIBRATE DISKETTE

E581 7207

1180

JC

Fl3

; GO TO ERR SUBROUTINE IF ERR

E583 B522

1181

MOV

CH,34

; SE LECT TRACK 34

E585 E8F508

1182

CALL

SEEK

; SEEK TO TRACK 34

E588 7307

1183

JNe

Fl4

; OK. TURN NOTOR OF F

ES8A

1184

E5eA BE52EC90

1185

HDV

SI,OFFSET F3

; GET AOOR OF MSG

E58E E81814

1186

CAll

E_MSG

; GO PRINT ERROR NSG

F13:

SELECT DRIVE 0
; SELECT TRACK 1

I aSK_ERR:

1187

E5n

1188
1189

;----- TURN DRIVE 0 MOTOR Off

1190

F14:

• ORO_OFF:

E591 BOOC

1191

MOV

AL.OCH

E593 BAF203

1192
1193

MOV

OX,03F2H

OUT

OX.AL

E590 EE

TURN DRIVE 0 MOTOR OFF
;

FOC CTl ArlOR E5S

1194
1195

,----- SETUP PRINTER AND R5232 BASE ADDRESSES IF DEVICE ATTACHED

1190
E597

1197

Fl5:

E597 Co066BOOOO

1198

MDV

INTR]LAG,DOH

SET STRAY INTERRUPT flAG

E59C BEIEOO

1199

MDV

51 ,OFFSET KO_BUFFER

SETUP KEYBOARD PARAMETERS

E59F 89361AOO

1200

MDV

BUffER_HEAD, SI

E5A3 89361COO

=

1201

MDV

BUFFER_TAIL, 51

E5A7 89368000

1202

MDV

BUFFER_START ,SI

E5AB 83C620

1203

ADD

SI,32

E5AE 89368200

1204

MOV

BUFfER_BID,SI

E582 BF780D

1205

MOV

01.OfFSET PR1NT_ TIM_OUT ;SET DEFAULT PRINTER TIMEOUT

ESB5 IE

1206

PUSH

OS

E5B6 07

1207

POP

ES

00

,DEFAULT BUFFER OF 32 BYTES

System BIOS 5-39

LOC OBJ

LINE

SOURCE

E587 881414

12:08

ESBA AB

12:09

STOSIo!

ESBB AS

1210

STaSio!

ESBC B80101

1211

MOV

E5BF AB

1212

STaSio!

Esea AS

1213

STOSIo!

E5Cl E421

MOV

1214

AX,1414H

AX.OIOIH

IN

AL.INTAOI

ESC3 24FC

1215

AND

AL.OFCH

E5C5 E621

1216

OUT

INTAOl,AL

ESC7 83fDoa

1217

CMP

BP,QOOOH

EseA 7419

1219

JE

FlSA_O

1218

;RS232 DEFAULT=Ol

; ENABLE TIMER AND KB INTS
; CHECK FOR BP= NON-ZERO
; (ERROR HAPPENED)

ESCC BAOZ:OO

1220

MOV

OX.2

E5CF E80614

1221

CALL

ERR_BEEP

E502 8E09E890

1222

HOV

51 ,OFFSET F30

E506 Eafll3
ESD9

1223

CALL

P_MSG

E509 9400

DEFAUL1=20

I CONTINUE IF NO ERROR
2 SHORT BEEPS (ERROR)
LOAD ERROR MSG

1224
1225

MOV

AH .00

ESUB C016

1226

INT

16M

ESOD 80FC3B

1227

CMP

AH.3BH

(5EO 7SF7

1228

JNE

; WAIT FOR 'Fl' KEY

ESE2 EBOE"IO

1229

ESES

1230

ESE5 803E120001

1231

ESE A 7406

In2

ESEC BAOlao

1233

E5EF E8E613

1234

CALL

ERR_BEEP

ESF2 AOlooa
ESF; 2401

1235

MOV

AL.BYTE PTR EQUIP_FLAG

1236

AND

Al.OOOOOOOIB

;

ESF7 7503

1237

JNl

FlSB

; CONTINUE WITH BRING-UP

E5F9 E95FFA

1238

Fl5A:

JMP

F15A

; BYPASS ERROR

eMP

MFG_1ST, 1

; MFG MODE

JE

F15A

; BYPASS BEEP

MOV

OX,l

; 1 SHORT BEEP (NO ERRORS)

JMP

START

ESFC 2AE4

1239

SUB

AH,AH

E5FE A04900

1240

MOV

AL, CRT_MODE

E601 COlO

1241

INT

10H

f603

1242

f603 BDA3f990

1243

MOV

BP,OFFSET F4

MOV

SI.O

FI5B:

; GET SWITCHES
'LOOP rOST' SWITCH ON

; CLEAR SCREEN

FISC:

f607 BEOOOO

1244

E60A

1245

EbOA 2E885600

1246

MOV

DX,CS:[BP]

; GET PRINTER BASE ADDR

E60E 80M

1247

MOV

AL.OAAH

; WRtTE DATA TO PORT A

1248

FIb:

PRT_BASE:

OUT

DX,AL

E6l1 IE

1249

PUSH

OS

; BUS SETTLEING

E612 EC

1250

IN

AL,DX

; READ PORT A

E613 IF

1251

POP

OS

E614 :stAA

1252

CMP

Al,OAAH

; DATA PATTERN SM1E

E616 7505

1253

JNE

F17

; NO - CHECK NEXT PRT CD

E618 895408

1254

MOV

PRINTER_BASE[SI1,DX

; YES - STORE PRT BASE AOOR

E61B 46

1255

INC

SI

; INCREMENT TO NEXT WORD

fblC 46

1256

INC

SI

E610 EE

F17:

f61D

1257

f61D 45

1258

INC

BP

f61E 45

1259

INC

BP

E6lF 81FDA9F9

1260

eMP

BP,OFFSET F4E

; POINT TO NEXT BASE ADDR
; ALL POSSIBLE AODRS CHECKED?

E623 75f5

1261

JNE

F16

E625 Beoooo

1262

MOV

BX.O

; POINTER TO RS232 TABLE

E628 BAFA03

1263

MOV

DX.3FAH

; CHECK IF RS23.2

E628 EC

1264

IN

AL,DX

; READ INTR 10 REG

f62t A8F8

1265

TEST

AL,OF8H

f62E 7506

co

1 ATTCH?

1266

JNZ

FI8

f630 C7D7FaC)

1267

HOV

RS232_BASE( BX] ,3F8H

E634 43

1268

INC

BX

E635 43

1269

INC

BX

E636

1270

f636 SAFAD2

1271

MOV

DX,2FAH

; CHECK IF RS232

E639 EC

1272

IN

Al.DX

; READ INTERRUPT 10 REG

E63A A8F8

1273

TEST

AL,OF8H

F18:

f63t 7506

1274

JNZ

n9

f63E C707FeD2

1275

MOV

RS232_BASE [BX 1, 2F8H

E642 43

1276

INC

BX

INC

BX

E643 43

SETUP RS232 CO #l ADDR

1277

co

2: ATTCH

; SETUP RS232 CD #2

1278
1279

j----- SET UP EQUIP FLAG TO INDICATE NUMBER OF PRINTERS AND RS232 CARDS

1280
; BASE_END:

E644

1281

E644 8BC6

1282

MOV

AX,SI

; 51 HAS 2* NUMBER OF RS232

E646 B103

1283

MOV

CL.3

; SIIIFT COUNT

E648 0::C8

1284

ROR

AL.CL

; ROTATE RIGHT 3 POSITIONS

5-40 System BIOS

F19:

LOC OBJ

LINE

SOURCE

E64A OAtl

1285

OR

E64C AlllOO

1286

MOV

BYTE PIR EQUIPJLAG+l,Al

EMF BADI02

1287

MOV

OX.20lH

E652 EC

Al,OX

Al,BL

1288

IN

E653 90

1289

NOP

E654 90

1290

NOP

; OR IN THE PRINTER COUNT

1291

NOP

E656 A80F

1292

TEST

Al,OFH

f658 7505

1293

JNZ

F20

E65A 800ElIOOI0

1294

OR

BYTE PTR EQUIP _FLAG+l, 16

E65F

1295

E655 90

; STORE AS SECOND BYTE

; NO_GAME_CARD

flO:

1296

1297
1298

;----- ENABLE NMI INTERRUPTS
IN

AL,PORT_B

E661 De 30

1300

OR

Al.301{

E663 E661

1301

OUT

PORT_B,Al

AND

Al,OCFH

E65F E461

12:99

E66S 24CF

1302

E667 E661

1303

OUT

pOln_B,AL

E669 B080

1304

MOV

AL,BCH

E66B EbAD

1305

OUT

aMH ,Al

E66D

1306

E66D C019

1307

INT

19H

; RESET CHECK ENABLES

EHABLE NMI INTERRUPTS

F2I:

LOAD_BOOT _STRAP:

; GO TO THE BOOT LOADER

1308
1309

; --------- - --- - - ----------- ----- -- - - ----- - - - --- --- - - - - - -- -- - - - - --

1310

; THIS SUBROUTINE PERFORMS A READ/WRITE STCRAGE TEST ON A BLOCK;

1311
1312

; ENTRY REQUIREMENTS:

OF STORAGE.

1313

ES

=
=

ADDRESS Of STORAGE SEGMENT BEING TESTED

1314

OS

1315

ex = WORD

1316

ADDRESS OF STORAGE SEGMENT BEItlG TESTED
COUNT Of STORAGE BLOCK TO BE TESTED

EXIT PARAMETERS:

1317

ZERO FLAG

=

0 IF STORAGE ERROR (DATA COMPARE OR PARITY

1318

CHECK.

1319
1320

BIT PATTERN OF THE EXP!:.CTED DATA PATTERN VS THE ACTUAL

AL=O DENOTES A PARITY CHECK.

ELSE AL=XOR'EO

DATA READ.

1321

i

1322

i -- - ------- - - - - - - - - - ------ ------- - - ---- ----- ------- -- - - ----------

AX,BX.CX.DX,DI, AND 51 ARE ALL DESTROYED.

1323

EMF

1324

E66F Fe

1325

CLO

E670 2BFF

1326

SUB

E67Z 2:8CO

1327

E674

1328

E674 8805

STGTST_CNT

PROt

NEAR
; SET DIR FLAG TO INCREMENT
; SET DI=OffSET 0 REL TO ES REG

SUB

01,01
AX,AX

1329

MOV

[01 J ,AL

; ON FIRST BYTE

; SETUP FOR O->FF PATTERN TEST

C2_1:

E676 SACS

1330

MOV

E678 32C4

1331
1332

XOR
IN;!

Al,[OI J
AL,AH

; O.K.?

E67A 7540

C7

; GO ERROR IF NOT

E67e FEC4

1333

INC

AH

E67E BAC4

1334

MOV

E680 75Fl

1335
1336

Al,AH
C2_1

E682 8809

MOV

E684 OIE3

1337

f686 B8AAAA

1338

E669 BA55FF

Ebat F3

JNZ

I LOOP TILL WRAP THROUGH FF

SHL

eX,ex
ax.l

; CONVERT TO A BYTE COUNT

MOV

AX,OAAAAH

I GET INITIAL DATA PATTERN TO WRITE

1339

MOV

DX,OFF55H

; SETUP OTHER DATA PATTERNS TO USE

1340

REP

STOSIooI

; FILL STOiUGE LOCATIONS IN BLOCK

1341

IN

AL,PORT_B

OR

AL,OOllOOOOB

OUT

PORT_B,AL

E694 90

1343
1344

E695 24CF

1345

ANO

E697 E661

1346

OUT

PORT_B,AL

E699

1347

E699 4f

1348

DEC

01

; POINT TO LAST BYTE JUST WRITTEN

E69A FO

1349

STO

E698

1350

E698 8BF7

1351

MOV

SI,DI

; INITIALIZE DESTINATION POINTER

MOV

eX,ax

; SETUP BYTE COUNT FOR LOOP

i SAVE WORD COUNT OF BLOCK TO TEST

E680 AS

f68E E461
E690 000
E692 E661

i TOGGLE PARITY CHECK LATCHES

NOP

AL,llOOllllB

C3:
; SET DIR

F LAG TO GO BACKWARDS

C4:

E690 88CB

1352

E69F

1353

E69F At

1354

Loose

E6AD 32C4

1355

XOR

Al,AH

; DATA READ AS EXPECTED ?

f6A2 7525

1356

JHE

C7

;

E6A4 BAC:::

1357

MOV

EbA6 AA

1358

5TOSB

foA7 E2F6

1359

LOOP

C5:

INNER TEST LOOP
; READ OLD TEST BYTE FROM STORAGE
~IO

[SIIEbAO 32

- GO TO ERROR ROUTINE

Al,Ol

I GET NEXT DATA PATTERN TO WRITE

CS

; DECREMENT BYTE COUNT ANO LOOP

I WRITE lNTO LOC JUST READ [DIh

ex

1360
EbA9 22E4

1361

At'"

AH,AH

; ENDING ZERO PATTERN WRITTEN TD STG

EbAa 7416

1362

JZ

C6X

; YES -

?

RETURN TO CAllER WITH AL=O

System BIOS 5-41

LaC OBJ

LINE

SOURCE

1363

MOV

AH,AL

; SETUP NEW VALUE FOR COMPARE

fbAF 86F2

1364

XCHG

DH,DL

; HOVE NEXT DATA PATTERN TO OL

E6B1 22f4

1365

ANa

AH,AH

; READING ZERO PATTERN THIS PASS ?

E683 7504

1366

JNZ

C6

; CONTINUE TEST SEQUENCE TILL ZERO DATA

E6B5 BAD4

1367

MOV

DL,AH

; ELSE SET ZERO FOR END READ PATTERN

E6B7 fBEO

1368

JMP

C3

; AND MAKE FINAL BACKWARDS PASS

E669

1369

E669 Fe

1370

EbAD 8AEO

C6:

CLO

; SET DIR FLAG TO GO FORWARD

E6BA 47

1371

INC

OI

EbBB 740E

1372

JZ

C4

j

E660 4F

1373

DEC

OI

; ADJUST POINTER

fbBE 8A0100

1374

MOV

DX,OOOOIH

; SETUP 01 FOR PARITY BIT AND 00 FOR EHD

JMP

C3

; READ/WRITE BACKWARD IN STG

IN
AND

AL,PORT_C

; DID A PARITY ERROR OCCUR?

AL,OCOH

; ZERO fLAG WILL BE OFF PARITY ERROR

MOV

AL,OOOH

; AL:::O DATA COMPARE OK

EbCl EBDb

1375

EbCl

1376

E6C3 E462

1377
1378

f6CS 24CO
E6C7 BOOO
E6C9

1379
1380

E6C9 Fe

1381

EbCA C3

READ/WRITE FORWARD IN STG

C6X:

C7:
CLO

1382-

1383

; SET POINTER TO BEG LOCATION

; SET DIRECTION F LAG TO INC

RET
STGTST_CNT

ENDP

1384

; -- ------ - - --- -- -- - -- - -- -------- -- - - -- - - --- - - - ----------~- --- - - - ------ - ---

1385

;

PRINT ADDRESS AND ERROR MESSAGE FOR ROM CHECKSUM ERRORS

1366

E6CB

1387

ROM_ERR PROC

E6CB 52

1388

PUSH

OX

Ebce 50

1389

PUSH

AX

Ebeo BCDA

1390

MOV

OX,OS

EbCF i688361S00

1391

MOV

ES:HFG_ERR_F LA:;, DH

E6D4 BIFAQOC8

1392
1393

CMP

ox.oceOOH

E608 7COO

1394

JL

RON_ERR_BEEP

I GIVE CRT CARD FAll BEEP

EbDA fBFDl8

1395

CALL

PRT_SEG

i

; DISPLAY ERROR MSG

NEAR
; SAVE POINTER
; GET ADDRESS POINTER

E600 8EOAF990

1396

MOV

SI,OFFSET F3A

f6El EeCSll

1397

CALL

E_HSG

fbE4

1398

ROM_ERR_END:

E6E4 58

1399

f6ES 511.

1400

POP
pop

f6E6 C3 ,
f6E7

1401

RET

1402

j

CRT CARD IN ERROR?
PRINT SEGEMENT IN ERROR

AX
OX

ROM_ERR_BEEP:

f6E7 811.0201

1403

MOV

DX.OI02H

EI!)EA E8EB12

1404

CALL

ERR_BEEP

E6ED EeFS

1405

JMP

SHORT ROM_ERR_END

1406

; < ><><><><><><><>< ><>< >< ><><><>
; <><><>CHECKPOINTS CO->F4<><><>

; BEEP 1 LotlG, 2 SHORT

ROM_ERR ENoP

1407
1408

;--- INT 19 ---------------------------------------------

1409

; BOOT STRAP LOADER

1410

TRACK 0, SECTOR 1 IS READ HHO THE

1411

BGOT LOCATION (SEGMEtH 0, OFFSET 7COO 1

1412

AND eOtHROL IS TRANSFERRED THERE.~

1413

E6Fi2

1414

IF THERE IS A HARDWARE ERROR CONTROL IS

1415

TRANSFERRED TO THE ROH BASIC ENTRY POINT.

1416

; - ----- ----- - --------- - --------- ------- ---- - - --- - - --- - ---

1417

ASSUME

1418

ORG

CS:CODE,oS:ABSO
OE6F2H

1419

foF2

1420

PROC

foF2 FB

1421

STI

E6n 28CO

1422

SUB

AX.AX

foFS eE08

1423

MOV

DS,AX

NEAR
ENABLE INTERRUPTS
ESTABLISH ADDRESSING

1424
1425

;----- RESET THE DISK PARAMETER TABLE VECTOR

1426
f6F7 C7067800C7fF

1427

MOV

WORD Pl R DISK_POINTER, OFFSET DISK_BASE

EbFD 8COE7AOO

1428

MOV

WORD PTR OISK_POINTER+2,CS

1429
1430

;-----

LOAD SYSTEM FRatl DISKETTE -- CX HAS RETRY COUNT

1431

f701 890400

1432

f704

1433

HOV

CX,4

HI:

; SET wETR: COUNT
; IPL_S)STEM

f704 51

1434

PUSH

ex

f705 8400

1435

tlOV

AH ,0

; RESET THE DISKETTE SYSTEM

E707 CDl3

1436

INT

13H

; DISKETTE_IO

E709 nOF

1437

JC

H2

; IF ERROR, TRY AGAIN

E70B 680102

1438

MOV

AX,20nl

; READ IN THE SINGLE SECTOR

nOE 2802

1439

SUB

DX,DX

; TO THE BOOT LOCATION

5-42 System BIOS

; SAVE RETRY COUNT

LOC OBJ

LINE

SOURCE

E710 8EC2:

1440

MOV

ES,DX

E7ll BBDD7e

1441
1442

MOV

BX.OFFSET BOOT_LOCN

; DRIVE 0, HEAO 0

E715 890100

1443

MOV

eX.I

I SECTOR 1, TRACK 0

E718 C013

1444

INT

13H

; DISKETTE_IO

E7lA
E7lA 59

1446

POP

cx

; RECOVER RETRY COUNT

E71B 7304

1447

JNC

H4

i

CF SET BY

E7lD E2E5

1448

lOOP

H'

j

00 IT FOR RETRY TINES

1445

HZ:
UI~SUCCESSFUL

READ

1449
1450

;----- UNABLE TO IPL FROM THE DISKETTE

1451
E71F

1452

E71F CD18

1453

H3:
INT

; GO TO RESIDENT BASIC

'8H

1454
1455

j-----

E721

1456
1457

H4:

E721 EM07eODOO

1458

IPL WAS SUCCESSFUL

JHP

1459

BOOT_LOCH
WOP

1460

1461

i

-----INT 14-------------------------------------------------------------

1462:

; R52:32_10

1463

THIS ROUTINE PROVIDES BYTE STREAM liD TO THE COMMUNICATIONS

1464

PORT ACCORDING TO THE PARAMETERS:

1465

{AH 1=0

1466

INITIALIZE THE COM.'IUtHCA TIm~s PONT
(All HAS PARAMETERS FOR INITIALIZATION

1467

1468
----- BAUO RATE --

-PA~ITY-­

000 - 110
001 - 150

XO - NONE

1471
147Z

010 - 300

11 -

1473
1474
1475

011 - 600

1476

110 - 4800

1469
1470

1477

100 -

01 - ODD

STOPBIT
I

1 - 2

--WORO LENGTH-10 -

7 BITS

II - 8 BITS

EVEN

1200

101 - 2400
III - 9600

1478
1479

ON RETURN, CONDITIONS SET AS IN CALL TO cmlMO STATUS (AH=3)

1480
1481

(AHJ=l

SEND THE CHARACTER IN {All OVER THE CCtltlO LINE
(All REGISTER IS PRESERVEO
ON EXIT. BIT 7 OF AH IS SET IF THE ROUTINE WAS UNABLE

1482

TO TRANSMIT THE BYT[ OF DATA OVER THE LINE.

1483

1484

IF BIT 7 OF AH IS NOT SET. THE REMAUlOER OF AH

1485
1486

IS SET AS IN A STATUS REQUEST. REFLECTING THE

1487

CURRENT STATUS OF THE LINE.
(AH )=2

RECEIVE A CHARACTER IN (AL) FROM cmlMO LINE BEFORE

1488

RETURNING TO CALLER

1489

ON EXIT. AH HAS THE CURRENT LINE STATUS, AS SET BY THE

1490

THE STATUS ROUTINE. EXCEPT THAT THE ONLY BITS

1491

LEFT ON ARE THE ERROR BITS (7.4.3,2,1)

1492

IF AH HAS BIT 7 ON (TIME OUT) THE REMAHUNG

1493

BITS ARE NOT PREDICTABLE.

1494

THUS. AH IS NON ZERO ONLY I-lHEN AN ERROR

1495

OCCURRED.

1496

(AHl=3

RETURN THE COM~IO PORT STATUS IN (AX)

1497
1498

BIT 7 = TIME OUT

1499

BIT 6 = TRANS SHIFT REGISTER EMPTY

AH CONTAINS THE LINE STATUS

1500

BIT 5 = TRAN HOLDING REGISTER EMPTY

1501

BIT 4 = BREAK DETECT

1502

BIT 3 = FRAMING ERROR
BIT 2 ~ PARITY ERROR
BIT I = OVERRUN ERROR

1503

1504

~

1505
1506

BIT 0

1507

BIT 7 = RECEIVED LINE SIGNAL DETECT

1508

BIT 6 = RING INDICATOR

1509

BIT 5 = DATA SET READY

DATA READY

AL CONTAINS THE HOOEM STATUS

= CLEAR

1510

BIT 4

151:'

BIT 3 = DELTA RECEIVE LINE SIGNAL DETECT

1512

BIT 2 = TRAI LING EDGE RING DETECTOR

TO SENO

1513

BIT 1 = DELTA DATA SET READY

1514

BIT 0 = DELTA CLEAR TO SE~m

1515

1516

(oX) = PARAMETER INDICATING WHICH RS232 CARD 10,1 HLOWEOl

System BIOS 5-43

LOC OBJ

LINE

SOURCE

1517
1518
1519

; DATA AREA RS232_BASE CONTAINS THE BASE ADDRESS OF THE 8250 ON THE

CARD LOCATION 400H CONTAINS UP TO 4 RS2.32 ADDRESSES POSSIBLE
DATA AREA LABEL RS232_TIM_OUT IBYTE) CONTAINS OUTER LOOP COUNT

15ZP

VALUE FOR TIMEOUT I DEFA!JlT= 1 )

1521
1522
1523

; OUTPUT

AX MODIFIED ACCORDING TO PARNS OF CALL

1524

1525

ALL OTHERS UNCHANGED

;

----------------------- -- --- -- --- -.,. ------------ ----- - --- ----- -----------

1526

E72:9

1527

E729

1528

ASSUME

CS: CODE, OS: DATA

ORG

OE72.9H

LABEL

OW

WORD
1047

; TABLE OF INlT VALUES

1529

OW

768

; 150

E72D 8001

1530
1531

OW

3B4

I 300

E72F COOO

1532

OW

192

, 600

E731 6000

OW

96

I

E733 3000

1533
1534

OW

4B

1200
; 2400

E735 1800

1535

OW

24

; 4800

oeoo

1536

OW

12

E729 1704
EnB 0003

E737

Al

110 BAUD

; 9600

1537
E739

1538
1539
1540

RS232_10
j -----

PROt

FAR

VECTOR TO APPROPRIATE ROUTINE

1541
E739 FB

1542

5n

E73A IE

1543

PUSH

OS

E73B 52

1544

PUSH

OX

INTERRUPTS BACK ON

E73C 56

51

SAVE SEGMENT

1545

PUSH

E730 57

1546

PUSH

E73E 51

1547

PUSH

CX

E73F 53

1548

PUSH

BX

E740 SBF2

1549

MDV

SI,OX

E742 8BFA

1550

HOV

DI,DX

E744 01E6

1551

5HL

SId

01

i RS232 VALUE TO SI

; WORD OfFSET

E746 EBI013

1552

CAll

DDS

E7 49 BB14

1553

NOV

OX, RS232_BASE[ SI I

E748 OBD2

1554

OR

OX,OX

; TEST FOR 0 BASE ADDRESS

E740 7413

1555

JZ

A3

; RETURN

E74F OAE4

1556

OR

AH,AH

; TEST FOR (AH):;:O

E751 7416

1557

JZ

A4

E753 FECC

1558

DEC

AH

i TEST FOR {AH):;:l

E755 7445

1559

JZ

AS

I SEND Al

DEC

AN

; TEST FOR (AH \:;:2

JZ

Ale

; RECEIVE INTO Al
; TEST FOR (AH ):;:3

E757 FECC

1560

E759 746A

1561

E75B

1562

E75B FECC

; GET BASE ADDRESS

i CQMMUN INIT

A2:

1563

DEC

AH

E750 7503

1564

JNZ

A3

E75F E98300

1565

JHP

A18

E762

1566

E762 58

1567

POP

E763 59

1568

POP

ex
cx

; COMMUNICATION STATUS

A3:

; RETURN FROM RS232

E764 5F

1569

POP

01

E76S SE

1570

POP

51

E766 SA

1571

POP

OX

E767 IF

1572

POP

OS

E768 CF

1573

IRET

i

RETURN TO CALLER, NO ACTION

1574
1575

i----- INITIALIZE THE COMMUNICATIONS PORT

1576
A4:

E769

1577

E769 8AEO

1578

HOV

AH ,AL

E76B B3C203

1579

ADO

ox,

E76E B080

1580

HOV

Al,BOH

E770 EE

1581

OUT

oX,AL

~

; SAVE INIT PARMS IN AH
; POINT TO 8250 CONTROL REGISTER
; SET DlAB:;:1

1582
1583

;----- DETERMINE BAUD RATE DIVISOR

1584
E771 8A04

1585

E773 BI04

1586

NOV

Cl,4

E775 02C2:

1587

ROL

Dl.Cl

E777 81E2:0EOO

HOV

Dl,AH

; GET PARMS TO Ol

1588

AND

OX,OEH

E77B BF2:9E7

1589

HQV

DI,OFFSET Al

j

E77E 03FA

1590

ADD

oI,OX

; pur INTO INDEX REGISTER

E780 8814

1591

MOV

DX,RS2:32_BASEI SI I

: POINT TO HIGH ORDER OF DIVISOR

[782: 42:
[783 2E8A4S01

\592:

INC
NOV

ox

1593

5-44 System BIOS

Al,CS: [01 hI

; ISOLATE THEM

i

BASE OF TABLE

GET HIGH ORDER OF DIVISOR

LOC OBJ

LINE

SOURCE

E787 EE

1594

OUT

OX.Al

E788 4A

1595

DEC

OX

E789 2E8A05

1596

MOV

AL.SC:[OIi

; GET

E7ec EE

1597

OUT

DX.AL

; SET LOW CF DIVISOR

E780 83C203

1598

ADO

DX.3

E790 8AC4

1599

MOV

E792: 241F

1600

AND

Al,OIFH

E794 EE

1601

OUT

DX.Al

E795 4A

1602:

DEC

OX

; SET MS OF DIV TO 0

lO~

ORDER Of DIVISOR

I GET PARMS BACK

AL.AH

STRIP OFf THE BAUD BITS
LINE CONTROL TO 8 BITS

;

E796 4A

1603

DEC

E797 BOOO

1604

MOV

Al.O

E799 EE

1605

OUT

DX.Al

; INTERRUPT ENABLES ALL OFF

E79A EB49

1606

JMP

SHORT AlB

; COM_STATUS

OX

1607

1606

;----- SEND CHARACTER IN fAll OVER COMMO LINE

1609
E79C

1610

E79C 50

1611

PUSH

AX

E790 83C204

1612
1613

ADD

DX.4

i

HOV

Al,3

; DTR AND RTS

OUT

DX,Al

i DATA TERMINAL READY. REQUEST TO SEND

OX

; MODEM STATUS REGISTER

E7AO B003

E7A2 EE

AS:
; SAVE CHAR TO SEND
MeDEM CONTROL REGISTER

E7A3 42

1614
1615

E7A4 42

1616

WC

OX

E7AS B730

1617

MOV

BH, 30H

E7A7 E84800

1618

CALL

WAITJOR_STATUS

ARE BOTH TRUE

E7AA 7408

1619

JE

A9

YES, READY TO TRANSMIT CHAR

E7AC

1620
1621

POP

CX

MOV

Al,Cl

E7AF

1622
1623

E7AF SOtteD

1624

OR

AH ,BaH

INDICATE TINE OUT

E782 EBAE

1625

JMP

AJ

RETURN

DEC

OX

LINE STATUS REGISTER

MOV

BH,20H

JNZ

A7

E7At 59
E7AO SACl

E7B4

1626

E794 4A

1627

E7B5

1628

E785 BnD

1629

E7B7 E83800

1630

E7BA 75FO

1631

INC

DATA SET READY & ClEAR TO SEt~D

A7:
; RELOAD DATA BYTE

AB:

A9:
AID:
IS TRANSMITTER READY
; TEST FOR TRANSMITTER READY
RETURN !-lITH TIME OUT SET

All:

E7se

1632:

E7se 83EA05

1633

SUB

OX,s

; DATA PORT

E7BF 59

1634

POP

CX

; RECOVER IN CX TEMPORARILY

E7CO BACl

1635

MOV

Al,Cl

; MOVE CHAR TO AL FOR OUT, STATUS IN AH

E7C2 EE

1636

OUT

DX,AL

OUTPUT CHARACTER

1637

JMP

AJ

RETURN

E7e3 EB9D

1638
1639

;----- RECEIVE CHARACTER FROM COMMO LINE

1640

E7es

1641

Al2 :

E7e5 83C204

1642

ADD

E7e8 8001

1643

MOV

AL,l

E7eA EE

1644

OUT

DX,Al

E7eB 42

1645

INC

OX

nee

1646

INC

OX

42

E7CO

1647

E7CO 872:0

DX,4

MODEM cmHROl REGISTER

I

DATA TERMINAL READY

MODEM STATUS REGISTER

A13:

; IoIAIT_DSR
; DATA SET READY

HAS

NOV

BH.20H

E7eF E8200D

1649

CALL

!-IAIT_FOR_STATUS

; TEST FOR DSR

E7D2 750B

1650

JNZ

AS

; RETURN IoIITH ERROR

DEC

ox

E704

1651

E704 4A

1652:

E70S

1653

E705 B701

A15:
LINE STATUS REGISTER

A16:
RECEIVE BUFFER FULL

1654

MOY

BH.l

E707 E81800

1655

CALL

!-IAITJOR_STATUS

;

f70A 7503

1656

JNZ

A8

; SET TIME OUT ERROR

TEST FOR REC. BUFF. FUll

; GET_CHAR

Al7:

E70t

1657

E70C 80E41E

1658
1659

AND

AH, 000 1111 OB

HOV

DX,f~S232_BASE[

1660

IN

AL,DX

; GET CHARACTER FROM LnlE

1661

JMP

AJ

; RETURN

E70F 8B14

E7El EC
E7E2 E97DFF

TEST FOR ERR CONDITIONS ON PEev CHAR

SI I

; DATA PORT

1662
1663

;----- COMNO PORT STATUS ROUTINE

1664
E7E5

1665

AlB:

E7E5 8814

1666

HOV

E7E7 83C205

1667

ADD

OX,S

; CON1ROl PORT

E7EA EC

1668

IN

AL,DX

; GET LINE CONTROL STATUS

E7EB BAED

1669

~OV

AH,AL

E7ED 42

1670

INC

OX

PUT IN AH FOR RETURN
; POINT TO MODEM STATUS REGISTER

System BIOS 5-45

LaC OBJ
E7EE EC

E7EF E970FF

LINE

SOURCE
; GET MODEM COIlTROL STATUS

AL,DX
A>

IN

1671
1672

JMP

RETURN

i

1673
1674

WAIT FOR STATUS IWUTlNE

j

1675
1676

; ENTRY:

1677

BH=STATU5 BIT(S) TO LOOK FOR,
OX=ADDR. OF STATUS REG

1678

1679
1680

; EXIT:
ZERO FLAG ON

= STATUS

FOUND

1681

ZERO FLAG OFF == TIMEOUT.

1682
1683

AH=LAST STATUS READ

;

E7F2

1684

WAIT_FOR_STATUS PROC

E7F, BAS07e

1685

E7F5

1686
1687

WFSO:

E7FS 26C9
E7F?

1688

WFS1 :

-- - -- -- --------------------------- - ----NEAR

MOV

BL ,1<5232_ TIM_OUTE 01

SUB

CX,CX

J

LOAD OUTER LOOP COUNT

I

E7F7 EC

1689

IN

AL,OX

; GET STATUS

E7FS BAEO

1690
1691

MOV

AH,AL

; MOVE TO AH

ANIl

AL,BH

I

E7Fe 3AC7

1692

; EXACT LY

WFS_END

; RETURN

E800 E2F5

1693
1694

CMP
J,

AL,BH

E7FE 7408

LOOP

WFSI

; TRY AGAIN

E802 FEce

1695

DEC

BL

1696

JHZ

WFSO

OR

SH,SH

E7FA 22C7

E804 75EF

ISOLATE SITS TO TEST

=

TO MASK

wITH

ZERO

FLAG

ON

1697
E806 OAFF

1698

E808

1699
1700

WFS_ENO:

1701
1702:

WAIT_FOR_STATUS ENOP

E808 C3

; SET ZERO FLAG OFF

RET
ENOP

1703
E809 4552524F52ZE20

1704

no

'HmOR.

DB

(RESUME = Fl KEy)',13,lO

ERROR PROMPT

28524553554045
2:03020224631222048455929

E823 00
E824 OA

1705
1706

; ---- INT 16 ----------- - - -- - ---------- - --- ------ - ------ - - - ---- -- - ------I KEYBOARD 1/0

1707
1708

THESE ROUTINES PROVIDE KEYBOARD SUPPORT

1709
1710

INPUT
tAH)=O
(AH)=l

SET THE Z flAG TO INDICATE IF AN ASCII CHARACTER IS

1713

AVAILABLE TO BE READ.

1714

(ZF)==1 -- NO CODE AVAILABLE

1715

(ZF )=0 -- CODE IS AVAILABLE

1716

IF ZF = 0, THE NEXT CHARACTER IN THE BUFFER TO BE READ

1717

IS IN AX,

1718

(AH)=Z

Atm THE ENTRY REMAINS IN THE BUFFER

RETURN THE CURRENT SHIFT STATUS IN Al REGISTER
THE BIT SETTINGS fOR THIS CODE ARE INDICATED IN THE

1719

1720

THE EQUATES FOR KBJLAG
; OUTPUT

1721
1722
1723

AS NOTED ABOVE, ONLY AX AND FLAGS CHANGED
ALL REGISTERS PRESERVED

; -------- ---

1724

------ --- - ---------------------------------------------------

1725

ASSUME

ORG

EaZE

1726
1727

KEYBOARD_IO

EaZE FB

1728

ST!

E8lF IE

172:9
1730
1731

PUSH

EaZE

READ THE NEXT ASCII CHARACTER STRUCK FROM THE KEYSOARD
RETURN THE RESULT IN tAL), SCAN CODE IN tAH)

1711
1712

CS: CODE, OS: DATA
OE82EH
PROC

FAR

os

PUSH

BX

CALL

DOS

OR

AH,AH

E836 740A

1732
1733

JZ

E838 FEee

1734

DEC

Kl
AH

Ea3A 741E

1735

JZ

[a3e FEee

1736

DEC

K'
AH

[83E 7426

1737

JZ

K3

E840 EBZC

1738

JMP

SHORT INTlO_END

E830 53
E831 E82512
[834 OAE4

,
,
,

,
,

INTERRUPTS BACK ON
SAVE CURRENT OS
SAVE SX TEMPORARILY
AH=O
ASCII_READ

,

AH::1

I

SHIFT_STATUS

,
,

ASCII_STATUS
AH==2

EXIT

1739

E842

1740

;----- READ THE KEY TO FIGURE OUT WHAT TO 00

1741
1742

K1:

5-46 System BIOS

; ASCII READ

laC OBJ

LINE

SOURCE
; INTERRUPTS BACK ON DURING lOOP

£84-2 FB

1743

E843 90

1744-

STI
NOP

£844 FA

1745

CLI

E845 881EIAOQ

1746

NOV

ex, BUfFER_HEAD

;

ALLOW AN INTERRUPT TO OCCUR

i

INTERRUPTS BACK Off

; GET PUlNTER TO HEAD OF BUFFER

1747

CNP

ex.SUFFER_TAIl

; TEST END OF BUFFER

f840 74F3

1748

JZ

Kl

;

E84F 8807

1749

NOV

AX,[BXl

; GET SCAN CODE AND ASCII CODE

E849 381E1COO

LOOP UIlTIL smlETtHNG IN BUFFER

1750

CALL

K4

; MOVE POINTER TO NEXT POSITION

[854 891ElAOO

1751

NOV

BUFFeR_HEAD,BX

; STORE VALUE IN VARIABLE

E858 EB14

1752

JNP

SHORT INTlO_ENO

; RETURN

E851 E81DOO

1753

1754

,----- ASCII STATUS

1755
E8SA

1756

K2 :

EBSA FA

1757

CLI

ESSS BBIEIAOO

1758

NOV

BX. CUF FER_HEAD

j

E85F 381EICOO

1759

CNP

ex.BUFFER_TAIL

; IF EQUAL Il=l) THEN NOTHING THERE

E863 8807

1760

NOV

AX,[BX)

E865 FB

1761

STI

E866 5B

1762
1763

POP

BX

; RECOVER REGISTER

E867 IF

POP

OS

1 RECOVER StGMENT

E868 CA0200

1764

RET

2

j

;' WTERRUPTS OfF
GET HEllO POINTER

; INTERRUPTS BACK ON

THROW AWAY fLAGS

1765

1766

;----- SHIFT STATUS

1767
E86B

1768

E8bB A01700

1769

K3:

NOV

AL,KBJU.G

; GET THE SHIFT STATUS fLAGS

EabE

1170

E86E 58

1771

POP

BX

; RECOVER REGISTER

E86F IF

1772

POP

OS

E870 CF

1773

IRET

1774

; RECOVER REGISTERS
j

RETURN TO CALLER

j

MOVE TO NEXT WORD IN LIST

END?

1775
1776

; ----- INCREMENT A. BUFFER POINTER

1777

f871

1778

E871 43

1779

INC

BX

E872 43

1780

INC

BX

E873 3Bl£8200

1781

CNP

eX,BUFFER_ENO

;

K4

PROC

NEAR

AT END OF BUFFER?

E877 7504

1782

JNE

KS

; NO, CONTI NUE

E879 881E8000

1783

NOV

ex, BUFFER_START

;

£870

178(1

E870 C3

1785
1786

YES, RESET TO BUFFER BEGINNING

K5;

RET
K4

ENOP

1787
1788

j-----

TABLE OF SHIFT KEYS AND MASK VALUES

1789

fa7E

1790

LABEL

£87E 52

1791

DB

INS_KEY

E87F 3A

1792

DB

CAPS_KEY ,NUM_KI::Y ,SCROLL_KEY ,ALT _KEY .CTl_KEY

DB

LEFTJEY.RIGHTJEY

EOU

$-K6

BYTE
;

INSERT KEY

E880 45

E881 46
E882 38

E883 10
E884 2A

1793

Eass 36
0008

1794

KbL

1795
1796

;----- SHIFT_MASK_TABLE

1797

E886

1798

E886 80

1799

DB

E887 40

1800

DB

1801

DB

K7

LABEL

BYTE

E88S 20

E889 10
ESSA 08
E8SB 04

EB8C 02

LEFT_SHIFT> RIGHT_SHIFT

E880 01

1802
1803

j-----

SCAN COOE TABLES

1804

E88E 18

1805

K8

DB

27,-1.0.-1.-1.-1.30.-1

fS8F FF
£890 00
E891 FF
E892 FF

System BIOS 5-47

LOC OBJ

LINE

SOURCE

E893 Ff
[894 IE
E895 FF

£896 Ff

1806

DB

-1.-1,-1,31,-1,127,-1,17

1807

DB

23,5,18,20,25.21. <;1, IS

1808

DB

16.27,29,10.-1,1,19

1809

DB

4,6.7.8,10,11,12,-1,-1

1810

DB

-1, -1,28.26,24) 3 > 22.2

1811

DB

14,13,-1, -1.-1 ,-1.-1.-1

E897 FF

E898 fF

E899 IF
E89A FF
E898 7F

E89C FF

E890 11
E89E 17
E89F 05
EBAO

12

EBAI 14
E8A2 19

[8A3 15
E8A4 09
E8A5 OF

E8A6 10

E8A7 18
E8A8 10
E8A9 OA

EeAA FF

EBAS 01
EBAC 13
EBAD 04

EBAE Do
E8AF 07

E880 08

E861 DA

E8B2 08
£883 DC
E884 FF

EeBS FF
E886 FF

E8B7 Ff
E8B8 Ie
E8B9 lA
EBBA 18
E85B 03

EBBC 16
EBBO 02
EBBE DE

E8BF 00
£8CO FF

E8Cl FF
E8C2 FF
£8C3 ff
E8C4 FF

E8C5 FF
£8C6 20

1812

DB

,-1

E8C7 Ff
1813

; ----- eTL TABLE SCAN

E8C8

1814

K9

E8C8 5E

lB15

DB

94,95.96,97,98.99,100,101

1816

DB

102,103,-1,-1.119,-1,132,-1

1817

DB

lls,-l, 116 ,-1,117,-1.118,-1

LABEL

BYTE

E8C9 SF
EBCA 60

E8CB 61
EBce 62
EBCD 63
EBCE 64
EBCF 65
E8DO 66
E8Dl 67
E802 FF
E803 FF
E804 77
E80S FF
E8D6 84
E8D7 FF
E808 73
E8D9 FF
E80A 74
E8DB FF

Eeoc 75
E800 FF

5-48 System BIOS

LOC OBJ

LINE

SOURCE

f8DE 76

f80r FF
f8EO FF

EeEI
E8EI

lB

1818

DB

1819

i-----

1820

KID

-1

LC TABLE

LABEL

BYTE

1821

DB

DIBH. ' 1234567890-::' • 08H. 09H

1822

DB

'qwertyuiop[ J' ,ODH,-i, 'asdfghjkl;' ,027H

1823

DB

bOH > -1.5CH. 'zxcvbnm •. /' ,-1, '*' .-1.'

DB

-1

f8E2 31323334353637

3839302030
EBEE 08

E8EF 09
[BfO 71776572747975
696F70585D

f8FC 00
EBFO FF

faFE 6173646/;>67686"

666e38
E908 27
E909 60
E90A FF
E90B SC
E<;IOC 7A786376626E60

2CZE2F
E9l6 FF
E917 <:A

E9le FF
E919 20
E91A FF

1824
1825

;----- UC TABLE

E91B

1826

Kll

E91B 16

1827

DB

27,'

1828

DB

'Ql,.lERTYUIOPO' • OOH. -1. 'ASDfGHJKL:'"

1829

DB

07EH,-I,' IZXCVBNM<>?' .-1,0.-1.'

LABEL

BYTE
~~#&',

37.05EH.' &*( 1_+' ,08H ,0

E9le 21402324

EnD 25
E921 SE

E922 262A28295F2B
E928 08

E929 00
E92A 51574552545955

494f507B70
E936 00

E937 Ff
E938 4153444647484A

484C3A22

[943 7E

, ,-1

E944 FF
E945 7C5A584356424E
403C3E3F
E950 FF
E951 00
E952 FF
E953 20
E954 FF
1830

;----- UC TABLE SCAN

E955

1831

K12

E955 54

1832

DB

84.85.86.87.88.89.90

1833

DB

91,92.93

LABEL

BYTE

E956 55
E957 56
E958 57
E959 58
E95A 59
E95B SA
E95C 58
E950 SC
E 95E 50
1834

;----- AlT TABLE SCAN

E95F

1835

K13

E95F 68

1836

DB

104.1 05.I 06.107.108

1837

DB

109.110.111.112,Il3

LABEL

BYTE

E960 69
E961 6A
E962 6B
E963 6C
E964 60
E965 6E
E966 6F
E967 70
E968 71
1838
E969

1839

j-----

K14

NUM STATE TABLE
LABEL

BYTE

System BIOS 5-49

LOC OBJ
E969 37383920343536
29313233302E

LINE

SOURCE
DB

1840

'789-456+1230.'

1841

; ----- BASE CASE TABLE

E976

1842

K15

E976 47

1843

DB

71.72,73,-1,75.-1.77

1844

DB

-1.79.80.81,82: ,83

LABEL

BYTE

E977 48
E978 ~9

E979 FF
E97A. 46

E97B FF

E97C 40
E970 FF
E97E 4F

E'nF 50
E98D 51

E981 S2
E982 53
1845
1846

; ----- KEYBOARD INTERRUPT ROUTINE

1847
E987

1848

DRG

OE9B7H

E9S7

1849

E987 FB

1850

STI

E988 50

1851

PUSH

E989 53

1852

PUSH

BX

E9SA 51

1853

PUSH

ex

E98B 52

1854

PUSH

ox

KB_INT

PROC

FAR

; ALLOW FURTHER INTERRUPTS
AX

E<;l8C 56

1855

PUSH

51

E980 57

1856

PUSH

01

E<;I8E lE

1857

PUSH

OS

E98F 06

1858

PUSH

E990 Fe

1859

eLD

E991 E8e510

1860

CALL

DDS

E994 E460

1861

IN

AL,KB_DATA

; READ IN THE CHARACTER

E996 50

PUSH

AX

; SAVE IT

[997 E461

1862
1863

IN

Al,KB_CTL

; GET THE COHTROL PORT

E999 BAED

1864

MOV

AH,Al

; SAVE VALUE

E99B OC80

1865

DR

Al,80H

; RESET BIT FOR KEYBOARD

E990 E661

1866

OUT

KB_CTl"Al

E99F 86EO

1867

XCHG

AH,Al

; GET BACK ORIGIHAl CONTROL

E9AI E661

1868

OUT

KB_CTL,Al

; KB HAS BEEN RESET

E9A3 58

1869

POP

AX

; RECOVER SCAN CODE

E9A4 BAED

1870

MOV

AH,Al

; SAVE SCAN CODE IN AH ALSO

ES

; FORWARD DIRECTION

1871
18n

;----- TEST FOR OVERRUN SCAN CODE FROM KEYBOARD

1873

E9A6 3eFF

1874

eMP

AL,OFFH

; IS THIS AN OVERRUN CHAR

E9A8 7503

1875

JHZ

K16

; NO. TEST FOR SHIFT KEY

E<;lAA E<;I7A-D:!

1876

JMP

Kb2

I BUFFER_FUll_BEEP

1877

j-----

1878

TEST FOR SHIFT KEYS

1879
E<;lAO

1880

K16:

I

E9AO 247f

1881

AND

AL,07FH

E9AF DE

1882

PUSH

es

E960 07

TEST_SHIFT

; TURN OFF THE BREAK BIT
ESTABLISH ADDRESS OF SHIFT TABLE

1883

POP

ES

i

E9S1 BF7EE8

1884

MOV

DI,OFFSET K6

i SHIFT KEY TABLE

E984 890800

1885

MOV

CX.K6L

E987 F2

1886

REPNE

seASB

E969 BAC4

1887

MOV

Al.AH

E9SB 7403

1888

JE

K17

; JUHP IF HATCH FOUND

E9BO E9850D

1889

JMP

K2S

I

LENGTH
; LOOK THROUGH THE TABLE FOR A HATCH

E968 AE
; RECOVER SCAN CODE
IF NO MATCH. THEN SHIFT HOT FOUND

1890
1891

j-----

SHIFT KEY FOUND

1892
Egeo 81EF7FEB

1893

K17:

SUB

DI,OFFSET K6+1

; ADJUST PTR TO SCAH CODE HTCH

E9C4 2E8AA586E8

1894

MOV

AH,CS:K7(OIl

; GET MASK INTO AH

E9C9 ABBD

1895

TEST

Al.80H

; TEST FOR BREAK KEY

E9CB 7551

1896

JNZ

K23

; BREAK_SHIFTJOUND

1897
1898

;----- SHIFT MAKE FOUND. DETERMINE SET OR TOGGLE

1899

Egeo BOFCIO
E9DO 7307

1900

eMP

1901

JAE

K18

1902:
1903

5-50 System BIOS

j-----

PLAIN SHIFT KEY. SET SHIFT ON

j

IF SCROll SHIFT OR ABOVE, TOGGLE KEY

LaC OBJ

LINE

SOURCE

1904
E902 08261700
E906 E98000

1905

OR

KBJLAG.AH

• TURN ON SHIFT BIT

1906

JHP

K26

I

INTERRUPT_RETURN

1907
1908

;----- TOGGLED SHIFT KEY. TEST FOR 1ST HAKE OR NOT

}909

K18:

; SHIFT-TOGGLE

E909

1910

E9D9 f606170004

1911

TEST

KB_FLAG. CTL_SHIfT

E9DE 7565

1912

JNZ

K25

E9EO 3C52

1913

E9E2 7522

1914

JNZ

K22

; JUMP IF NOT INSERT KEY

TEST

KBJlAG. ALT_SHIFT

; CHECK FOR ALTERNATE SHIFT

E9E4 F606170008

1916

E9EB F606170020

1917

E9FO 7500

1918

E9f2 F606170003

1919

E9F7 7400

1920

; JUMP I f
;

1915

E9E9 755A

; CHECK CTl SHIFT STATE

K19:

C~IECK

eTl STATE

FOR INSERT KEY

; JUMP IF ALTERNATE SHIfT

JNZ

K25

TEST

KB_FlAG. NUH_STATE

; CHECK FOR BASE STATE

JNZ

K2I

; JUMP IF NUM LOCK IS ON

JZ

K22

; JUMP IF BASE STATE

1921
K20 :

; NUHERIC ZERO, NOT INSERT KEY

E9F9

1922

E9F9 B83052

1923

HOV

AX. 5230H

I

E9ft E90601

1924

JHP

K57

; BUfFERJILL

E9FF
E9FF F606170003

1925
1926

TEST

KBJLAG,

EA04 74F3

1927

JZ

K20

fA06

1929

K21:

PUT OUT AN ASCII ZERO

; HIGHT BE NUMERIC
LEFT_SHIFT'" RIGHT_SHIFT
I

JUMP NUMERIC. NOT INSERT

1928

fA06 84261800

K22:

I SHIFT TOGGLE KEY HIT; PROCESS IT

1930

I

IS KEY ALREADY DEPRESSED

EADA 7540

1931

JNZ

K26

; JUMP If KEY ALREADY DEPRESSED

fADe 08261800

1932

OR

KBJLAG_l.AH

;

lIlDICATE THAT THE KEY IS DEPRESSED

EAIO 30261700

1933

XOR

KBJLAG.AH

; TOGGLE THE SHIFT STATE

EA14 3C52

1934

CMP

Al.1NS_KEY

; TEST FOR 1ST HAKE OF INSERT KEY

EA16 7541

1935

JNE

K26

; JUMP IF NOT INSERT KEY

EAl8 B80052

1936

HOV

AX,INS_KEY*256

; SET SCAN CODE INTO AH, 0 INTO AL

EAIB E98701

1937

JHP

K57

; PUT INTO OUTPUT BUFfER

1938
1939

;----- BREAK SHIFT FOUND

1940

EAIE

1941

K23:

; BREAK-SHIFT-FOUND

fAIE 80FCIO

1942

CHP

AH, SCROLL_SHIFT

EA21 731A

1943

JAE

K24

fA23 F604

1944

NOT

AH

ltNERT MASK

IS THIS A TOGGLE KEY
; YES, HANDLE BREAK TOGGLE

EA25 20261700

1945

ANO

KBJLAG.AH

TURN OFF SHIFT BIT

EA29 3eB8

1946

CHP

AL,ALT_KEY+80H

IS THIS ALTERNATE SHIFT RelEASE

fAZB 752C

1947

JNE

K26

INTERRUPT_RETURN

1948
1949

;----- ALTERNATE SHIfT KEY RELEASED, GET THE VALUE INTO BUFFER

1950
EA20 AD 1900

EA30 B400

1951
1952

HOV

AL,AL T_INPUT

HOV

AH.O

; SCAN CODE OF 0

EA32 88261900

1953

HOV

ALT_INPUT,AH

j

EA36 3eoo

1954

CHP

AL,O

; WAS THE INPUT=O

EA38 741F

1955

JE

K26

; INTERRUPT_RETURN

JHP

K58

NOT

AH

E"A3A E9A101

1956

EA30

1957

EA3D F604

1958

K24:

ZERO OUT THE FIELO

; IT WASN'T, SO PUT IN BUFFER
; BREAK-TOGGLE

EA3F 20261800

1959

ANO

EA43 E614

1960

JHP

INVERT MASK
INOICATE NO LONGER DEPRESSED

SHORT K26

1961
1962

;----- TEST FOR HOLD STATE

1963
EA45

1964

EA45 3e80

1965

CHP

AL,80H

; TEST FOR BREAK KEY

EA47 7310

1966

JAE

K26

; NOTHING FOR BREAK CHARS FROM HERE ON

EA49 F606180008

1967
1968

TEST

KB_FLAG_I.HOLO_STATE

ARE WE IN HOLD STATE

EA4E 7417

JZ

K28

BRANCH AROUND TEST I f NOT

EASO 3C45

1969

CMP

AL,NUM_KEY

EA52 7405

1970

JE

K26

EA54 80261800F7

1971

AND

KBJLAG_l,NOT HOLD_STATE

EA59

1912

EA59 FA

1973

EASA B020

1974

EAse E620

1975

EASE

1976

EASE 07

1977

POP

EASF IF

1978

POP

OS

EA60 SF

1979
1980

POP

or
sr

EA61 SE

K25:

; NO-SHIFT-FOUND

K26:

CAN'T END HOLD ON NUM_LOCK
j

TURN OFF THE HOLD STATE BIT

; WTERRUPT-RETURN

CLI

I TURN OFF INTERRUPTS

HOV

AL,EOI

OUT

020H ,.6,l

K27:

; END OF INTERRUPT COMMAND
j

SEND CotlMAND TO INT CONTROL PORT

; INTERRUPT-RETURN-NO-EOI

POP

"

System BIOS 5-51

LaC OBJ

LINE

SOURCE

1981

POP

ox

EA63 59

1982-

POP

CX

EA64 56

1983
1984

POP

BX

POP

AX

1985

IRET

EA62 SA

[A65 58
EAb6 CF

; RESTORE STATE

; RETURN. INTERRuprs BACK ON

1986

;

WITH F LAG CHANGE

1987
1988

; ----- NOT IN.

HOLD STATE. TEST FOR SPECIAL CHARS

1989
EA67

1990

K2:8:

; NO-HOLD-STATE

EA67 F606170008

1991

TEST

KBJLAG,ALT_SHIFT

EAbC 7503

1992

JNZ

K29

EA6E E99100

1993

JMP

K38

; ARE WE IN ALTERNATE SHIFT
JUMP IF ALTERNATE SHIFT
; JUMP IF NOT ALTERNATE

1994
1995

j-----

TEST FOR RESET KEY SEQUENCE {ell ALT OEll

1996

fA7l

1997

fA7l F606170004

1998

K2:9:

i

TEST-RESET

; ARE WE IN CONTROL SHIFT ALSO

EA76 7433

1999

JZ

K31

j

NO_~'ESET

EA78 3C53

2000

CMP

AL,OEl_KEY

j

SHIFT STATE IS THERE, TEST KEY

EA7A 752F

2:001

JNE

K31

2:002
2003

j----- Cil-ALT-DEL HAS BEEN FOUNO, DO I/O CLEANUP

2004
fA7C C706n00341Z

2:00S

NOV

EA82 EA56EOOOFO

2:006

JMP

SET FLAG FOR RESET FUNCTION
RESET

2007
2008

;----- ALT-INPUT-TABLE

EA87

2:009

K30

LABEL

BYTE

EAS7 52

2:010

OB

82:.79.80.81,75,76.77

2011

OB

71.72..73

JUMP TO POWER ON DIAGNOSTICS

EA88 4f

EAa9 50
fAaA 51
EASe 46

EABC 4C
EABO 40

EABE 47

10 NUMBERS ON KEYPAD

EMF 48
!:A90 49
2012:
fA91 10

2013

i----- SUPER-SHIFT-TABLE
DB
16.17018.19.20.21.22.23

j

A-Z TYPEWRITER CHARS

EAn 11

fA93 12
EA94 13
EA95 10:.

EA96 15

fA97 16
E,6,98 17

fA99 )8

2014

OB

,4.25.30.31.32.33.34.35

2015

OB

36.37,38,44,45,46,47,48

2016

OB

49.50

EA9A 19
EA9B IE
EA9C IF
EA90 20
EA9E 21
EA9F 22

EAAO 23

EAAl 24

fAA:?: 25
fAA3 26
EAA4 2C

EAA5 20

EAAb 2E
fAA7 2F

EAM 30
fAA9 31

EAAA 32

2017
2018

j-----

IN ALTERNATE SHIFT, RESET NOT FOUND

2019

EAAB

2020

; NO-RESET

K31 :

EAAB 3C39

2021

CNP

AL.57

; TEST FOR SPACE KEY

EAAD 7505

2022

JtiE

K32

; NOT THERE

EAAF B020

2623

NOV

AL. '

; SET SPACE CHAR

EABt E92101

2024

JMP

K57

; BUFFER_fILL

2025
2026
2027

5;..52 System BIOS

j-----

LOOK FOR KEY PAD ENTRY

LaC OBJ

LINE

EAB4

2028

EA54 BF67EA

2029

SOURCE
K32:

J ALT-KEY-PAD

MOV

DI,OFFSET K30

; ALT-INPUT-TABLE

2030

MOV

eX,lo

2031

REPNE

seAse

,

I NO_AlT_KEYPAD

2033

IN'
SUB

Oll

2034

NOV

EACS 840A

2035

NOV

AL,ALT_INPUT
AH.IO

NUL

AH

EAS7 890AOO

EABA F2
EABB AE
EABC 7512

2032

EABE BIEF86EA
EAC2 A01900

DI.OFFSET K30+1

LOOK FOR ENTRY USING KEYPAQ
LOOK FOR MATCH

OX NOW HAS ENTRY VALUE

; GET THE CURRENT BYTE

I MULTIPLY BY 10

EAC7 F6E4

2036

EAC9 03e7

2037

ADO

AX.DX

; ADD IN THE LATEST ENTRY

EAce .6.21900

2038

NOV

ALT_WPUT ,AL

; STORE IT AWAY

EACE E889

2039

JMP

"6

; THROW AWA.Y THAT KEYSTROKE

2040

2041

; ----- LOOK FOR SUPER SHIFT ENTRl
K33:

EADO

2042
2043

EAOO C&06190000

2044

MOV

EA05 891AOO

2045

MOV

EA08 F2

2046

EADA 7505

2047

EADC BODO
EAOE E9F400

; NO-ALi-KEYPAD

All_INPUT ,0
eX,lE>

; OX. ES ALREADY POINTING

REPNE

seASB

; LOOK FOR MATCH IN ALPHABET

034
AL,O

;. NOT FOUND, FUNCTION KEY OR OTHER

2048

IN'
MOV

2049

JMP

057

;. PUT IT IN THE BUFFER

J ZERO ANY PREVIOUS ENTRY INTO IN?uT

EA09 AE
;. ASCII CODe OF ZERO

2050
2051

,~-~--

LOOK FOR TOP ROW OF ALTERNATE SHIFT

2052
fAfl

2051

EAEI 3C02

2054

noc

2055

EAE5 3COE

2056

EAE3

K34:

;. ALT-TOP-ROW

C"P
JB

AL,2

KEY WITH '1' otlIT

035

;. NOT ONE OF INTERESTING KEYS

AL,14

I IS IT IN THE REGION

035
AH , 1l8

;. CONVERT PSUEDO SCAN CODE TO RANGE

EAE7 7308

2057

CMP
JAE

EAE9 80C476

2058

ADD

EAEC BODO

2059

MOV

ALia

j

EAEE E9E400

2060

JMP

057

;. aUFFERJILL

j

All-FUNCTION

INDICATE AS SUCH

2061
2062

1----- TRANSLATE ALTERNATE SHIFT PSEUDO SCAN CODES

2063
EAFI

2064

K35:

I AlT-FUNCTION

EAFt 3C38

2065

CMP

AL,59

;. TEST FOR IN TABLE

EAF3 7103

2066

JAE

037

J ALT-CONTINUE

EAF5

2067

EAF5 f96tFF

2068

JMP

026

fAF8

2069

K36:

;. CLOSE-RETURN

K37:

I IGNORE THE KEY
;. ALT-CONTINUE

EAF8 3C47

2070

Al,71

I IN KEYPAD REGION

EAFA 73F9

2071

JAE

036

;. IF 50, IGNORE

EAFC BBSFE9

2072

MOV

BX,OFFSET K13

;. AL T SHIFT PSEUDO SCAN TABLE

EAFF E91BOI

2073

J"P

063

;. TRANSLATE THAT

CMP

2074
2075

1----- NOT IN ALTERNATE SHIFT

2076
EB02

2077

EB02 F606170004

2078

EB07 7458

2079

K38:

;. NOT-ALT-SHIFT
TEST

KB_FLAG.CTl_SHIFT

; ARE WE IN CONTROL SHIFT

JZ

044

;. NOT-CTL-SHIFT

2080
Z081

;----- CONTROL SHIFT, TEST SPECIAL CHARACTERS

208l

j-----

TEST FOR BREAK AND PAUSE KEYS

2083
EB09 3C46

Z084

CMP

AL,SCROLL_KEY

; TEST FOR BREAK

EBOB 7518

2085

JNE

01.

EBOO 8BIE8000

2086

MOV

BX,BUFFER_START

EBll 891ElAOO

2087

MOV

BUF FER_HEAD, BX

EBIS 691E1COO

2088

MOV

BUFFER_TAIL.BX

E819 C606710080

2069

"OV

BIOS_BREAK,SOH

EBIE COIS

2090

INT

16H

EB20 lBCO

2091

SUB

AX,AX

;. PUT OUT DUHMY CHARACTER

EBl2: E9BOOO

2092

JMP

057

, BUFFERJILL

K39:

NO-BREAK
1 RESET BUFFER TO EHPTY

; TURN ON BIOS_BREAK BIT
;. 8REAK INTERRUPT VECTOR

EB2S

2093

E825 3C45

2094

C"P

AL,NUH_KEY

E8l7 7511

2095

041

J LOOK FOR PAUSE KEY
j NO-PAUSE

; NO-BREAK

2096

IN'
OR

KBJlAG_l.HOLD_STATE

I TURN ON THE HOLD flAG

EBlE B02:0

2097

MOV

AL,EOI

j

END OF INTERRUPT TO CONTROL PORT

EB30 E620

l098
2Qqq

OUT

020H,AL

j

ALLOW FURTHER KEYSTROKE INTS

EB29 600E180008

2100

j----~

DURING PAUSE INTERVAL, TURN CRT BACK ON

2101
E832 803E490007

Z102

CMP

CRT_MOOE.7

; IS THIS BLACK AND WHITE CARD

System BIOS 5-53

LINE

LOC OBJ

SOURCE

E837 7407

2103

JE

K40

; YES. NOTHING TO DO

E839 BAQSDl

2104

MOV

OX.03DSH

; PORT FOR COLOR CARD

EBlt A06500

2105

MOV

AL,eRT_MODE_SET

I GET THE VALUE OF THE CURRENT MODE

OUT

OX.AL

; SET THE CRT MODE. SO THAT CRT IS ON

TEST

KBJlAG_l.HOlD_STATE

EBlF EE

2:106

E840

2107

E640 F60618000S

2108

E845 75F9

2109

EB47 Eq14FF

2110

EB4A

2111

K40:

; PAUSE-LOOP

JHZ

K40

JMP

K27

K41:

; lOOP UNTIL FLAG TURNED OFF
; INTERRUPT_RETURN_ND_EOI

; NO-PAUSE

2112
2113
2114

; ----- TEST SPECIAL CASE KEY 55

E54A 3e37

2115

CMP

Al.55

EB4C 7506

2116

JHE

K42

; NOT-KEY-55

EB4E B80072

2117

MOV

AX,l14*256

; START/STOP PRINTING SWITCH

E851 E98100

2118

JMP

K57

; BUFFER_FILL

2119

j-----

Zi2:0

SET UP TO TRANSLATE CONTROL SHIFT

2121
E854

2:122

; NOT-KEY-55

K42::

E854 BB8EE6

2123

MOV

BX.OFFSET K8

E857 3C3B

2124

CMP

AL,59

2125

i SET UP TO TRANSLATE tTL

; IS IT IN TABLE
I Cll-TABLE-TRANSLATE

E8S9 7276

2126

JB

K5.

ESSS

2:127

ESSS SBCBEe

2128

MOV

eX.OFFSET K9

ESSE E96COO

2129

JMP

K.'

K43:

I YES. GO TRANSLATE CHAR
I Cll-TABLE-TRANSLATE
I CTL TABLE SCAN
TRANSLATE_SCAN

2:130
2131

I ----- NOT IN CONTROL SHIFT

2:132
EB61

2133

EB61 3C47

2134

CMP

AL.71

i

EB63 732C

2135

K44:

JAE

K48

; HANDLE KEYPAD REGION

E605 F606170003

2136

TEST

KB_FLAG, LEFT_SHIFT "'RIGHT_SHIFT

ES6A 745A

2:137

JZ

K54

I NOT-Cll-SHIFT
TEST FOR KEYPAD REGION

I TEST FOR SHIFT STATE

2138
2139

;----- UPPER CASE, HANDLE SPECIAL CASES

2140
EB6C 3COF

2141

CMP

AL.IS

; BACK TAB KEY

EB6E 7505

2142

I NOT-BACK-TAB

2:143

JHE
MOV

K45

E870 B8000F

AX.15*256

I SET PSEUDO SCAN CODE

EB73 EB60

2144

JMP

SHORT K57

I BUFFERJILL

EB75

2145

EB75 3C37

2146

tMP

AL.55

I PRINT SCREEN KEY

EB77 7509

2147

JHE

K4.

I NOT-PRINT-SCREEN

K45:

I NOT -BACK -TAB

2148

j----- ISSUE INTERRUPT TO INDICATE PRINT StREEt-! FUNCTION

2149
2150
EB79 B020

2151

MOV

EB7B E620

2:152:

OUT

020H. Al

;

Ee70 C005

2:153

INT

5H

I ISSUE PRINT SCREEN INTERRUPT

JMP

"7

; GO BACK WITHOUT EOI OCCURRING

CMP

AL,59

I FUNCTION KEYS

AL.EOI

; END OF CURRENT INTERRUPT
SO FURTHER THINGS CAN HAPPEN

EB7F E9DCFE

2154-

EB82

2155

EB82 3C3B

2156

E884 1206

2157

JB

E886 B855E9

2158

MOV

8X,OFFSET K12

i UPPER CASE PSEUDO SCAN CODES

EB89 E99100

2159

JMP

K.'

I TRANSLATE_SCAN

; NOT-PRINT-SCREEN

K46:

K47

i NOT-UPPER-FUNCTION

i NOT-UPPER-FUNCTION

K47:

EB8e

2160

EB8C BBIBE9

2161

MOV

BX,OFFSET Kll

; POINT TO UPPER CASE TABLE

EB8F EB40

2:162

JMP

SHORT K56

; OK, TRANSLATE THE CHAR

2163
2164

j-----

KEYPAD KEYS. MUST TEST NUN LOCK FOR DETERMINATION

2165
K48:

KEYPAD-REGION

EB91

2166

EMI F606170020

2167

TEST

KBJ LAG. NUH_STATE

I ARE WE IN NUM_LOCK

EB96 7520

2168

JHZ

K52

i

E898 F606170003

2169

TEST

KB_F LAG, LEFT_SHIFT +RIGHT_SHIFT

EB9D 7520

2170

JHZ

K53

j

TEST FOR SURE
; ARE WE IN SHIFT STATE

; IF SHIFTED. REALLY NUM STATE

2171
2172

I ----- BASE CASE FOR KEYPAD

2173
EB9F

2174

K49:

I BASE-CASE

EB9F 3C4A

217S

tMP

AL.74

i SPECIAL CASE FOR A COUPLE OF KEYS

fBAI 7406

2176

JE

K50

I MINUS

EBA3 3C4E

2177

tMP

AL,78

EBA5 740C

2178

JE

K51

EBA7 2C47

2179

SUB

AL.7l

5~54

System BIOS

; CONVERT ORIGIN

LaC OBJ

LINE

EBA9 8876E9

2180

EBAC EB7l

2181

EBAE

2182

fBAE 88204,A.

2183
2184

EBBI EB22
EBBl
EBB3 88284E
EBB6 EBID

2185
2186
2167

SOURCE
MOV

eX,OfFSET K15

JMP

SHORT K64

; CONVERT TO PSEUDO SCAN

MOV

AX,74*256+'-'

; MINUS

; BASE CASE TABLE

K50:
JtlP

SHORT K57

; BUFFERJILl

MOV

AX, 78*256+' .. '

; PLUS

JMP

SHORT K57

; BUFFER_FILL

K51:

2188

EBBS

2:189

j----- NIGHT BE NUM LOCK. TEST SHIFT STATUS

2190
2191

K52:

;

EBBD 75EO

2192
2193

EBBF

2194

EBeF 2C46

ESCI 8869E9

2195
2196

MOV

AL.70
eX,OFFSET K14

EBC4 EBOB

2197

JMP

SHORT 1<56

EBBS F606170003

ALHOST-t~Utl-STATE

TEST

KBJLAG, lEFT _SHIFT+RIGHT_SHIFT

JHZ

K49

SUB

; CONVERT ORIGIN
I TRANSLATE_CHAR

K53:

; SHIFTED TEHP OUT OF HUN STATE
; REALLY_NUM_STATE

; NUI'i STATE TABLE

2196
2199

; ----- PLAIN OLD LOWER CASE

2200
EBC6

2201

K54:

I NOT-SHIFT

EBC6 3C3B

2202

eMP

AL.S9

EBca 7204

2203

JB

K55

j

; TEST FOR FUNCTION KEYS
NOT-LOWER-FUNCTION

EBCA BOOO

2204

MOV

AL.O

; SCAN CODE IN AH ALREADY

EBce EB07

2205

JMP

SHORT K57

; BUffER_FILL

EBCE

2206

EBCE BSEIE8

2207

MOV

BX.OFFSET KID

K55:

; NOT -LOWER-FUNCTION
i

LC TABLE

2208

2209

j-----

TRANSLATE THE CHARACTER

2210
EBDI

2211

EBDI FEC8

2212

DEe

AL

; CONVERT ORIGIN

2213

XLAT

CS:KII

j

EBD3 2E07

KS6:

j

TRANSLATE-CHAR
CONVERT THE SCAN CODE TO ASCII

2214
221S

j-----

PUT CHARACTER INTO BUFFER

2216
EBDS

2217

EBDS 3CFF

2218

EB07 741F

2219

EBD9 80FCFF

2220

EBOC 741A

2221

KS7:

; BUFFER-FILL

eMP

AL.-l

J'
eMP

K59

; YES. DO NOTHING WITH IT

AH.-I

; LOOK FOR -I PSEUDO SCAN

J'

K59

; NEAR_INTERRUPT_RETURN

; IS THIS AN IGNORE CHAR

2222
2223

;----- HANDLE THE CAPS LOCK PROBLEM

2224
EBOE

2225

EBDE F606170040

2226

K58:
TEST

KB_F LAG .CAPS_STATE

; BUFFER-FILL-NOTEST
j

EBE3 7420

2227

JZ

K61

; SKIP IF NOT

ARE WE IN CAPS LOCK STATE

2228
2229

; ----- IN CAPS LOCK STATE

2230
EBES F606170003

2231

TEST

KBJLAG.LEFT _SHIFT+RIGHT_SHIFT

EBEA 740F

2232

JZ

K60

; TEST FOR SHIFT STATE

; IF NOT SHIFT. CONVERT LOWER TO UPPER

2233
2234

1----- CONVERT ANY UPPER CASE TO LOWER CASE

2235
EBEe 3C41

2236

eMP

AL. 'A'

; FIND OUT IF ALPHABETIC

EBEE 7215

2237

JB

K61

; NOT_CAPS_STATE

EBFa 3C5A

2238

eMP

Al. 'Z'

EBF2 7711

2239

JA

K61

; NOT_CAPS_STATE

EBF4 0420

2240

ADO

AL. 'a'-'A'

; CONVERT TO LOWER CASE

EBF6 EBOD

2241

JMP

SHORT K61

EBF8

2242

EBF8 E95EFE

2243

JMP

.,6

K59:

j

NOT_CAPS_STATE

j

NEAR-INTERRUPT-RETURN

j

INTERRUPT_RETURN

2244
2245

j-----

CONVERT ANY LOWER CASE TO UPPER CASE

2246
EBFB

2247

EBFB 3C61

2248

eMP

Al. 'a'

; FIND OUT IF ALPHABETIC

EBFO 7206

2249

JB

K61

;

; NOT_CAPS_STATE

EBFF 3C7A

2250

eMP

Al.'z'

ECOI 7702

2251

JA

K61

EC03 2.C20

2252

SUB

AL. 'a'-'A'

ECOS

2253

ECOS 8BIElCOO

2254

MOV

ex. BUFFER_TAIL

i

EC09 8BF3

2255

MOV

5I.BX

; SAVE THE VALUE

ECOB E863FC

2256

CALL

K4

; ADVANCE THE TAIL

K60:

K61:

LOWER -TO-UPPER

; NOT_CAPS_STATE
i

CONVERT TO UPPER CASE

; NOT-CAPS-STATE
GET THE END POINTER TO THE BUFFER

System BIOS 5-55

LOC OBJ

LINE

SOURCE

ECOE 381EIAOO

2257

CMP

ex. BUFFER_HEAD

EG12 7413

2258

JE

K62

i BUFFERJULl_BEEP

EC14 8904

2259

MOV

[51 ],AX

; SlORE THE VALUE

EClb 891[ICOO

2260

MOV

BUFFER_TAIL,8X

; MOVE THE POINTER UP

JMP

K26

; INTERRUPT_RETURN

ECIA E93tH

2261

; HAS THE BUFFER WRAPPED AROUND

2262

2263

j-----

TRANSLATE SCAN FOR PSEUDO SCAN CODES

2264

ECID

2265

; TRMISLATE-SCAN

K63:
SUB

Al.59

i CONVERT ORIGIN TO FUNCTION KEYS

2268

XlAT

CS:K9

; CTl TABLE SCAN

2269

MOV

AH,Al

; PUT VA lUE INTO AH

Een BODO

2270

MOV

Al,O

; ZERO ASCII CODE

Ee25 EBAE

2271

JMP

K57

; PUT IT INTO THE BUFFER

EeIO 2e38

2266

EelF
EelF 2E07

2267

Ee21 8AEO

K64:

; TRANSLATE-SeAN-QRGO

2272
2273

KB_INT

ENDP

2274
2275

j----- BUFFER IS FUll, SOUND THE BEEPER

2276
; BUFFER-FUll-BEEP

Ee27

2277

K62 :

Ee27 B020

2278

Ee29 E620

2279

EelB B88000

2280

EelE E461

2281

IN

Al,KB_CTl

; GET CONTROL INFORMATION

EC30 50

2282

PUSH

AX

; SAVE

Ee31

2283

Ee31 24Ft

2284

AND

AL,OFCH

; TURN OFF TIMER GATE AND SPEAKER DATA

Ee33 E661

2285

OUT

KB_CTL,Al

I

Ee35 B94800

2286

MOV

CX,48H

; HALF CYCLE TIME FOR TONE

Ee38

2287

Ee38 E2FE

2288

LOOP

K66

; SPEAKER OFF

Ee3A OC02

2289

DR

AL,2

; TURN ON SPEAKER BIT

Ee3t E661

2290

OUT

KB_CTl,AL

; OUTPUT TO CONTROL

MOV

CX,48H

; SET UP COUNT

K67

; ANOTHER HALF CYCLE
; TOTAL TIME COUNT

Al,EOI

; END OF INTERRUPT COMMAND

OUT

20H,Al

; SEND COMMAND TO INT CONTROL PORT

MOV

BX,080H

; NUMBER OF CYClES FOR 1112 SECOND TONE

MOV

; BEEP-CYCLE

K65:

OUTPUT TO CONTROL

K66 :

EelE 894800

2291

EC41

2292

EC41 E2FE

2293

LOOP

EC43 48

2294

DEC

BX

EC44 75E8

2295

JNZ

K65

; 00 MlOTHER CYCLE

EC46 58

2296

POP

AX

; RECOVER CONTROL
I

K67:

EC47 E661

2297

OUT

KB_CTl,AL

EC49 E912FE

2298

JMP

K27

OUTPUT THE CONTROL

2299
EC4C 20333031

2300

Fl

DB

2301

F3

DB

; KEYBOARD ERROR

301' ,13,10

Ee50 00

EC51 OA
EC52 363031

; DISKETTE ERROR

'601' .13.10

EC55 00
EC56 OA

2302
2303

,-- INT 13 --------------------------------------------------------------

2304

; DISKETTE I/O
THIS INTERFACE PROVIDES ACCESS TO THE 5 1/4 DISKETTE DRIVES

2305
2306
2307

INPUT
(AH )=0

RESET DISKETTE SYSTEM

2308

HARD RESET TO NEC. PREPARE COMMAND, PECAL REQUIRED

2309

ON ALL DRIVES

2310

{AH 1=1

2311

READ THE STATUS OF THE SYSTEM INTO {AU
DISKETTE_STnus FROM lAST OPERATION IS USED

2312
2313
2314
2315

; REGISTERS FOR READ/WRITE/VERIFY/FORMAT
(Dll - DRIVE NUt!BER (0-3 ALLOWED. VALUE CHECKED)
(DH) - HEAD NUHBER (0- i ALLOWED. NOT VALUE CHECKED)

2316

(CH) - TRACK NUNBER (0-39. NOT VALUE CHECKED)

2317

(Cll - SECTOR NUHBER (1-8. NOT VALUE CHECKED.

2318
2319

NOT USED FOR FORMAT)
(All - NUMBER OF SECTORS I MAX = 8. NOT VALUE CHECKEO. NOT USED

2320
2321

FOR FORMAll
(ES:BXl - ADDRESS OF BUFFER I NOT REQUIRED FOR VERIFY)

2322
2323

(AH)=2

READ THE DESIRED SECTORS INTO MEMORY

2324

(AH )=3

WRITE THE DESIRED SECTORS FROM MEMORY

2325

(AH 1=4

VERIFY THE DESIRED SECTORS

2326

(AH 1=5

fORMAT THE DESIREO TRACK

2327

FOR THE FORMAT OPERATION. THE BUFFER POINTER (ES,BX)

2328

MUST POINT TO THE COLLECTION Of DESIRED ADDRESS FIELDS

2329

FOR THE TRACK.

5-56 System BIOS

EACH FIELD IS COMPOSED OF 4 BYTES.

LaC OBJ

LINE

SOURCE

2330

{C.H.R,N), WHERE C ::: TRACK NUMBER, H=HEAD HUMBER,

2331

R ::: SECTOR NUMBER. N= NmlBER OF BYTES PER SECTOR

2332

100=128. 01=256, 02=512. 03=1024).

THERE MUST BE ONE

THIS INfORMATION

2333

ENTRY FOR EVERY SECTOR ON THE TRACK.

2334

IS USED TO FIND THE REQUESTED SECTOR DURWG READ/WRITE

2335

ACCESS.

2336-

2337

; DATA VARIABLE -- DISK_POINTER

2336
2:339

DOUBLE WORD POINTER TO THE CURRENT SET OF DISKETTE PARAMETERS

; OUTPUT

2340

AH ::: STATUS OF OPERATION

2:341

STATUS BITS ARE DEfINED IN THE: EQUATES FOR

2:342

DISKETTE_STATUS VARIABLE IN THE DATA SEGMENT OF THIS

2343

MODULE •

2344
2345

ty ::: 0

SUCCESSFUL OPERATION (AH=O ON RETURN)

ty :: 1

FAILED OPERATION 'AH HAS ERROR REASON)

FOR READ/WRITE/VERIFY

2346
2347

DS,ElX,DX,CH,CL PRESERVED

2:348

AL ::: NUMBER Of SECTORS ACTUALLY READ

2349

**<1**
NOTE:

2350

AL HAY NOT BE CORRECT IF TIME OUT ERROR OCCURS

IF AN ERROR IS REPORTED BY THE DISKETTE CODE, THE
APPROPRIATE ACTION IS TO I

MOV

ES: [01 +2000H-l] .Al

; STORE IN SECOND HALF

F5BB 83C74f

4527

ADD

01.79

I MOVE TO NEXT RON IN REGEN

F5BE FECE

452:8

DEC

DH

; DONE WITH lOOP

F5CO 75EC

452:9

JHZ

54

F5C2: SE

4530

POP

F5C3 SF

4531

POP

; RECOVER REGEN POINTER

f5C4 47

4532

INC

51
01
01

f5C5 E20

4533

LOOP

53

; MORE CHARS TO WRITE

FSC7 E9FBFB

4534

FSCA

4535

F5CA 2:63205

4536

XOR

I EXCLUSIVE OR WITH CURRENT

F5CD AA

4537

STOSB

; STORE THE CODE POINT

F5CE At

4538

LOOSB

; AGAIN FOR ODD FIELO

4539

XOR

Al. ES: [DI+2000H-IJ

4540

JMP

55

F5CF 263285FFlF
F5D4 EBEO

; POINT TO NEXT CHAR POSITION

JMP
S6 ;

; BACK TO MAINSTREAM

4541
4542:

j-----

MEDIUM RESOLUTION WRITE

4543
57:

FSD6

4544

FSD6 8A03

4545

MOV

DLllH,.

F5D8 DIE?

4546

SAL

01,1

j

F5DA E80100

4547

CAll

519

; EXPAND BL TO FULL WORD OF COLOR

FSDD

4548

F5DO 57

4549

PUSH

01

; SAVE REGEN POINTER

F50E 56

4550

PUSH

SI

i SAVE THE CODE POINTER

MOV

DH,4

I NUMBER OF LOOPS

; SAVE HIGH COLOR

BIT

OFFSET*2 SINCE 2. BYTES/CHAR

, MEO_CHAR

S8:

F5DF B604

4551

FSEl

4552:

F5El AC

4553

loose

F5E2 E80EOO

4554

CALL

521

, DOUaLE UP ALL THE eITS

F5E5 23C3

4555

AND

Ax,ex

, CONVERT THEM TO FOREGROUND

S9:
, GET CODE POINT

;

4556

COLOR ( 0 BACK 1

F5E7 F6C280

4557

TEST

OL I 80H

• IS THIS XOR FUNCTION

F5EA 7407

4558

JZ

S10

; NO. STORE IT IN AS IT IS

F5EC 2632:25

4559

XOR

AH,ES:[DIl

; 00 fUNCTION IoIITH HALF

XCQ

Al.ES:(OI-tll

; AND WITH OTHER HALF

HOV

ES:[Oll,AH
ES:[OI+ll,AL

f5EF 2:6324501

4560

F5F3

4561

F5F3 268825

4562

F5f6 26884501

4563

MOV

F5fA AC

4564

LOt' 58

F5FB E8C500

4565

CAL L

5-86 System BIOS

510:
i STORE FIRST BYTE
i

STOPE SECOND BYTE

; GET CODE POINT
521

LOC OBJ

LINE

FSFE Be)

4566

f60D F6C280

SOURCE
ANIl

AX,BX

4567

TEST

Dl.80H

I AGAIN. IS THIS XOR FUNCTION

F603 74M

4568

JZ

SIl

I NO, JUST STORE TIlE VALUES

1'605 2632A50020

4569

XOR

AH, ES: (DI+2000H)

I FUNCTION WITH FIRST HALf

F60A 2632850120

4570

XOR

AL ,ES: [01+200 IH J

; AND WITH SECOND HALF

F60F

4571

FOOF 2688A50020

4572:

MOV

ES: [OI+2000H ,AHl

; CONVERT TO COLOR

511:

F614 2688850120

4573

MOV

ES: [OI+2000H+l ] tAL

F619 83C750

4574

AOO

01.80

FblC FEtE

4575

OEC

ON

F6lE 75CI

4576

JNZ

59

I KEEP GOING

F620 SE

4577
4578
4579

POP

SI

; RECOVER CODE PONTER

POP

OI

j

INC

OI

j

POINT TO NEXT CHAR POSITION

F623 47
F624 E2B7

4580

INC

OI

4581

LOOP

58

j

MORE TO WRITE

F626 E99CFB

4582
4583
4584

JMP

VIDEO_RETURN

F621 SF
1'622 47

GRAPHICS_WRITE

I STORE IN SECOND PORTION Of BUFFER
I POINT TO NEXT LOCATION

RECOVER REGEN POINTER

ENOP

4586

------ ------ - ----------GRAPHICS READ
; ------ ------ ------------

F629

4587

GRAPHICS_READ

F6;!:9 E8D600

4588

CALL

S2.

I CONVERTED TO OFFSET IN REGEN

F62C 8BFO

4589

MOV

5I,AX

I SAVE IH 51

F62E 83EC08

4590

SUB

sP,a

NOV

BP.SP

4585

;
i

PROC

NEAR

4591
F631 8BEC

; ALLOCATE SPACE TO SAVE THE
;

4592:

REAO CODE POINT

; POINTER TO 5AVE AREA

4593
4594

; ----- DETERMINE GRAPHICS MODES

4595
F633 803E490006

4596

CMP

CRT_MODE,6

F638 06
F639 IF

4597
4598

PUSH
POP

os

i

F63A 72:1A

4599

JC

sn

I MEDIUM RESOLUTION

ES

POINT TO REGEN SEGMENT

4600
4601

i----- HIGH RESOLUTION READ

4602

4603
4604
F63t 8604

; ----- GET VALUES FROM REGEN BUfFER AND CONVERT TO CODE POINT
MOV

DH,4

i NUMBER OF PASSES

4607

MOV

AL,lsI I

I GET fIRST BYTE

F640 884600

4608

MOV

[BP],AL

i SAVE IN STORAGE AREA

f643 45

4609

INC

BP

i NEXT LOCATION

F644 8A840020

4610

MOV

AL,[SI+ZOOOHl

I GET LOWER REGION BYTE

F648 884600

4611

MOV

[BPI,AL

; ADJUST AND STORE

F64B 45

4612

INC

BP

F64C 83C650

4613

AOO

51,80

; POINTER INTO REGEN

F64F FECE

4614

OEC

ON

I LOOP CONTROL

F651 75EB

4615

JNZ

S12

I 00 IT SOME HORE

F6S3 EB1790

4616

JMP

SIS

i GO MATCH THE SAVED CODE POINTS

f63E

4605
4606

F63E

512:

4617
4618

i ----- MEDIUM RESOLUTION READ

4619
F656

4620

F6S6 01E6

4HI

SAL

51,1

I OFFSET*2 SINCE 2 BYTES/CHAR

F6S8 8604

4622

513:
MOV

DH,4

i HUMBER OF PASSES

F6SA

4623

F6SA E88800

4624

; MED_RES_READ

514:
CALL

S23

,

F65D 81C60020

4626

AOO

S1,ZOOOH

; GO TO LOWER REGION
; GET THIS PAIR INTO SAVE

4625
F661 E88100

4627

CALL

F6M 81EEBOIF

4628

SUB

523
SI,2000H-ao

F668 FEtE

4629

OEC

ON

F66A 75EE

4630

JNZ

S14

; GET PAIR BYTES FROM REGEN
INTO SINGLE SAVE

, ADJUST POINTER BACK INTO UPPER
I KEEP GOING UNTIL ALL a DONE

4631
4632

; ----- SAVE AREA HAS CHARACTER IN IT, HATCH IT

4633
F6bt

4634

F66C Bf6EFA90

4635

MOV

DI,OFfSET CRT_CHAR_GEN

; FIND_CHAR

F670 OE

4636

PUSH

CS

F671 07

4637

POP

ES

; CODE POINTS IN CS

f672 83E008

4638

SUB

BP,8

F675 8BfS

4639
4640

,

MOV

SI,BP

515:

F677 FC

4641

CLO

F678 BOOO

4642

NOV

; ESTABLISH ADDRESSING

; ADJUST POINTER TO BEGINNING
OF SAVE AREA
ENSURE DIRECTION

AL,O

; CURRENT CODE POINT BEING MATCHED

System BIOS 5-87

LOC OSJ

LINE

F67A

4643

Fo7A 16

F678 IF

4644
4645

F67C 8A800a

4646

F67f

4647

F67F 56

4648

F6BD 57

4649

F681 890800

4650

f684 F3

4651

SOURCE
516:
; ESTABLISH ADDRESSING TO ,STACK

PUSH

55

POP

as

i

MOV

aX , 12a

; NUMBER TO TEST AGAINST

PUSH

51

I SAVE SAVE AREA POINTER

PUSH

DI

, SAVE CODE POINTER

MOV

ex.s

; NUMBER OF BYTES TO MATCH

REPE

CHPSB

I COMPARE THE 8 BYTES

FOR THE STRING COMPARE

517:

FoSS A6

F686 SF

4652

POP

01

foB7 Sf

4653

POP

51

Fo8S 741E

4654
4655
4656
4657
4658

JZ

518

F6sA FEeD
F6se 83C708

F68F 4A
F690 75EO

INC

; RECOVER THE POINTERS

; If ZERO FLAG SET. THEN MATCH OCCURRED

AL

; NO MATCH. HOVE ON TO NEXT

ADO

01.8

I NEXT CODE POINT

OEC

OX

; LOOP CONTROL

JNZ

517

I 00 ALL OF THEM

4659

4660

;----- CHAR HOT MATCHED. HIGHT BE IN USER SUPPLIED SECOND HALF

4661
466Z

CMP

AL.a

; Al <> 0 If ONLY 1ST HALF SCANNED

F694 7412

4663

JE

518

i IF =

~BCO

4664

SUB

AX.AX

F698 8ED6

4665

MOV

OS.AX

4666
4667

ASSUME

DS:ABSO

Fb9A C43E7COO

LE5

DI.EXT_PTR

i GET POINTER

F69E 8eco

F692 leae
F696

I

O. THEN ALL HAS BEEN SCANNED

ESTABLISH ADDRESSING TO VECTOR

4668

MOV

AX.ES

; SEE IF THE POINTER REAllY EXISTS

F6AO OBC7

4669

OR

AX.DI

i

F6A2 7404

4670

JZ

518

; NO SENSE LOOKING

FoM B080

4671

MOV

AL.128

I ORIGIN FOR SECOND HALF

4672

JMP

516

I GO BACK AND TRY FOR IT

4673

ASSUHE

DS:DATA

F6A6 EBOZ

IF ALL O. THEN DOESN'T EXIST

4674

4675

; ----- CHARACTER IS FOUND ( AL=O IF HOT FOUHQ )

4676
F6A8

4617

F6A8 83C406

4678
4679

F6AB E CF

5125

IRET

5126

EQUIPMENT

; SAVE SEGMENT REGISTER

; RETURN TO CALLER
ENDP

5127
5128
5129

;--- INT 15 ------------------------------------------------------------DUMMY CASSETTE 10 ROUTINE-RETURNS 'INVALID CHO' IF THE ROUTINE IS
:
IS EVER CAL.LED BY ACCIDEHT (AH=86H, CARRY FLAG=l)

5130
FaS9

5131
513Z

; -------------------,-------------- -------- ------------------- ----- ------ORG
OF8S9H

F859

5133

CASSETTE_IO

FaS9 F9

5134

STC

feSA 6486

5135

MOV

Fese CAOZOO

5136

RET

5137

CASSETTE_IO

PROC

FAR
I CARRY INoICATOR=1

,

AH,86H
ENDP

5138
5139
5140

; --- ------ ---------- --------- ----.,.---------------- -------- ------; NON-MASKABLE INTERRUPT ROUTINE:

5141

THIS ROUTINE WILL PRINT A PARITY CHECK 1 OR 2 MESSAGE :

5142

AND ATTEMPT TO FIND THE STORAGE LOCATION CONTAINING THE:

5143

BAD PARITY.
PRIHTED.

5145

READ PROBL.EM) ????,?<-WlLL BE PRINTED WHERE THE ADDRESS

IF NO PARITY ERROR CAN BE FOUND (INTERMITTANT :

5146

WOULD NORMAL.LY GO.

5147

IF ADDRESS IN ERROR IS IN THE I/O EXPANSION BOX, THE

5148

ADDRESS WILL BE FOLLOWED BY A '( E)', IF IN SYSTEM UNIT.

:5149
F85F

IF FOUND, THE SEGMENT ADDRESS WILL BE

5144

5150
5151-

A '(S)' WILL FOLLOW THE ADDRESS
;---------------------------------------------------------______ _
NMI_INT PROC

NEAR

5152

ASSUME

F85F 50

5153

PUSH

DS:DATA
AX

FebO E462

5154
5155

IN

AL,PORT_C

F862 A8CO

TEST

AL,OCOH

F864 7503

5156

F8b6 E98700

5157

f869

51S8

F869 8A4000

JHZ

NMI_l

JMP

01'

5159

MOV

oX,DATA

FebC BEDA

j

SAVE ORIG CONTENTS OF AX

I PARITY CHECK,?
I NO, EXIT FROt1 ROUTINE

HMI_l:

5160

MOV

DS,DX

F86E BEl5F990

5161

MOV

SI,OFFSET 01

F872 A840

5162

TEST

AL,40H

j

F874 7504

5163

JHZ

Fe76 BE25F990

S164

MOV

013
51 ,OFFSET 02

I MUST BE PLANAR

F87A
Fe7A 8400

5165
5166

MOV

AH,O

I WIT AND SET MODE FOR VIDEO

Fa7e A04900

5167

MOV

AL,CRT_MOoE

f87f COlO

5168

!NT

10"

j

CALL VIDEO_IO PROCEDURE

Fe81 E84601

5169

CA.L.L

P_HSG

i

PRIHT ERROR HSG

i ADOR OF ERROR MSG

I/O PARITY CHECK

i DISPLAY ERROR MSG

013:

S170
5171

j-----

SEE IF LOCATION THAT CAUSED PARITY CHECK CAH BE FOUND

5172
Fa84 BOOO

5173

5-94 System BIOS

MOV

AL,OOH

: DISABLE TRAP

LOC OBJ

LINE

f&a6 EUQ

5174

F88S E461
Faa ... GC3D
F8SC E661

5175

F88E
F890
F892
F896

24CF
E661
881£1300
FC

SOURCE
OUT
IN
OR
OUT

5176

5177
5178

AND

5179
5180
5181

F897 ZBDt
F899

5183

F899 BEDA

5184

F89B 8EC2
F89D 890040
F8AO 28F6

51S2

OAOH .... L

AL,PORT_B
Al , 001100008

I TOGGLE PARITY CHECK ENABLES

PORce.AL
AL,llOOllllB

OUT

PORT_B.AL

MOV
ClD

BX.MEHORY_SIZE

; GET MEMORY SIZE WORD

sua

OX,OX

I POINT

; SET DIR FLAG TO INCRlttENT

ox

AT START OF MEM

M1I_LOOPt
DS,OX

5185
5186

MOV
MOV
MOV

ES,OX
C)(,4000H

; SET FOR 16KB SCAN

5187

SUB

51.S1

I SET 51 TO BE REAL TIVE TO

5189

REP

loosa

I READ 16KB OF MEMORY

F8A4 £462

5190
5191

F8A8 7512

5192
5193

Al,PORT_C
AL, 110000008
PRT_NMI

I GO PRINT ADDRESS IF IT DID

Feu 81C20004

IN
AND
JNZ
ADD

; SEE IF PARITY CHECK HAPPENED

F8A6 24CO

OX,0400H

I POINT TO NEXT 16K BLOCK

FeAE 83EBI0

5194

SUB

BX,16D

5188
F8A2 F3
F8A3

; START OF ES

.I.e

FeBl 75E6

5195
5196

JNZ
HOV

NMI_LOOP

FeB3 BE35F990
F8B7 f81001

5197

CALL

P_MSG

F8BA FA

5198

FeBB F4

ClI
HlT

F8BC

5199
5200

FeBC 8CDA

5201

HOV

F8BE E81907

5202

CALL

PRT_SEG

FeCI BA1302

5203

DX,0213H

F8C4 BODO

5204

SI,(OFFSET D2A)

1 PRINT ROW OF ????? IF PARITY
1 CHECK COULD NOT BE RE-CREATED

J HALT SYSTEM

PRT_NHI:
OX.DS
J PRINT SfGMENT VALUE

F8C6 EE

5205

F8C7 8028

5206

MOV
MOV
OUT
HOV

F8C9 E80000

5207

CALL

F8CC 8S5AAS

5208

MOV

F8CF B8ca

5209

"DV

CX,AX

FaDl Z8DS

5210

SUB

BX,BX
[SXI,AX

J WRITE A WORD TO SEGMENT THAT

AX,[BX]

I HAD THE ERROR

AX,CX

; IS IT THERE?

SYS_SOX_ERR

I YES- MUST BE SYS UNIT
; NO-MUST BE IN EXP. BOX

Al.OO

, DISABLE EXPANSION BOX

DX,Al

; (CAN'T WRITE TO NEtO

Al. '('
PRT_HEX
AX,OA55AH

FOO3 8907

5211

F8DS 90

5212

FBD6 90

5213

F8D7 8B07

5214

F8D9 3BCl

5215

F8DS 7407

5216

"DV
NOP
NDP
MOV
C"P
JE

F8DD B045

5217

"OV

AL. 'E'

F8Df E88AOO

5218

CALL

PRT_HEX

F8E2 fB05

5219

J"P

SHORT HlT_NttI

f8E4
F8E4 B053

5220
5221

HOV

Al, 'So

FBE6 E8B300

5222

CALL

PRT_HEX

FBE9

5223

F6E9 BQ29

5224

MOV

AL,' ).

FSES E8AEOO

5225

CALL

PRT_HEX

F6EE FA

5226

F8EF F4

5227

F8FO

5228

F8FO 58

52:2:9

F8Fl CF

5230

IRET

5231

NHI_INT ENDP

5232

;-----------------------------------_ . _-J----------------------------------------

5233
5234
5235

SYS_BOx..ERR:

HLT_NHI:

ClI
HlT

I HALT SYSTEM

014:

POP

AX

ROS CHECKSUI1 SUBROUTINE

I

PROC

F6F2

5236

Fef2 B90020
F8F5

5237
5238

FBF5 32CO

5239

ROS_CHECKSUM_CNT:
Al,Al
XOR

F8F7

5240

C26:

ROS_CHECKSUM

HOV

F8F7 0207

5241

F8F943

5242

FeFA E2F8

5243

FaFC OACO

5244

FSFE C1

5245

ADD
INC
lOOP
OR
RET

5246

RDS_CHECKSUM

5247

;

5248
5249

; RESTORE ORIG CONTENTS OF AX

NEAR

CX,8192

; NEXT_RDS_MODULE
j

NUMBER OF BYTES TO ADD

J ENTRY FOR OPTIONAL ROS TEST

AL.DS:(BX]

BX

; POINT TO NEXT BYTE

C••

I ADD All BYTES IN ROS MODULE

AL.AL

; SUM

=

01

ENOP

---------------------------------------MESSAGE AREA FOR POST

1---------------------- - - - - - - - -- - --------

System BIOS 5-95

LaC OBJ
F8FF 313031
F902 00

LINE

SOURCE

5250

EO

DB

'101'.13.10

; SYSTEM BOARD ERROR

5251

El

DB

' 201',13.10

I MEMORY ERROR

52.52

F3A

DB

'ROM' .13,10

; ROM CHECKSUM ERROR

5253

F3C

DB

'1801' ,13.10

5254

01

DB

'PARITY CHECK 2.',13,10

5255

OZ

DB

'PARITY CHECK l' ,13.10

5256

OZA

DB

• n???', 13.10

f903 011.

F904 20323031
F908 00
F909 Oil.
F90A 524F4D

f900 00
F90E OA

f90f 31383031

EXPANSION 10 BOX ERROR

F913 00

f914 011.

F915 50415249545920
43484543482032
F9Z3 00
F924 011.

F925 50415249545920

43484543462031
F933 00
f934 0,6,
F935 3F3F3F3F3F
F93A 00
f93B 011.

5257

f93C
f93C FB
F93D 50

F93E E461
f940 8AED

5258
5259
5260

1---- ------------------------ ------------------------ -- ------------ --- ------

5261
5262

; ----- --------- ------- - ---- - ---------------- - - --------------------------- ---

5263
5264

BLINK_INT

5265
5266
5267

BUNK LEO PROCEDURE FOR MFG RUN-IN TESTS
IF LEO IS ON, TURN IT OFF. IF OFF, TURN ON.
ASSUME

DS:DATA
PROC

NEAR

STI
PUSH

AX

; SAVE AX REG CONTENTS

IN

AL,PORT_B

1 READ CURRENT VAL OF PORT B

MOV

AH ,AL

5268

NOT

AL

I flIP ALL BITS

F944 2.440

5269

AND

AL, 0 10000006

I ISOLATE CONTROL BIT

f946 80E4BF

5270

ANO

AH,10111111B

; MASK OUT OF ORIGINAL VAL

F949 OAC4

5271

OR

AL,AH

; OR NEW CONTROL BIT IN

f94B E661

5272
5273

OUT

PORT_B,AL

MOV

AL, EOI

F94F E620

5274

OUT

INTAOO.AL

f951 58

5275

POP

AX

F952 CF

5276
5277

IRET

F942 F60D

F940 B020

BLINK_INT

I RESTORE AX REG

ENOP

5278

5279

; ---------- ---- - -------- - - -- - ------ --- ---- --------- - -----

5280

I THIS ROUTINE CHECKSUMS OPTIONAL ROM MODULES AND

5281

; IF CHECKSUM IS OK. CALLS nUT/TEST CODE IN MODULE
; ------- -------- --------~--------- - ----------------------

F953

5282
5283

f953 B84000

5284

F956 BEeo

5285
5286

MOV

AH,AH

I

F95A 811.4702

5287

MOV

AL.IBX+2J

I GET LENGTH INOICATOR

F95D 8109

5288
5289

MOV

CL.09H

I MULTIPLY BY 512:

SHl

AX,CL

5290
5291

MOV

CX.AX

PUSH

CX

; SAVE COUNT

CX,4

I ADJUST

F958 2AE4

F95F 03EO
F961 88CB

f963 51

PROC

NEAR
; POINT ES TO DATA AREA

AX.DATA
SUB

ES,AX
ZERO OUT AH

l SET COUNT

5292
529)

MOV

f967 03E8

SHR

AX.CL

f969 0300

5294

ADO

DX,AX

; SET POINTER TO NEXT MODULE

F96B 59

5295

POP

CX

; RETRIVE COUNT

F96C E886FF

5296

CALL

ROS_CHECKSUM_CNT

; DO CHECKSUH

F96F 7406

5297

JZ
CALL

ROM_ERR

POST CHECKSUM ERROR

JMP

ROM_CHECK_END

AND EXIT

F964 890400

F971 E857EO
F974 E81490

5298
5299

F977

5300

F917 52
F978 26C70M 7000)00

5301
5)02

F97F 268CIE6900

f984 26FFIE6700

5303
5304

F989 5A
F98A
F98A C)

ROM_CHECK_l:
PUSH

OX

NOV

ES:IO_ROM_!NIT,0003H

LOAD OFFSET

MOV

ES:IO_ROM_SEG,DS

LOAD SEGtlENT

CALL

DWORD PTR ES: IO_ROM_INIT

5305

POP

OX

5306
5307
5308

RET

5309

5-96 System BIOS

I SAVE POINTER

; CALL !NIT ./TEST ROUTINE

I RETURN TO CALLER
ENDP

LaC OBJ

LINE

SOURCE

5310

1------------------------------------------------

5311
5312

I CONVERT AND PRINT ASCII CODE
AL MUST CONTAIN NUMBER TO BE CONVERTED. :

5313

5314

AX AND

~

ex

DESTROYED.

------ ------------------------------------------

F98B 50

5315
5316

PUSH

AX

I SAVE FOR LOW NIBBLE DISPLAY

F98C 8104

5317

NOV

Cl.4

; SHIFT COUNT

F98E 02E8

SHR

Al,CL

, NYBBLE SWAP

F990 E80300

5318
5319

CALL

XLAT_PR

; DO THE HIGH NIBBLE DISPLAY

F993 58

5320

POP

AX

; RECOVER THE NIBBLE

F994 NOF

5321

AND

Al.OFH

F996

5323

F996 0490

5324

ADD

F998 27

F98B

XPC_BYTE

PROC

NEAR

XLAT_PR PROC

5325
5326

DAA

F999 1440
F998 2.7

5327

DAA

F99C

532.8

F99C B40E

532.9

F99E 8700

5330

F9AO COlO

5331

F9A2. C3

5332.

F9A3 8C03

5338

F9AS 7803

5339

f9A7 7802

5340

F9A9

5341

,.

CONVERT OO-OF TO ASCII CHARACTER

AL.040H

; ADO CONVERSION AND ADJUST LOW NIBBLE

NEAR

HDV

BH.O

INT

10H

XPC_BYTE

I DISPLAY CHARACTER IN AL

ENOP
LABEL

WORD

0"
0"
0"LABEL

"E

; ADD FIRST CONVERSION FACTOR

AH.l4

XLAT_PR ENOP

5337

AL.090H

MeV

5334

5336

;

I ADJUST HIGH NIBBLE TO ASCHI RANGE

PRT_HEX PROC

5333

F9AJ

NEAR

; ADJUST FOR NUMERIC AND ALPHA RANGE

ADC

RET
PRT_HEX ENOP

5335

• ISOLATE TO LOW NIBBLE
; FALL INTO LOW NIBBLE CONVERSION

5322

PRINTER SOURCE TABLE

36CH
378H
278H
WORD

5342
5343

• ------- -- --------------- --------- - --- --------- -- --- -----

5344

; THIS SUBROUTINE WILL PRINT A MESSAGE ON THE DISPLAY

5345
5346

ENTRY REQUIREMENTS:

5347

SI

=
=

OFFSET(AODRESSI OF MESSAGE BUFFER

5348

CX

5349

MAXIMUM MESSAGE LENGTH IS 36 CHARACTERS

MESSAGE BYTE COUNT

5350

1------------------------ -- ---------------- ---- ------ ----

F9A9

5351

E_MS6

PROC

NEAR

F9A9 BBEE

5352

NOV

BP.SI

; SET BP NON-ZERO TO FLAG ERR
I

F9AB E81COO

5353

CALL

P_MSG

F9AE IE

5354

PUSH

OS

F9AF E8A700

5355

CALL

ODS

F982 AOI000

5356

HDV

PRINT MESSAGE

AL, BYTE PTR EQUIP_flAG

; LOOP/HALTON ERROR

AL.OIH

; SWITCH ON?

G12

, NO - RETURN

f9B5 2401

5357

AND

F9B7 750F

5358

F9B9

5359

JNZ
MfG_HALT:

F9B9 FA
F98A 8089

5360
5361

HOV

Al.89H

F98C E663

5362

OUT

CMD_PORT ,AL

F9BE B085

5363

HOV

Al,lOOOOlOlB

F9CQ E661

5364

OUT

f9C2 A01500

5365

NOV

; RECOVER ERROR INDICATOR

F9C5 E660

5366

OUT

J SET INTO 8255

HlT

; HALT SYS

f9C7 F4

5367

F9C8

5368

F9C8 IF

5369

f9C9 C3

5370
5371

; YES -

CLI

HALT SYSTEM

; DISABLE KB

RE~

GI2:

POP

OS

RET
E.MSG

ENDP
PROC

5312:
F9CA

5373

P.MS6

F9CA

5374

GI2A:

F9CA 2E8A04

5375

NEAR
AL,CS:[SIl

; PUT CHAR IN AL

F9CD 46

5376

INC

SI

; POINT TO NEXT CHAR

f9CE 50

PUSH

AX

; SAVE PRINT CHAR

F9CF E8CAFF

5377
5378

F9D2 58

5379

POP

AX

; RECOVER PRINT CHAR

F9DJ 3eOA

5380

CNP

AL.IO

; WAS IT LINE FEED?

F905 75F3

5381

JHE

G12A

F9D7 C3

5382

RET

NOV

CALL

; NO,KEEP PRINTING STRING

5383
5384
5385

P_MSG

5386

;

5387

1------------ ------ ------ ---:---- --- ---------------

5388

ENOP

; -------- - - -- - ----- ------- ------- ---------------INITIAL RElIABILITY TEST -- SUBROUTINES
ASSUME

CS:COOE.DS:D,4.TA

System BIOS 5-97

LaC OSJ

LINE
5369

SOURCE
; ------------------------- ______________________ _

5390

;

5391

1----""----- - ----------------- ------------------------------------ ---- ----

SUBROUTINES FOR POWER ON DIAGNOSTICS

5392

THIS PROCEDURE WILL ISSUE ONE LONG TONE (3 SECS) AND ONE OR

5393

MORE SHORT TONES (1 SEC) TO INDICATE A FAHURE ON THE PLANAR

5394

BOARD. A BAD RAM MODULE. DR A PROBLEM WITH THE CRT.

5395

ENTRY PARAMETERS;

5396

= NUMBER
= NUMBER

DH

5397

DL

OF LONG TONES TO BEEP
OF SHORT TONES TO BEEP.

5398

.-----------------------------------------------------------------------ERR_BEEP

F908

5399

F9D6 ge

5400

PUSHF

F9D9 FA

5401

CLI

PROC

NEAR
; SAVE flAGS
; DISABLE·SYSTEM INTERRUPTS

F90A IE

5402

PUSH

OS

F9De E87BOO

5403

CALL

DDS

F9DE DAFb

5404

F9EO 7414

5405

F9E~

5406

F9E2 B306

5407

I SAVE OS REG CONTENTS

OR

OH ,DH

JZ

63

; ANY LONG ONES TO BEEP

MOV

NO. 00 THE SHORT ONES

i

;

LONG_BEEP:

BL,6

I

COUNTER FOR BEEPS

; DO THE BEEP

G1:

F9E4 E82100

5408

CALL

BEEP

F9E7

5409

F9E7 E2FE

5410

lOOP

62

F9E9 FECE

5411

OEC

DH

; ANY MORE TO DO

F9EB 75F5

5412

JNZ

61

I DO IT

F9EO 803E120001

5413

CMP

MFG_TST ,I

; MFG TEST MODE?

f9F2 7502

5414

JNE

63

;

F9F4 EBCl

5415

JMP

HFG_HALT

; STOP BLINKING LED

F9F6

5416

G2:
; DelAY BETWEEN BEEPS

YES - CONTINUE BEEPING SPEAKER

I SHORT_BEEP;

63:

F9F6 6301

5417

MOV

BL,l

; COUNTER FOR A SHORT BEEP

F9F8 E80000

5418

CALL

BEEP

; DO THE SOUND

F9FB

5419

F9FB E2FE

5420

LOOP

G4

I DELAY BETWEEN BEEPS

F9FO FECA

5421

OEC

Ol

I DONE WITH SHORTS

F9FF 75f5

5422

JNZ

G3

; 00 SOME MaR E

FAOt

5423

FAOl E2FE

5424

LOOP

G5

;

LOOP

G6

POP

as

G4:

G5:
LONG DELAY BEFORE RETURN

G6:

FAD3

5425

FAD) E2FE

5426

FADS iF

5427

FA06 90

5428

POPF

FAD7 C3

5429

RET

I RESTORE ORIG CONTENTS OF OS
I RESTORE FLAGS TO ORIG SETTINGS
; RETURN TO CALLER

ENDP

5430
5431
5432

;----- ROUTINE TO SOUND BEEPER

5433
PROC

HEAR

MOV

AL,lOllOllOB

5436

OUT

TIMER+3.AL

; WRITE THE TIMER HODE REG

FAGC 883305

5437

MOV

AX,S'33H

I DIVISOR FOR 1000 HZ

FAOF E642

5438

OUT

TIMER+2,Al

FAll 8AC4

5439

MOV

AL,AH

FAl3 E642

5440

OUT

TIMER+2,AL

; WRITE TIMER 2 CNT - MSB
; GET CURRENT SETTING OF PORT

FACe

5434

FADe 80B6

5435

FAOA E643

BEEP

; SEL TIM 2,LSB.MSB,BINARY

I WRITE TIMER 2 CNT -

LSB

FAlS E461

5441

IN

Al,PORT_B

FAl7 6AEO

5442

NOV

AH.AL

FA19 OC03

5443

OR

AL.03

; TURN SPEAKER ON

FAlS E661

5444

SUB

CX.CX

; SET CNT TO WAIT 500 MS

FAID 26C9

5445

fAlf

5446

FAiF EHE

SAVE THAT SETTINGH

OUT
G7:

5447

LOOP

FAll FEee

5448

DEC

.L

FA23 75FA

5449

JNZ

67

FA25 6AC4

5450

MOV

AL.AH

FAl7 E661

5451

OUT

PORT _B ,AL

FA.2:9 C3

5452

RET

5453

BEEP

; DELAY BEFORE TURNING OFF

67

I DelAY CNT EXPIRED?

; NO - CONTINUE BEEPING SPK
; RECOVER VALUE OF PORT

; RETURN TO CALLER

ENDP

5454
5455

1--- ------------------------------- --------------- --------------- -------THIS ~ROCEDURE WILL SEND A SOFTWARE RESET TO THE KEYBOARD.

5456
5457
5458

FA2A
FA2A B006

SCAN CODE

;

'AA' SHOULD BE RETURNED TO THE CPU.

-----------------------------------------------------------------------PRoe

5459
5460

ASSUME

OS:ABSO

5461

NOV

AL,OSH

NEAR

; SET KBD eLK LINE lOW

fAle E661

5462

OUT

PORT_B.AL

I WRITE 8255 PORT B

FA2E 695629

5463

MOV

ex. 10582

; HOLD KBD eLK lOW FOR 20 MS

FAJI

5464

F.6.31 E2FE

5465

LOOP

G8

;

5-98 System BIOS

68:
LOOP FOR 20 MS

LOC OBJ

LINE

SOURCE

F A33 80CB

5466

MOV

AL,OC8H

FA35 E661

5467

OUT

PQRT_B,AL

FA37

5466

MOV

AL,48H

I SET CLK, ENABLE LINES HIGH
; ENTRY FOR HANUFACTURING TEST 2:

FA37 6048

5469

FA39 E661

5470

OUT

PORT_B,AL

F A3B BOFD

5471
5472

MOV
OUT

AL.OFOH

FA3D E621

FAlF C606680400

5473

MOV

DATA_AREA[OFFSET INTRJLAGI

FA44 FB

5474

sn

FA45 28C9

5475

SUB

CX.CX

FA47

5476

FA47 F606660402

5477

TEST

DATA_AREAtOFFSET INT RJLAGJ.02:H

FA4C 7502

5478

JNZ

GIO

; YES -

fA4E E2F7

5479

lOOP

G9

; NO -

FASO

5480

I SET KBD ClK HIGH, ENABLE lOW
I ENABLE KEYBOARD INTERRUPTS

INTA01,Al

; WRITE 82:59 IHR
; RESET INTERRUPT INDICATOR

; ENABLE INTERRUPTS
; SETUP INTERRUPT TIHEOUT CNT

G9:
; DID A KEYBOARD INTR OCCUR?
READ SCAN CODE RETURNED
lOOP TI lL TIMEOUT

GI0;

FASO £460

5481

IN

AL.PORT_A

; READ KEYBOARD SCAN CODE

FA52 8AD6

5482:

MOV

Bl,AL

; SAVE SCAN CODE JUST READ

FA54 BOC8

5483

MOV

Al,OC8H

FAS6 E661

5484

OUT

PORT_B,Al

FAS6 C3

5485

RET

5486

; CLEAR KEYBOARD
; RETURN TO CALLER

ENOP

5487
FA59

5488

FA59 50

5489

PUSH

FASA 684000

5490

HOV

AX,DATA

FAsO 8E08

5491

MOV

DS,AX

; SET SEGHENT

POP

AX

; RESTORE AX

FA5F 58

5492:

FA6D C3

5493
5494

DDS

PROC

NEAR
AX

I SAVE AX

RET
ODS

ENDP

5495
5496
5497

1-- -------------------------------- --------- ---- ---- - ----- --- ------------

5498

; --- - - - --- -- - -- - -------- -- --- ----- - ----------- - -------- --------------- ---

FA6E

5499

fA6E

5500

CHARACTER GENERATOR GRAPHICS fOR 320X200 ANO 640X2:00 GRAPHICS
ORG
CRT _CHAR_GEN

OFA6EH
LABE L

BYTE

FME 0000000000000000

5501

DB

OOOH.OOOH,OOOH.OOOH.OOOH,OOOH.OOOH,OOOH ; 0_00

FA76 7E81A581BD99817E

5502:

DB

07EH,OSIH,OA5H,OBIH,OBOH,099H.081H,07EH ; 0_01

fA7E 7EFFDBFFC3E7FF7E

5503

DB

07EH. OFFH, OOBH. OFFH, OC3H, OE7H,OFFH, 07EH ; 0_02:

FA86 6CFEFEFE7C381000

5504

DB

06CH,OFEH.OFEH.OFEH.07CH.038H,OlOH.000H ; 0_03

FASE 10387CFE7081000

5505

DB

010H,038H.07CH,OFEH,07CH.038H,OlOH,OOOH ; 0_04

FA96 387C38FEFE7C387C

550b

DB

038H,07CH,038H,OFEH,OFEH,07CH,038H,07CH ; 0_05

FA9E IOl0387CFE7C387C

5507

DB

010H,OI0H,038H,07CH.OFEH,07CH,038H.07CH ; 0_06

FAA6 0000183C3C180000

5508

DB

000H,OOOH,018H,C3CH,03CH,018H,OOOH.OOOH ; 0_07

FAAE FFFFE7C3C3E7FFFF

5509

DB

OFFH,OFFH,OE7H.OC3H,OC3H,OE7H,OFFH,OFFH ; 0_08

FAS6 003C664242663COO

5510

DB

000H,03CH.066H,042:H,042H,066H,03CH,OOOH ; 0_09

FASE FFC399BOBD99C3FF

5511

DB

OFFH,OC3H.099H,OBOH,OBOH.0991I,OC3H,OFFH ; D_OA

FACb DF070F7DCCCCCC78

5512

DB

00FH.007H,OOFH.070H,OCCH,OCCH,OCCH,078H ; O_OB

FACE 3C6666663C187[18

5513

DB

03CH,066H.066H,066H,03CH,OI8H,07EH,OI8H ; D_DC

FA06 3F333F303070FOEO

5514

DB

03FH,0331l,03FH,030H.030H.070H,OFOH.OEOH ; 0_00

FADE 7F637F636367[6CO

5515

DB

07FH,063H,07FH,063H,063H,067H,OE6H,OCOH ; D_OE

FAE6 99SA3CE7E73C5A99

5516

DB

099H,05AH,0:KH,OE7H,0E7H.03CH.05AH.099H ; O_OF

FAEE 80EOF8FEF8[08000

5517

DB

FAF6 D20E3EFE3EOE0200

5518

DB

002:H,OOEH,03EH,OFEH.03EH.OOEH.OO2:H,OOOH ; 0_11

FAFE 183C7E18187E3C18

5519

DB

018H,03CH,07EH,OI8H,018H.07EH.03CH.018H ; 0_12:

F806 6666666666006600

552:0

DB

D66H.066H.066H,066H,066H,OOOH,066H,OOOH ; 0_13
07FH,ODBH,ODBH,07BH,01BH,OIBH.OIBH.OOOH ; 0_14

080H,OEOH.OF8H.OFEH,OF8H,OEOH,080H,OOOH ; 0_10

FeCE 7FDBDB7BIBIBIBOO

552:1

DB

FBl6 3E63386C6C38CC78

5522

DB

FBIE 000000007E7E7EOO

5523

DB

OOOH.OOOH.000H,OOOH,07EH,07EH.07EH.OOOH I 0_16

FB26 183C7E187E3C18FF

552:4

DB

018H.03CH,07EH,018H,07EH.03CH,018H,OFFH I 0_17

FB2E 183C7E1818181800

552:5

DB

018H, 03CH. 07EH, OI8H, OI8H, OI8H. 018H, OOOH ;'"0_18

FB36 181818187E3C1800

552:6

DB

FB3E OOl80CFEOC180000

552:7

DB

OOOH,OI8H,OOCH,DFEH,OOCH,OI8H,OOOH.OOOH ; D_lA

FB46 003060fE60300000

552:8

DB

OOOH, 030H, 060H. OfEH .060H .030H, OOOH, OOOH

FB4E DOOOCOCOCOFEOOOO

5529

DB

OOOH.OOOH,OCOH,OCOH.OCOH,OfEH.OOOH,OOOH i D_IC

FB56 002466FF662:40000

DB

OOOH,02:4H.066H,OFFH,066H.024H,OOOH,OOOH ; 0_10

FB5E 00183C7EFFFFOOOO

5530
5531

DB

0001I,018H.03CH,07EH,OFFH,OFFH.OOOH.OOOH ; D_IE

FB66 00FFFF7E3C180000

5532

OS

OOOH.OFfH,OFFH,07EH,03CH,018H,OOOH.OOOH I D_IF

FB6E 0000000000000000

5533

DB

OOOH,OOOH,OOOH.OOOH,OOOH.OOOH,OOOH.OOOH ; SP 030

FB76 3078783030003000

5534

DB

030H,078H,078H,030H.030H,OOOH.030H.000H ;

FB7E 6C6C6COOOOOOOOOO

5535

DB

06CH.06CH,06CH,000H,OOOH,OOOH,OOOH,OOOH I " 0_2:2:

FB86 6C6CFE6CFE6C6COO

5536

DB

06CH,06CH,OFEH.06CH.OFEH.06CH,06CH,OOOH ; # 0_23

03EH,063H,038H.06CH,06CH,038H.OCCH,078H ; 0_15

018H,OI8H,OI8H,018H.07EH.03CH,OI8H.OOOH ; 0_19
; O_IB

! 0_21

FB8E 307CC0780CF83000

5537

DB

030H.07CH.OCOH,078H.00CH,OF8H.030H.000H i $ 0_24

FB96 OOC6CC183066C600

5538

DB

OOOH.OCbH,OCCH,OI8H,030H,066H,OC6H,OOOH i PER CENT 0_2:5

FB9E 386C38760CCC7600

5539

DB

038H,06CH,038H,076H,ODCH.OCCH,076H,000H

FBA6 6060COOOOOOOOOOO

DB

060H.060H,OCOH.OOOH,OOOH,OOOH,OOOH,OOOH

FBAE 1830606060301800

5540
5541

DB

OI8H,030H.060H,060H.060H.030H.018H.000H I ( 0_28

FBB6 6030181818306000

5542:

OB

060H,030H,018H,018H,018H,030H,060H,OOOH

& 0_2:6
'0_2:7
) 0_2:9

System BIOS 5-99

LOC OBJ

LINE

FBBE 00663CFF3C660QOQ

5543

SOURCE

*

DB

OOOH.066H.03CH.OFFH,03CH,066H.OOOH,OOOH ;

fat6 003030FC30300000

5544

DB

000H.030H,030H,OFCH,030H,030H,OOOH,OOOH I + o_28

FBCE 0000000000303060

5545

DB

QOOH,OOOH.000H,OQOH,OOOH,030H,030H,060H I • 0_2C

0_2A

FBD6 OOOOOOFCOODOOOOO

5546

DB

OOOH,OOOH,OOOH,OFCH,OOOH,OOQH,DOOH.OOOH ; - o_20

FBOE 0000000000303000

5S47

DB

OOOH, oOOH .OOOH, OOOH, OOOH. 0'30H, 030H, OOOH ; • D_2E

FBE6 060C183060C08000

5548

DB

006H,OOCH,OI8H,030H,060H,OCOH,oeOH,OOOH I 10_2F

FBEE 7CC6CEQEF6E67COD

5549

DB

07CH,OC6H,OCEH,00EH,OF6H,OE6H,07CH,OOOH ; 0 o_30

FBFo 3D7030303030FCOO

555Q

DB

030H, 070H ,0'301-1. 030H, 030H. 030H. OFCH, OOOH i 1 o_31

FBFE 78CCOC3860CCFCOD

5551

DB

FeDb 78CCOC380CCC7800

5552

DB

078H, OCCH. oocH, 0'38H, OOCH. OCCH, 078H, OOOH ; 3 0_33

FeOE lC3C6CCCFEOClEOO

5553

DB

plCH,03CH,06CH,OCCH,OFEH,OOCH.01EH,00PH ; 4 o_3'+

FeI6 FCCOF80COCCC780D

555'+

DB

FelE 3860COFSCCCC7800

5555

DB

038,,",,060H,OCOH,OF8H,OCCH,DCCH,078H,000H ; 6 0_36

FeZ6 FCCCQClS30303000

5556

DB

OFCH,OCCH,00CH,018H,030H.03DH,030H,OOOH ; 7 o_37

FC2E 78CCCC78CCCC7800

078H. OCCH, OOtH, 038H, 060H, OCCH. OFCH, OOOH ; 2 o_32

OF~H,OCOH,OF8H,00CH,00CH.OCCH,078H,000H

; 5 0_35

5557
5558

DB

078H,OCCH,OCCH,078H,OCCH,OCCH,07aH.000H ; 8 o_38

DB

078H,OCCH.OCCH.07CH,OOCH,OI8H,070H,000H

90_39

FC3E 0030300000303000
FC46 0030300000303060

5559

DB

OOOH ,030H. 030H ,OOOH ,OOOH, 030H, 030H, OOOH ;

: 0_3A

5560

DB

00DH,030H.030H.OOOH.000H,030H,030H,060H ;

FC4E 183060C060301800

5561

DB

018H,030H,060H,OCOH.060H,030H,OI8H.OOOH ; < 0_3C

Feso OOOOFCOOOOFCOOQO

5562

DB

OOOH .OOOH, OFC!-I, OOOH, OOOH. OFCH .OOOH. OOOH ;

FC5E 6030180C18306000

5563

DB

060H,030H,OI8H,OOCH,OI8H,030H,060H,OOOH ; > 0_3E

FC6b 78CCOC1830003000

556'+

DB

078H,OCCH,OOCH.018H.030H,OOOH,030H,OOOH ; : D_3F

Fe6E 7CC6DEDEOECQ78QO

5565

DB

FC76 3D78CCCCFCCCCCQO

5566

DB

030H,078H,OCCH,OCCH,OFCH.OCCH.OCCH.000H ; A o_41

FelE Feb6661C6666FCOO

5567

DB

OFtH,066H,066H,07CH,066H,066H,OFCH.000H ; B 0_42

FCB6 3C66COCOC0663COO

5568

DB

03CH,066H,OCOH,OCOH,OCOH,066H,03CH,000H ; C o_43

FceE F86C6666666CFeoo

5569

DB

Of8H,06CH,066H,066H,066H,06CH,Of8H.000H ; 00_4'+

F~96

FE6268186862FEOO

5570

DB

OFEH.062H,068H,078H,068H,062H.OFEH.000H ; E 0_45

FC9E FE6268786860FOOO

5571

DB

OFEH,062H,068H.078H,068H,060H,OFOH.000H I F 0_46

FeA6 3C66COCOCE663EOO

5572

DB

03CH,066H,OCOH.OCOH.OCEH.066H,03EH,000H ; G o_47

FCAE CCCCCCFCCCCCCCOO

5573

DB

OCCH,OCCH,OCCH.OFCH.OCCH.OCCH,OCCH.OOOH ; H 0_'t8

FCB6 7830303030307800

5574

DB

FeBE 1EococoecceC7800

5575

DB

01EH,00CH,OOCH.00CH,OCCH.OCCH,078H.000H ; J D_4A

FeC6 E6666C786C66E600

5576

DB

OE6H,066H,06CH.078H,06CH.066H.OE6H.000H ; K 0_4B

FC36 78CCCC7COC187000

; 0_3B

=

0_30

07CH,OC6H,ODEH,OOEH.ODEH.OCOH,078H,000H ; GI o_40

076H.030H,030H.030H,030H,030H.078H.OOOH i I o_49

FCCE F06060606266FEOO

5577

DB

OFOH.060H,06QH.060H,062H,066H,OFEH.000H ; L 0_4C

FCD6 C6EEFEFED6C6C600

5578

DB

OC6H.OEEH,OFEH 1 0FEH,OD6H,OC6H.OC6H.000H ; M 0_40

fCOE C6E6F60ECEC6C600

5579

DB

FCE6 386CC6C6C66C3800

5580

DB

038H.06CH,OC6H.OC6H.OC6H,06CH.038H,000\-l ; OO_4F

FCEE FC66667C6060FOOO

5581

DB

OFCH,066H,066H,07CH,060H.060H,OFOH,OOOH ; PO_SO

FCF6 78CCCCCCOC781COO

5582

DB

078H.OCCH,OCCH,OCCH,ODCH,078H.OICH,000H ; Q o_51

OC6H,OE6H,OF6H.ODEH,OCEH,OCbH,OC6H.OOOH ; N O_4E

FCFE fC66667C6C66E600

5583

DB

OFCH,066H,066H,07CH,06CH.066H.OE6H,OOOH ; R o_52

F006 78CCE0701CCC7800

5584

DB

078H.OCCH,OEOH,070H,OlCH,OCCH,078H,000H ; SO_53

FQOE FCB4303030307800

5585

DB

OFCH, OB4H, 030H. 030H, 030H, 030H, 078H. OOOH ITO_54

FO 16 CCCCCCCCCCCCFCOO

SSM

DB

OCCH.OCCH,OCCH,OCCH,OCCH,OCCH,OfCH,OOOH J U o_55

fD1E CCCCCCCCCC783000

5587

DB

OCCH,OCCH,OCCH,OCCH,OCCH,078H,030H,000H t V 0_56
OC6H.OC6H,OC6H,006H,OfEH.OEEH.PC6H,OOOH ; W o_57

F026 C6C6C606fEEEC600

5588

DB

F02E C6C66C36386CC600

5589

DB

f036 CCCCCC7830307800

5590

DB

OCCH, OCCH. otCH, 078H. 030H. 030H, 078H. OOOH ; '( o_59

F03E fEC66C183266FEOO

5591

DB

OFEH.OC6H,oeCH,olSH.032H,066H,OFEH.000H I Z 0_5A

F046 7860606060607800

5592

DB

078H,060H.060H,06qH,ObOH,060H,078H,OOOH I ( 0_56

F04E C06030160C060200

5593

DB

OCOH.060H.030H.018H.OOCH.006H.002H.000H ; BAtKSLASH 0_5C

F056 7818181818187800

5594

DB

fOSE 10386CC600000000

5595

DB

010H.038H,06CH,OC6H.OOOH.000H.OOOH.000H ; CIRCUMFLEX 0_5E

f066 OOOOOOOOOOOOOPff

5596

DB

OOOH.OOOH.OOOH.OOOH,OOOH,OOOH,OOOH,OFFH i _ 0_5F

OC6H,OC6H,06CH.038H.038H,06CH.OC6H,OOOH i X o_58

P78H,018H.018H,018H,018H,018H.078H,OOOH ;

1 o_50

f06E 3030180000000000

5597

DB

030H.030H,018H.000H.OOOH,000H,OOOH.OOOH ;

F076 0000780C7CCC7600

5598

DB

OOOH.OOOH.078H,OOCH.07CH,OCCH,076H.000H ;

LOWER CASE A o_61

F07E E060607C66660COO

5599

DB

OEOH,06OH,060H.07CH.066H,066H.OOCH,OOOH ;

l.C. B 0_62

, 0_60

F066 000078CCCOCC7800

5600

DB

000H.OOOH,078H,OCCH.OCOH,OCCH.078H.OOOH ; L.C. C 0_63

F08E lCOCOC7CCCCC7600

5601

DB

01CH,OOCH.OOCH,07CH,OCCH,OCCH.076H,OOOH I l.C. 00_6'+

fD96 000078CtFCC07800

5602

DB

OOOH,OOOH.078H.OCCH.OFCH,OCOH.078H,OOOH

L.C. E 0_65

F09E 386C60F06060FOOO

5603

DB

038H,06CH,060H,OFOH.060H,060H,OFOH,OOOH

l.C. F 0_66

FOA6 000076CCCC7COCF8

560'+

Da

OOOH,OOOH,076H.OCCH,OCCH,07CH,OOCH,OF8H

l.C. G o_67

FDAE E0606C766666E600

5605

DB

OEOH.060H,06CH,076H.066H.066H,OE61-!,000H I L.C. H o_68

FOB6 3000703030307800

5606

DB

030H;000H,070H.030H.030H,030H.078H,OOOH

L.C. I

FOBE OCOOOCOCOCCCCC78

5607

DB

OOCH,OOOH,00CH,00CH,00CH.OCCH.OCCH,078H

L.C. J D_6A

FOCb E060666C786CE600

5608

DB

OEOH.060H,066H,06CH.078H.06CH.OE6H,000H

l.C. K 0_66

070H.030H,030H,030H,030H.030H,078H,OOOH ; L.C. L O_6C

0_69

FOCE 703030]030307800

5609

DB

F006 0000CCFEFE06C600

5610

DB

OQOH.000H,OCCH,OFEH.OFEH,006H,OC6H.OOOH ; L.C. N 0_60

FOOE 0000F8CCCCCCCCOO

5611

DB

OOOH,OOOH,OF8H,OCCH,OCCH,OCCH,OCCH,OOOH

l.C. N 0_6E

FOE6 000078CCCCCC7800

5612

DB

OOOH.OOOH,078H,OCCH,OCCH.OCtH.078H,OOOH

l.C.

FOEE 00000C66667C60FO

5613

DB

000H,OOOH,OOCH,066H.066H.07CH.060H,OFOH

L.C. P o_70

FDF6 000076CCCC7COCIE

5614

DB

000H.OOOH,076H,OCCH.OCCH.07CH,00CH.OIEH

L.C. Q o_71

FOFE OOOOOC766660fOOO

5615

DB

OOOH.000H,OOCH,076H,066H,060H,OFOH.OOOH

l.C. R o_72

HOb 00007CC0780Cf800

5616

Da

OOOH,OOOH,07tH,OCOH,078H.00CH,OF8H.OOOH I l.C. S o_13

FEOE 10307C3030341800

5617

DB

010H,030H.07CH,030H,030H,034H,018H.000H

l.C. T 0_74

fE16 OOOOCCCCCCCC7bOO

5618

DB

000H.000H,OCCH,OCCH,OCCH,OCCH,076H.000H

l.C. U 0_75

fEIE 0000CCCCCC783000

5619

DB

OOOH.000H,OCtH,OCCH,aCCH,078H,030H,OOOH I L.C. V 0_76

5-100 System BIOS

a

O_6F

LOC OBJ

LINE

SOURCE
OOOH.OOOH,OC6H,OD6H,OFEH,OFEH,06CH,QOOH I L.e. W 0_77

5620
5621

08

FE2E 0000C66C386CC600

08

QOQH.OOOH,OC6H,06CH,038H,06CH.OC6H,OOOH

L.e. X 0_78

FE36 DOOOCCCCCC7COCF8

5622

DB

ODOH,OOOH.OCCH,OCCH,OCCH,07CH,QOCH,QF8H

L.C. Y 0_79

FE3E OOOOFC983064FCOO

FE26 OOOOC6D6FEFE6COO

5623

DB

OOOH,DOOH,OFCH,098H,030H,064H,OFCH.OOOH I

L.e. Z 0_7.

FE46 lC3030E030301COO

5624

DB

OlCH,030H,030H,OEOH,030H,030H,OlCH,OOOH

(D_7S

FE4E 1818130018181600

5625

DB

018H,018H.018H,OOOH,018H,018H,018H,OOOH

I

FES6 E030301C3030EOOO

5626

08

OEOH.030H.030H.OICH,030H.03DH,OEOH,OOOH I ) 0_70

FESE 760COOOOOOOOOOOO

5627

DB

076H.ODCH,OOOH,OOOH,DOOH,OOOH,OOOH.OOOH ; TILDE 0_7E

FE66 OOl0386CC6C6FEOQ

5628

DB

OOOH,010H.038H.06CH,OC6H,OC6H,OFEH,000H 1 DELTA D_7f

D_7C

5629
5630

1--- INT lA ---------------------------------------------

5631

; TIME_OF _DAY
THIS ROUTINE ALLOWS TIlE CLOCK TO BE SET/READ

5632:
5633
5634

INPUT

5635

(AHl :: 0

READ THE CURRENT CLOCK SETTING

=

5636

RETURNS CX

5637

OX

= LOW

5638

AL

=0

5639
5640

OF COUNT

<>0 IF ON ANOTHER OA Y
(AH)

5642

=
CX

5643

SET THE CURRENT CLOCK

1

=

HIGH PORTION OF COUNT

OX = LOW PORTION OF COUNT
; NOTE: COUNTS OCCUR AT THE RATE OF

5645

1193180/65536 COUNTS/SEC

5646
5647

PORTIot~

IF TIMER HAS NOT PASSED

2:4 HOURS SINCE LAST READ

5641

5644

HIGH PORTION OF COUNT

(OR ABOUT 18.2 PER SECOND -- SEE EqUATES BElOWl
; ----------- ---- --- -- ------ -- - -- -------------- ------- ----

5648

CS :CODE .OS:OATA

ASSUME

FE6E

5649

ORG

FE6E

5650

TINE_OF _DAY

FE6E FB

5651

ST!

FE6F IE

5652

PUSH

OS

FE70 E8E6FB

5653

CALL

DOS

FE73 OAE4

5654

OFE6EH
PROC

FAR
INTERRUPTS BACK ON
SAVE SEGNENT

OR

AH.AH

I AH=O

FE75 7407

5655

JZ

FEn FECC

5656

DEC

T2
AH

; AH=I

FE79 Nib

5657

JZ

13

FE7B

5658

FE7B FB

5659

FE7C IF

5660

POP

fE7D CF

5661

IRET

READ_TINE
SET_TIME

Tl:

; TOO_RETURN
;

ST!

; RETURN TO CALLER
1 READ_TIME

T2:

FE7E

5662

FE7E FA

5663

eLI

FE7F .1107000

5664

MOV

FE82 C606700000

5665

MOV

TIMER_OFL I 0

FE87 8BOE6EOO

5666

MOV

CX. TINER_HIGH

FE88 88166COO

5667

MOV

OX. TIMER_LOW

JMP

Tl

FE8F EBEA

5668

INTERRUPTS BACK ON

; RECOVER SEGMENT

OS

; NO TINER INTERRUPTS WHILE READING
AL.TIMER_OFL
I GET OVERFLOW. AND RESET THE FLAG

TOO_RETURN

T3:

SET_TINE

FE91

5669

FE91 FA

5670

FEn 89166COO

5671

MOV

TIMER_LOW.

FE96 890E6EOO

5672:

HOV

TINER_HIGH,

FE9A C606700000

5673

HOV

TIMER_OF L. 0

RESET OVERFLOW

FE9F EBOA

5674

JHP

Tl

TOO_RETURN

5675

TINE_OF _DAY

eLI

NO INTERRUPTS WHILE WRITING

ox
ex

SET THE TIME

ENDP

5676
5677

; - -- -- - ---------- - --- -------------------- -- -- ---- - -- -- - --

5678

THIS ROUTINE HANDLES THE TIMER INTERRUPT FROM

5679

CHANNEL 0 OF THE 8253 TIMER. INPUT FREQUENCY

5680

IS 1.19318 MHZ AND THE DIVISOR IS 65536 • RESULTING

5681

IN APPROX.

18.2 INTERRUPTS EVERY SECOHO.

5682:
5683

; THE INTERRUPT HANDLER MAINTAINS A COUNT OF INTERRUPTS:

5684

I

5685

I

5686

I

5689
5690

TIME OF DAY.
CONTROL COUNT OF THE DISKETTE. AND WliEN IT EXPIRES,

5687
5688

SINCE POWER ON TIME, WHICH MAY BE USED TO ESTABLISH
THE INTERRUPT HANDLER ALSO DECREMENTS THE MOTOR
WILL TURN OFF THE DISKETTE MOTOR, AND RESET THE
MOTOR RUNNING FLAGS.

; THE INTERRUPT HANDLER WILL ALSO HNQKE A USER ROUTINE
THROUGH INTERRUPT ICH AT EVERY TIME TICK.

5691

THE USER

5692:

;

MUST CODE A ROUTINE ANO PLACE THE CORRECT ADDRESS IN :

5693

;

THE VECTOR TABLE.

5694

; ----------------- ------ - -------------------- -- - - - - --- ---

FEA5

5695

OFEA5H

FEA5

5696

PROC

FAR

System BIOS 5-101

LaC OBJ

LINE

SOURCE

FEA5 Fe

5697

STI

FEAb IE

5698
5699

PUSH

FEA7 50
FEA6 5;::
FEA9 E8ADFB
FEAt FF066COO

FEBO 7504
FEBl FF066EOD
FEel,

PUSH

5700
5701
5702
5703
5704

FEB6 833E6EOO18

5705
5706

FEBB 7515

I INTERRUPTS BACK ON
OS
AX
; SAVE MACHINE STATE

PUSH

OX

CALL

DDS

INC
JHZ

TIMER_lOW
T4

IHC

TIMER_HIGH

I INCREMENT HIGH WORD OF TIME
I TEST_DAY

CMP

TIMER_HIGH.Ol8H

I TEST FOR COUNT EQUALING 24 HOURS

T4:

I INCREMENT TIME
I TEST_DAY

5707

JHZ

5708

CMP

TS
TINER_lOW.OBOH

I DISKETTE_CTL

FEBD 813E6C006000
FEC3 7500

5709
5710

JHZ

TS

I DISKETTE_tTl

5711

; ------ TIMER HAS GONE 2:4 HOURS

5712
FEes 28CO
FEe7 A36EOO

SUB

5713
5714

MOV

FECA A36COO

5715

MOV

FEeD C606700001

5716
5717

MDV

FEDi?:

AX,AX
TIMER_HIGH.AX
TIMER_LOW. AX
TIMER_OFL,l

5718

; ------ TEST FOR DISKETTE TIME OUT

5719
5720

T5:

I DISKETTE_CTL

FEDi?: fEOE4DOD

57<:1

OEC

HOTOR_COUNT

FEOb 750B

5722

JHZ

T.

I RETURN IF COUNT NOT OUT

FEDS S0263FODFD

5723

AHD

MOTOR_STATUS ,DFDH

; TURN OFF MOTOR RUNNING BITS

FEOD BOaC

5724

MOV

AltOCH

FEDf BAF203

5725

MOV

DX,D3F2H

foe CTL PORT

FEE2 EE

5726

OUT

OX,Al

TURN OFF THE MOTOR

FEE3

5727

FEn CDIC

T6:

TIMER_RET:

5728

!HT

ICH

FEES B020

5729

MDV

AL, EOI

FEE7 E620

5730

OUT

02QH, A.l

FEE9 SA

5731

POP

OX

FEEA 58

5732

POP

AX

FEEB IF

5731

POP

OS

FEEC CF

5734
5735

; TRANSFER CONTROL TO A USER ROUTINE
; END OF INTERRUPT TO 8259

I RESET MACHINE STATE

IRET
TIMER_INT

; RETURN FROM INTERRUPT

ENDP

5736
5737
5738

1---- ----- -- ----------------------------- -------; THESE ARE THE VECTORS WHICH ARE MOVED INTO

5739

I THE 60B6 INTERRUPT AREA DURING POWER ON.

5740

i ONLY THE OFFSETS ARE DISPLAYED HERE. CODE

5741

i SEGMENT WILL BE ADDED FOR ALL OF THEM, EXCEPT :

5742

; WHERE NOTED.

5743

1------------------------------------------------

5744
FEF!

5745

FEF3

5746

FEFl A5FE

5747

FEF5 67E9

5746

FEF7 21FF

5749

FEF9 Z:SFF

5750

FEFB 23FF

5751

FEFO 23FF

5752

FEFF 57H

5753

HOI 23FF

5754

FF03 65FO

5755

FF05 4DFS

5756

H07 41F8

5757

FF09 59EC

5758

HOB 39E7

5759

FFOO 59FB

5760

FFOF 2EES

5761

FFll 02EF

5762

ASSUME

CS:COOE

DRG

DFEF3H

VECTOR_ T AS LE

ow
ow
ow
ow
ow
ow
ow
ow
ow
ow
ow
ow
ow

0"ow

LABEL

. WORD

i VECTOR TABLE FOR MOVE TO INTERRUPTS

OFFSEt,

TIMER_n~T

I INTERRUPT 6

OFFSET

KB_lNT

OFFSET

011
011
011
011

OFFSET
OFFSET
OFFSET

INTERRUPT 9
I INTERRUPT A
I INTERRUPT B
INTERRUPT C
; INTERRUPT 0

OfFSET DISK_INT
OFFSET

011

OFFSET VIDEO_IO

INTERRUPT E
I INTERRUPT F
I

OFFSET EQUIPMENT

INTERRUPT llH

OFFSET MEMORY _SIZE_DET
OFFSET DISKETTE_IO
OFFSET RS232_IO

INTERRUPT 10H
INTERRUPT 12H

I INTERRUPT 13H
I INTERRUPT 14H

CASSETTE_IO

; INTERRUPT 15HtFORMER CASSETTE 10)

OFFSET KEYBOARD_IO

I INTERRUPT 16H

0"

OFFSET PRINTER_IO

; INTERRUPT I1H

ow
ow

ODODOH

I INTERRUPT 16H

OF60DH

I

ow
ow
ow
ow
ow
ow
ow

OFFSET BOOT_STRAP

5761
FF13 0000

5764

FFI5 F2E6

5767

FF176EFE

5768

5765

MUST BE INSERTED INTO TABLE LATER

5766

FF19 4BFF

5769

FFlB 46FF

5770

FFlD A4FO

5771

FFIF C7EF

5772

FF2l 0000

5773

5-102 System BIOS

INTERRUPT 19H

TIME_OF _DAY

; INTERRUPT lAH -- TUIE OF OM

DUMMY_RETURN

; INTERRUPT IBH -- KEYBOARD BREAK AODR

DUMMY_RETURN

; INTERRUPT lC -- TIMER BREAK AD DR

VIOEO_PARMS
OFFSET DISK_BASE

INTERRUPT 10 -- VIDEO PARAMETERS
I

INTERRUPT IE -- DISK PARMS
INTERRUPT IF -- POINTER TO VIDEO EXT

LOC OBJ

LINE

SOURCE

5774
5775

; - - --- -------------------------------------------- - ------

5776

; TEMPORARY INTERRUPT SERVICE ROUTINE

5777

1. THIS ROUTINE IS ALSO lEFT IN PLACE AFTER THE

5778

POWER ON DIAGNOSTICS TO SERVICE UNUSED

5779

INTERRUPT VECTORS.

5780

CONTAIN EITHER:

5781

CAUSED CODE TO BE EXEC.

5782

2.

5783
5784

FF23

5785

'FF'

FOR NON-HARDWARE INTERUPTS THAT WAS

EXECUTED ACCIDENTLY.
; -- --- -- --- - ------- ------ -------- ----------------- - -- - - --

011

PROC

NEAR

ASSUME

DS:DATA

FF23 IE

5787

PUSH

OS

FF24 52

5788

PUSH

FF25 50

5789

PUSH

AX

H26 EBlOFS

5790

CALL

DDS

5786

LOCATION 'INTRJlAG' WILL

I. lEVel OF HARDWARE INT. THAT

,.---

OX
; SAVE REG AX CONTENTS

1=%"1

FF29 BOOB
FF2B f620

5791

MOV

AL,OBH

5792

OUT

INTAOO,.U

FF2D 90

5793

NOP

; READ IN-SERVICE REG

,

(FINO OUT WHAT lEVEL BEING

I SERVICED)

FF2E £42:0

5794

IN

Al,INTAOO

I GET LEVEL

FF30 8AEO

5795

MOV

AH,Al

; SAVE IT

FF3z OAC4

5796

OR

AL,AH

; OO? (NO HARDWARE ISR ACTIVE)

FF34 7504

5797

JNZ

HW_INT

FF36 84FF

5798

MOV

AH,OFFH

JMP

SHORT SET_INTRJLAG

; SET FLAG TO FF IF NON-HDWARE

IN

AL,INTAOl

I GET MASK VALUE
; MASK OFF LVL BEING SERVICED

FF38 fBOA

5799

FF3A

FF3A £421

5600
5801

FF3C OAC4

5802

OR

AL,AH

FF3E E62:1

5803

OUT

INTAOl,AL

FF40 B020

5604

MOV

AL,EOI

FF42 f62:0

HW_INT:

OUT

5805

FF44

5806

FF44 88266800

5807

MOV

FF48 58

5806

FF49 SA

5809

FF4A IF

5810

FF4B

5811

FF4B CF

5812
5613

INTAOO.AL

SET_INTRJLAG:
INTRJLAG.AH

; SET FLAG

POP

AX

I RESTORE REG AX CONTENTS

POP

OX

POP

OS

DUMMY_RETURN:

I NEED IRET FOR VECTOR TABLE

IRET

011

ENDP

5814
5815

5816
5817

; ---------------- -- - - --- -------------------- ----; DUMMY RETURN FOR ADDRESS COMPATIBILITY

1------------------------------------------------

FF53

5616

ORG

FF53 CF

5819

IRET

OFF53H

582.0
5821

;-- INT 5 ---------------------------------------------------------------

5822

THIS LOGIC WILL BE INVOKED BY INTERRUPT OSH TO PRINT THE

5823

SCREEN. THE CURSOR POSITION AT THE TIME THIS ROUTINE IS INVOKED

5824

WILL BE SAVED AND RESTORED UPON COMPLETION. TIlE ROUTINE IS

5825

INTENDED TO RUN WITH INTERRUPTS ENABLED. IF A SUBSEQUENT

5826

'PRINT SCREEN' KEY IS DEPRESSED DURING THE TIME THIS ROUTINE

5827

IS PRINTING IT WILL BE IGNORED.

5828

ADDRESS 50:0 CONTAINS THE STATUS OF TIlE PRINT SCREEN:

5829
5830

50:0

EITHER PRINT SCREEN HAS NOT BEEN CALLED
OR UPON RETURN FROM A CALL THIS INDICATES

5832

A SUCCESSFUL OPERATION.

5833
5834
5835
5836

FF54

=0

5831

5837

=1

PRINT SCREEN IS IN PROGRESS

=255

ERROR ENCOUNTERED DURING PRINTING

1------------------------------------------------------------__ ---______ _
ASSUME

ORG

CS :CODE ,DS:XXDATA
OFF54H

fF54

5838

FF54 FB

5839

STI

FFS5 IE

5840

PUSH

OS

FF56 50

5641

PUSH

AX

FFS7 53

5842

PUSH

ex

PRINT_SCREEN

PROC

fAR
; MUST RUN WITH INTERRUPTS ENABLED
; MUST USE 50:0 FOR DATA AREA STORAGE

FFS8 51

5843

PUSH

CX

I WILL USE THIS LATER FOR CURSOR LIMITS

FF59 52

5844

PUSH

OX

; WILL HOLD CURRENT CURSOR POSITION

FFSA 885000

5845

MOV

AX.XXDATA

; HEX 50

FF5D 8EDS

5846

MOV

DS,AX

Ff5F 803EOOOOOI

5847

CMP

STATUS_BYTE,1

I SEE IF PRINT ALREADY IN PROGRESS

FF64 745f

5848

JZ

EXIT

; JUMP IF PRINT ALREADY IN PROGRESS

H6b C606000001

5849

MOV

STATUS_BYTE ,I

; INDICATE PRINT NOW IN PROGRESS

HbB B40F

5650

MOV

AH.15

; WILL REQUEST THE CURRENT SCREEN MODE

System BIOS 5-103

LaC OBJ
FF~D

COlO

LINE

SOURCE

5851

INT

IOH

IALl=MOOE

5852

[AH ]:NUMBER COLUMNS/LINE
[BH I=VISUAl PAGE

5853
5854

;------ -- ------------------------------------------------------

5855

[AX I AND THE PAGE IF APPLICABLE IS IN [BH 1. THE STACK

5857

HAS DS,AX,BX,CX,OX PUSHED. (AI HAS VIDEO MODE

5858
FF6F 8Ace

AT THIS POINT WE KNOW THE COLUMNS/LINE ARE IN

5856

; ---------- - ---- --- --- ------------- --- ----- ----------- ----------; WILL MAKE USE OF [CX I REGISTER TO
MOV
Cl.AH

FF71 B519

5859
5860

MOV

CH.25

FF73 E85S00

5861

CALL

CRlF

FF76 51

586:?:

PUSH

ex

; SAVE SCREEN BOUNDS

FF77 6403

5863

MOV

AH.3

I WI~L NOW READ THE CURSOR.

FF79 COlO

5864

INT

10H

; AND PRESERVE THE POSITION

FF7B 59

5865
5866
5867

POP

ex

; RECALL SCREEN BOUNDS

PUSH

ox

; RECALL tSHl=VISUAL PAGE

XOR

DX,OX

; WIll SET CURSOR POSITION TO [0,0]

Ff7C 52
FF7D 3302

5868

THE LOOP FROM PRllO TO THE INSTRUCTION PRIOR TO PRIZO

5870

IS THE lOOP TO READ EACH CURSOR POSITION FROM THE
SCREEN AND PRINT.

5871
5872

;----------------------------------------------------------------

5873

PRIIO:

FF7F 6402

5874

FF81 COlO

5875

!NT

10H

FF83 8408

5876

MOV

AH,8

FFS5 COlO

5877

INT

10H

He7 OACO

5878

FF89 7502

5879
5880

FF8B 8020
FFaD

; CARRIAGE RETURN LINE FEED ROUTINE

; ---------- ------------- - -- -- --------- - - ------------------- - - - ---

5869

FF7F

; CONTROL ROW & COLUMNS

5881

MOV

AH.2

I TO INDICATE CURSOR SET REQUEST

NEW CURSOR POSITION ESTABLISHED
TO INDICATE READ CHARACTER
; CHARACTER NOW IN {ALl

0'

AL,AL

SEE IF VALID CHAR

JNZ

PR1l5

J JUMP IF VALID CIiAR

MOV

AL, '

MAKE A BLANK

PRIlS:

FFBD 52

5882

PUSH

OX

SAVE CURSOR POSITION

FFeE 3302:

5883

XOR

OX,OX

INDICATE PRINTER I

FF90 32E4

5884

XOR

AH,AH

j

TO INDICA.TE PRINT CHAR IN [AL]

FFn CDl7

5885

INT

17H

I

FF94 SA

5886

POP

OX

PRINT THE CHARACTER
RECALL CURSOR POSITION

FF95 F6C425

5887
5888

TEST

AH,

JNZ

ERRIO

INC

DL

I ADVANCE TO NEXT COLUMN

I SEE IF AT END OF LINE

FF9S 752:1

2SH

; TEST FOR PRINTER ERROR
JUMP IF ERROR DETECTED

FF9C 3AtA

5889
5890

CMP

CL,Dl

FF9E 750F

5891

JNZ

FFAO 3202

sen

XOR

PFlUO
OL,OL

FFA2: SAE2

58'13

MOV

AH,DL

(AH 1=0

FFA4 52

5894

PUSH

ox

SAVE NEW CURSOR POSITION

FF9A FEt2

IF NOT PROCEED

BACK TO COLUMN 0

FfAS EBBOO

5895

CALL

CRLF

LINE FEED CARRIAGE RETURN

FFA8 SA

5896

POP

ox

RECALL CURSOR POSITION

FFA9 nCb

5897

INC

DH

ADVANCE TO NEXT LINE

FFAB 3AEE

CMP

CH .DH

fINISHED?

HAD 7500

5898
5899

JNZ

PRIlO

FFAF

5900

IF NOT CONTINUE

PRI20 :
RECALL CURSOR POSITION

5901

POP

OX

j

FFBC 8402:

5902:

MOV

AH ,2

; TO INDICATE CURSOR SET REQUEST

HB:?: COlO

5903

INT

10H

; CURSOR POSITION RESTORED

FfB4 C606000000

5904

MOV

STATUS_BYTE ,0

FFB9 ESCA

5905

JMP

SHORT EXIT

; EXIT THE ROUTINE
; GET CURSOR POSITION

FFAF SA

INDICATE FINISHED

ERRIO:

FFBB

5906

HBB SA

5907

POP

OX

FFBe 8402

5908

MOV

AH.2

; TO REQUEST CURSOR SET

FfBE COlO

5909

INT

10H

; CURSOR POSITION RESTORED

FFeo

5910

FFCO C606000DFF

5911

FFCS

5912

ERR20 :
; INDICATE ERROR

MOV
EXIT:

Hes SA

5913

POP

FFCb 59

5914

POP

OX

ex
ex

FFC7 58

5915

POP

FFee 58

5916

POP

AX

FFC9 IF

5917

POP

OS

FFCA Cf

5918

IRET

5919

PRINT_SCREEN

I RESTORE ALL THE REGISTERS USED

ENOP

5920
5921

j------

CARRIAGE RETURN, LINE FEED SUBROUTINE

CRLF

PROC

NEAR

XO,

DX,DX

; PRINTER 0

XO,

AH,AH

I WILL NOW SEND INITIAL LF ,CR

MOV

AL,12Q

I IF

5922

FFee

5'123

fFCB 3302

5924

HCO 32E4

5925

TO PRINTER

5926

Ffef BOOA

sn7

5-104 System BIOS

LOC OBJ

LINE

SOURCE

INT

fFOl C017

5928
592.9

XOR

17H
AK,AH

; SEND THE LINE FEED

FFD3 32E4
FFOS BOOO

5930

MOV

AL.15Q

; CR

to 17

5931

INT
RET

17H

; SEND THE CARRIAGE RETURN

FfD7

FFD9 C3

5932
5933

CRlf

; NOW FOR THE CR

ENOP

5934

5935

; ------------ ------------ ---- -- -- -- ------------ -----------------

5936

PRINT A SEGMENT VALUE TO LOOK LIKE A 20 BIT ADDRESS

5937

OX MUST CONTAIN SEGMENT VALUE TO BE PRINTED

5938
FFOA

5939

FFDA 8AC6

5940

; ----------- ---------------------- - - ------ ----- ---------- --- ---PIH_SEG PRoe
NEAR
MaV

AL,aH

FFDC E8ACF9

5941

CALL

XPC_BYTE

FFDF 8AC2

5942

MOV

Al.Ol

FFEI E8A7F9

5943

CALL

XPC_BYTE

FFE4 8030

5944
5945

HOV

Al. '0'

CALL

PRT_HEX

FFE6 E8B3F9

5946
5947

MOV

Al, '

FFEB E8AEF9

CALL

PIH_HEX

FFEE C3

5948

RET

FfE9 8020

5949
5950
5951

;GET HSB

;lSB
; PRINT A '0

'

; SPACE

PRT_SEG ENDP

CODE

ENDS

5952
5953
5954

; --------------- - -- -------------POWER ON RESET VECTOR

5955
5956

VECTOR

; -------------------------------SEGMENT AT OFFFFH

5957

0000 E.A.5BEOOOFO

5958
5959
5960

0005 31312F30382F38

5961
5962

.----- POWER ON RESET
JMe

RESET

OB

'11/08/82'

; RELEASE HARKER

32
5963
5964

VECTOR

ENOS
END

System BIOS 5-105

5-106 System BIOS

SECTION 6. INSTRUCTION SET

Contents
8088 Register Model

6-3

Operand Summary ................................. 6-4
Second Instruction Byte Summary ......•.............. 6-4
Memory Segmentation Model .•................•..... 6-5
Use of Segment Override ............................ 6-5
Data Transfer .................................... 6-6
Arithmetic ....................................... 6-8
Logic .......................................... 6-10

String Manipulation ............................... 6-11
Control Transfer .........•....................... 6-12
8088 Conditional Transfer Operations ................. 6-15
Processor Control ...............•..•..........•.. 6-16
8087 Extensions to the 8088 Instruction Set ............ 6-17
Data Transfer ...........•............•.......... 6-17
Comparison ..................................... 6-19
Arithmetic ...................................... 6-19
Transcendental

.................................. 6-21

Instruction Set 6-1

Constants

6-21

Processor Control ................................ 6-22
8088 Instruction Set Matrix ........................ 6-25
Instruction Set Index .............................. 6-27

6-2 Instruction Set

8088
Register Model
AX:

AH

BX:

BH

AL

Accumulator

BL

Base

CX:

CH

CL

Count

DX:

DH

DL

Data

SP

Stack Pointer

BP

Base Pointer

SI

Source Index

DI

Destination Index

Instruction Pointer

IP
FLAGSH

General
Register File

I

FLAGSL

Status Flags

CS

Code Segment

DS

Data Segment

SS

Stack Segment

ES

Extra Segment

}

Segment
Register File

Instructions which reference the flag register file as a 16-bit object
use the symbol FLAGS to represent the file:

15

7

I X I X

X

0

X I OF I DF IIF I TF I SF I ZF I X I AF I X I PF I X I CF I

x = Don't Care

AF:
CF:
PF:
SF:
ZF:

Auxiliary Carry - BCD
Carry Flag
Parity Flag
Sign Flag
Zero Flag

}

8080 Flags

OF:
IF:
OF:
TF:

Direction Flag (Strings)
Interrupt Enable Flag
Overflow Flag (CF Ell SF)
Trap - Single Step Flag

}

8088 Flags

Instruction Set 6-3

Operand Summary
"reg field Bit Assignments:
16-Bit[w=1J
000
001
010
011
100
101
110
111

8-Bit [w=OJ

AX
CX
OX
BX
SP
BP
SI

000
001
010
011
100
101
110
111

01

Segment

AL
CL
OL
BL
AH
CH
OH
BH

ES
CS
SS
OS

00
01
10
11

Second Instruction Byte Summary

Imod I xxx

rim

mod

Displacement

00
01
10
11

OISP = 0*, disp-Iow and disp-high are absent
OISP = disp-Iow sign-extended to 16-bits, disp-high is absent
OISP = disp-high: disp-Iow
rim is treated as a "reg" field

MF = Memory format
00
01
10
11

-

32-bit Real
32-bit Integer
64-bit Real
64-bit Integer

rim

Operand Address

000
001
010
011
100
101
110
111

(BX) + (SI) + OISP
(BX) + (01) + OISP
(BP) + (SI) + OISP
(BP) + (01) + OISP
(SI) + OISP
(01) + DISP
(BP) + OISP*
(BX) + OISP

OISP follows 2nd byte of instruction (before data if required).
*except if mod = 00 and rim = 110 then EA = disp-high: disp-Iow.

6-4 Instruction Set

Memory Segmentation Model

o

7

Logical
Memory Space

r6I

t

.t

FFFFFH

B

:::

DisPlac~me';;
15

15
Selected
Segment
Register
CS,SS, DS, ES
or none
for 110, INT

I

I
I
I
I
I
I

I

0000 r-0000
0000

lli-

~

~

rl

I

'0:

Word {

0000 r-

I

19

I
I

0
CS
SS
DS
ES

I
I
I

~

---!I

I
I
I

}

7

L

S"ok

So,m."'

I .....

0

L

r---

Code Segment

XXXXOH

"'!:::

Offse t
Addr ess

l
J

.....

-

:~

~

MSB
LSB
BYTE

}DO" S',m."'
:~

I
I

I
I

I

... .,..

: Adder
I
I
I
I
I

}

Extra Data
Segment

T OOOOOH

0 Physical
Address
Latch

Segment Override Prefix

o

0 1 reg 1 1 0

Use of Segment Override
Operand Register

Default

IP (Code Address)
SP (Stack Address)
BP (Stack Address or Stack Marker)
SI or 01 (not including strings)
SI (Implicit Source Address for Strings)
01 (Implicit Destination Address for Strings)

CS
SS
SS
OS
OS
ES

With Override Prefix
Never
Never
BP + OS or ES, or CS
ES, SS, or CS
ES, SS, or CS
Never

Instruction Set 6-5

Data Transfer
MOV = Move
Register/memory to/from register
1 000

1 0

d

w

mod

reg

rim

Immediate to register/memory
1 000

1

mod

w

0

0

0

rim

data

Idata if w = 11

Immediate to register

o

1

w

reg

data

1data if w = 1 1

Memory to accumulator
101 0 0 0 0

w

addr-Iow

addr-high

addr-Iow

addr-high

Accumulator to memory
1010001w

Register/memory to segment register
1 0

0

0

1

1 0

I

mod

0

reg

rim

reg

rim

Segment register to register/memory
10001100

mod

0

PUSH = Push
Register/memory
mod

1

mod

0

1 0

rim

Register
10

1 0

1 0

reg

Segment reg ister
0

0

0

reg

01

Pop = Pop
Register/memory
1

0

0

0

1

Register
10

1 0

1 1 reg

Segment register
10

0

0

reg

1

1

1

6 . . 6 Instruction Set

0

0

rim

XCHG = Exchange
Registerlmemory with register

1

a a a a

1

I

1 w

mod

reg

rim

Register with accumulator

1

a a

a

1

reg

I

IN = Input to ALiAX from
Fixed port
1

1

1

a a

1

a

w

a

w

port

Variable port (OX)

1

1

1

a

1

1

OUT = Output from ALiAX to
Fixed port

1

1 1

a a

1

1 w

port

Variable port (OX)

1

1

1

a

1

1

a

w

XLAT = Translate byte to AL

1 1

a

1

a

1 1 1

I

LEA = Load EA to register

1

a a a

1

1

a

I

mod

reg

rim

I

mod

reg

rim

a a I

mod

reg

rim

1

LOS = Load pointer to OS

1

1

a a a

1

a

1

LES = Load pointer to ES

1

1

a a a

1

LAHF = Load AH with flags

1

a a

1 1 1 1 1

I

SAHF = Store AH into flags

1

a a

1 1 1 1

a

PUSHF = Push flags

1

a a

1 1 1

a a

POPF = Pop flags

1

a a

1 1 1

a

1

Instruction Set 6-7

Arithmetic
ADD = Add
Register/memory with register to either

o

0

0

0

0

0

d

w

I

mod

reg

rim

Immediate to register/memory
1 0

0

0

0

0

s

w

I mod

0

0

0

rim

data

data if s:w = 01

Immediate to accumulator
0000010w

data if w = 1

data

ADC = Add with carry
Register/memory with register to either

o

0

0

1 0

0

d

w

I

mod

reg

rim

Immediate to register/memory
1 0

0

0

0

0

s

w

I mod

0

1 0

rim

data

data if s:w = 01

Immediate to accumulator
0001010w

data

data if w = 1

INC = Increment
Register /Memory

1 w

1 1

mod 0 0 0 rim

Register

o

1 0

AAA

0

0

reg

= ASCII adjust for add

001101111

DAA

= Decimal adjust for add

00100111
SUB = Subtract
Register/memory and register to either

o

0

1 0

1 0

d

w

1 mod

reg

rim

Immediate from register/memory
1 0

0

0

0

0

s

w

1 mod

1 0

1 rim

data

Immediate from accumulator
0010110w

6-8 InstmctionSet

data

data if w = 1

data if s:w = 01

SBB = Subtract with borrow
Register/memory and register to either

o

0

0

1

1 0

d

w

1 mod

reg

rim

1

1 rim

Immediate from register/memory
1 0

0

0

0

0

s

w

1 mod

0

data

dataifs:w=01

Immediate from accumulator
data

0001110w

data if w = 1

DEC = Decrement
Register/memory
1111111w

mod

0

0

1

rim

mod

0

1

1

rim

Register

o

1 0

0

1 reg

NEG = Change sign
111101

w

CMP = Compare
Register/memory and register

o

0

1

1

1 0

d

w

1 mod

reg

rim

1

1 rim

Immediate with register/memory
1 0

0

0

0

0

s

w

1 mod

1

data

dataifs:w=01

Immediate with accumulator
data if w = 1

data

0011110wl

AAS = ASCII adjust for subtact
001111111

DAS = Decimal adjust for subtact
001011111

MUL = Multiply (unsigned)
1

1

1

1 0

1

1 w

1 mod

1 0

0

r /m

1 0

1 rim

IMUL = Integer multiply (signed)
1

1

1

1 0

1

1

w

1 mod

AAM = ASCII adjust for multiply
1101010000001010

DIV = Divide (unsigned)
1

1

1

1 0

1

1

w

mod

1

1 0

rim

Instruction Set 6-9

IDIV = Integer divide (signed)

1 1

1

1 0

1

1

w

1 mod

1 1 rim

1

AAD = ASCII adjust for divide

11010101100001010
CBW = Convert byte to word

100110001
CWD = Convert word to double word

10011001

Logic
NOT = Invert
1 1

1

1 0

1

1 w

mod 0

1 0

rim

SHL/SAL = Shift logicallarithmetic left

1

1 0

SHR

1

1 0

0

v

w

rim

mod

1 0

0

mod

1 0

1 rim

1

= Shift logical right

1 0

1 0

0

v

w

SAR = Shift arithmetic right

1

1 0

1 0

0

1 1 rim

v

w

mod

v

w

mod 0

0 0

v

w

mod 0

0

ROL = Rotate left

1

1 0

1 0

0

rim

ROR = Rotate right

1

1 0

RCL

1

1 0

0

1 rim

= Rotate through carry left

1 0

1 0

0

v w 1 mod 0 1 0 rim

RCR = Rotate through carry right

1

1 0

1 0

0

v

w

1 mod 0

1 1 rim

AND = And
Registerlmemory and register to either

o

0

1 0

0

0 d w

1 mod

reg

rim

Immediate to registerlmemory
1 0 0

0

0

0

0

w

1

mod

1 0 0

rim

data

Immediate to accumulator
00100

1 0

w

6-10 Instruction Set

data

data if w = 1

data if w = 1

TEST = And function to flags, no result
Register/memory and register

1 0

0

0

0

lOw

I

mod

reg

rim

Immediate data and register/memory

1 0

1

1 w

I mod

0

0 0

rim

data

data if w = 1

Immediate data and accumulator

1010100w

data

data if w = 1

OR = Or
Register/memory and register to either

o

0

0

0

1 0

d

w

I

mod

reg

rim

Immediate to register/memory

1 0

0

0 0

0

0

w

I mod

0 0

1 rim

data

data if w = 1

Immediate to accumulator

0000l10w

data

data if w = 1

XOR = Exclusive or
Register/memory and register to either

o

0

1

1 0

0

d

w

I

mod

reg

rim

Immediate to register/memory

1 0

0

0 0

0

0

w

I mod

1 0

rim

data

data if w = 1

Immediate to accumulator

00l1010w

data

data if w = 1

String Manipulation
REP = Repeat
1111001z1
MOVS = Move String

1010010w
CMPS = Compare String

1010011w
SCAS = Scan String

1010111w

Instruction Set 6-11

LODS = Load String

1 0

1 0

1 1 0

~

STOS = Store String

1010101w

Control Transfer
CALL = Call
Direct within segment

11101000

disp-high

disp-Iow

Indirect within segment
1111111

mod

0

1 0

rim

Direct intersegment
10011010

offset-low

offset-high

seg-Iow

seg-high

Indirect intersegment
1111111

mod

0

1

1 rim

JMP = Unconditional Jump
Direct within segment
1

1

1 0

1 0

0

1

I

disp-high

disp-Iow

Direct within segment-short
1

1

1 0

1 0

1

1

disp

Indirect within segment
1111111

mod

1 0

0

rim

Direct intersegment
11101010

offset-low

offset-high

seg-Iow

seg-high

Indirect intersegment
1111111

6-12 Instruction Set

mod

1 0

1 rim

RET = Return from CALL
Within segment
110000111
Within segment adding immediate to SP
11000010

data-low

data-high

Intersegment
11001011
Intersegment, adding immediate to SP
1 1 0

0

0

0

1 0 1

data-low

data-high

JE/JZ = Jump on equal/zero

o

1

1

1 0

1 0

0 1

disp

JL/JNGE

= Jump on less/not greater or equal

o

1

1

1

1

1 0

0 1

disp

JLE/JNG

= Jump on less or equal/not greater

o

1

1

1

1

1

1 0 1

disp

JB/JNAE = Jump on below/not above or equal

o

1

1

1 0

0

1 0 1

disp

JBE/JNA = Jump on below or equal/not above

o

1

1

1 0

1

1 0 1

disp

JP/JPE = Jump on parity/parity even

0

1

1

JO

= Jump on overflow

0

1

1

1 1 0

1 0

0

JS

= Jump on sign

0

1

1

1

1 0

1 0

disp

0

0

disp

0

0

disp

JNE/JNZ = Jump on not equal/not zero

o

1

1

1 0

1 0

1 1

disp

JNL/JGE = Jump on not less/greater or equal

o

1

1

1

1

1 0

1

disp

Instruction Set 6-13

JNLE/JG = Jump on not less or equal/greater

o

1

1

1

1

1

1

1

I

disp

JNB/JAE = Jump on not below/above or equal

o

1

1

1 0

0

1

1

I

disp

JNBE/JA = Jump on not below or equal/above

o

1

1

1 0

1

1

1

I

disp

JNP/JPO = Jump on not parity/parity odd

o

1

1

1

1 0

1

1

I

disp

JNO = Jump on not overflow

o

1

1

1 0

0

0

1

disp

JNS = Jump on not sign

o

1

1

1

1 0

LOOP = Loop

1

1

1 0

0

0

1

disp

ex times
0

1 0

disp

LOOPZ/LOOPE = Loop while zero/equal

1

1

1 0

0

0

0

1

I

disp

LOOPNZ/LOOPNE = Loop while not zero/not equal

1

1

1 0

0

0

JCXZ = Jump on

1

1

1 0

0

0

0

0

I

disp

ex zero
1

1

6-14 Instruction Set

disp

8088 Conditional Transfer Operations
Instruction

Condition

JE or JZ
JLor JNGE
JLE orJNG
JB or JNAE or JC
JBE or JNA
JP or JPE
JO
JS
JNE or JNZ
JNL orJGE
JNLE orJG
JNB or JAE or JNC
JNBE orJA
JNPorJPO
JNO
JNS

ZF = 1
(SF xor OF) = 1
((SF xor OF) or
ZF) = 1
CF = 1
(CF or ZF) = 1
PF = 1
OF = 1
SF = 1
ZF = 0
(SF xor OF) = 0
((SF xor OF) or
ZF) = 0
CF = 0
(CF or ZF) = 0
PF = 0
OF = 0
SF = 0

Interpretation

"equal" or "zero"
"less" or "not greater or equal"
"less or equal" or "not greater"
"below" or "not above or equal"
"below or equal" or "not above"
"parity" or "parity even"
"overflow' ,
"sign"
"not equal" or "not zero"
"not less" or "greater or equal"
"not less or equal" or "greater"
"not below" or "above or equal"
"not less or equal" or "above"
"not parity" or "parity odd"
"not overflow"
"not sign"

'''Above'' and "below" refer to the relation between two unsigned values, while
"greater" and "less" refer to the relation between two signed values.
INT = Interrupt
Type specified

1 0

0

1

1 0

1

type

Type 3
11001100
INTO = Interrupt on overflow

11001110
IRET = Interrupt return

11001111

Instruction Set 6-15

Processor Control
ClC = Clear carry

STC = Set carry

11111000

1111100

CMC

= Complement carry

1111010

ClD

= Clear direction

11111100
CLI = Clear interrupt

11111010

NOP

= No operation

10010000

STD = Set direction
1 1

1 0

STI = Set interrupt
1 1

o

1

HlT = Halt

WAIT = Wait

11110100

10011011

lOCK = Bus lock prefix

ESC = Escape (to external device)

11110000

1 0

1

x

x

x

mod

x

x

x

rim

Footnotes:
if d = 1 then "to"; if d = 0 then "from"
if w = 1 then word instruction; if w = 0 then byte instruction
if s:w = 01 then 16 bits of immediate data from the operand
if s:w = 11 then an immediate data byte is signed extended to form the 16-bit operand
if v = 0 then "count" = 1; if v = 1 then "count" in (Cl)
x = don't care
z is used for some string primitives to compare with ZF FLAG
AL = 8-bit accumulator
AX = 16-bit accumulator
CX = Count register
OS = Data segment
OX = Variable port register
ES = Extra segment
Above/below refers to unsigned value
Greater = more positive;
Less = less positive (more negative) signed values

6-16 InstructionSet

8087 Extensions to the 8088 Instruction Set

Data Transfer
FLO = Load

Integer/Real Memory to ST(O)

I mod

MF

Escape

rim

disp-Iow

disp-high

1 rim

disp-Iow

disp-high

1 0

1 rim

disp-Iow

disp-high

1 0

0

disp-Iow

disp-high

disp-Iow

disp-high

0

0

0

Long Integer Memory to ST(O)
Escape

1

1

I mod

1 0

Temporary Real Memory to ST(O)
Escape

0

1

1

I mod

BCD Memory to ST(O)
Escape

1

mod

rim

STO) to ST(O)
Escape

0

0

1 1 0 0 0 ST(i)

FST = Store
ST(O) to Integer/Real Memory
Escape

MF

mod

0

1 0

rim

ST(O) to ST(i)
Escape

1

0

1 1 0

1 0 STO)

Instruction Set 6-17

FSTP = STORE AND POP
ST(O) to IntegerlReal Memory

Escape

I mod

MF

0

1

1 rim

disp-Iow

disp-high

1 rim

disp-Iow

disp-high

1 rim

disp-Iow

disp-high

disp-Iow

disp-high

ST(O) to Long Integer Memory
Escape

1

1

I mod

1

ST(O) to Temporary Real Memory
Escape

0

1

1

I mod

1

1

ST(O) to BCD Memory
Escape

1

mod

1 1 0

rim

ST(O) to ST(i)
Escape

1

1 1 0 1 1 ST(i)

0

FXCH = Exchange ST(i) and ST(O)
Escape

0

0

1

1 1 0 0 1 ST(i)

{}-18 Instructioo Set

Comparison
FCOM = Compare
Integer/Real Memory to ST(O)
Escape

MF

0

mod

0

0

1 1 0

1 0

rim

disp-Iow

disp-high

disp-Iow

disp-high

ST(i) to ST(O)
Escape

0

0

1 0 ST(i)

FCOMP = Compare and Pop
Integer/Real Memory to ST(O)
Escape

MF

0

mod

0

1 1 0

0

1

1 rim

ST(i) to ST(O)
Escape

0

0

1 1 ST(i)

FCOMPP = Compare ST(1) to ST(O) and Pop twice
Escape

1

1

0

11 1 0 1 1 0 0 1

FTST = Test ST(O)
Escape

0

0

1

11

1001001

FXAM = Examine ST(O)
Escape

0

0

1

1 1 1 0 0 1 0 1

Arithmetic
FADD = Addition
Integer/Real Memory with ST(O)
Escape

MF

0

mod

0

1 1 0 0 0 ST(i)

0

0

0

rim

disp-Iow

disp-high

disp-Iow

disp-high

ST(i) to ST(O)
Escape

d

P

FSUB = Subtraction
Integer/Real Memory with ST(O)
Escape

MF

0

mod

1 0

R rim

0

1

1 0

R rim

ST(i) to ST(O)
Escape

d

P

1

Instruction Set 6-19

Arithmetic (Continued)
FMUL = Multiplication
Integer/Real Memory to ST(O)

Escape

MF

0

mod 0

0

1 rim

0

1

0

1 rim

disp-Iow

disp-high

disp-Iow

disp-high

ST(i) and ST(O)
Escape

d

P

1 0

FDIV = Division
Integer/Real Memory with ST(O)

Escape

MF

0

mod

0

1

1

1 R rim

ST(i) and ST(O)
Escape

d

P

1 0

0

1 rim

FSQRT = Square Root of ST(O)

Escape

0

0

1

I1

1

1

1

1 0

1

1

1 0

FSCALE = Scale ST(O) by ST(1)

Escape

0

0

1

I1

1

1

1 0

1

FPREM = Partial Remainder of ST(O) -;- ST(1)

Escape

0

0

1

I1

1

1

1

1 0

0

0

1 0

0

FRNDINT = Round ST(O) to Integer

Escape

0

0

1

I1

1

1

1

1

FXTRACT = Extract Components of ST(O)

Escape

0

0

1

I1

1

1

1 0

1 0

0

0

1

FABS = Absolute Value of ST(O)

Escape

0

0

1

I1

1

1 0

0

0

FCHS = Change Sign of ST(O)

Escape

0

0

1

11100000

6-20 Instruction Set

I

Transcendental
FPTAN

= Partial Tangent of ST(O)

Escape

0

0

1

I1

1

1

1 0

0

1 0

FPATAN = Partial Arctangent of ST(O) -;. ST(1)

Escape

0

0

1

11110011

F2XM1 = 2ST101-1

Escape

0

0

1

11110000

FYL2X = ST(1) . LOG 2[ ST(0)1

0

0

FYL2XP1

= ST(1) . LOG 2[ ST(O) +

Escape

0

0

1

I1

Escape

1

I1

1

1

1

1 0

1

1

0

0

1

1 0

0

1

1

1 0

11

Constants
FLOZ = Load

Escape

0

+ 0.0 into ST(O)
0

1

I1

1

FL01 = Load

+ 1.0 into ST(O)

Escape

0

0

1

I1

1 0

1

1

0

1 0

0

0

1

1 0

1 0

1

1

1 0

0

1

1 0

1 0

FLOPI = Load Tt into ST(O)

Escape

0

0

1

I1

FLOL2T = Load log210 into ST(O)

Escape

0

0

1

I1

1

1 0

FLOL2E = Load log2e into ST(O)

Escape

0

0

1

I1

1

1 0

FLOLG2 = Load log102 into ST(O)

Escape

0

0

1

I1

1

1 0

1

1 0

0

1

1 0

1

FLOLN2 = Load log.2 into ST(O)

Escape

0

0

1

1

1

1 0

Instruction Set 6-21

Processor Control

FINIT = Initialize NDP

0

Escape

1

1

I1

1

1 0

0

0

1

1

1 0

0

0

0

0

o

0

0

0

1

FENI = Enable Interrupts

Escape

0

1

1

I1

FDISI = Disable Interrupts

Escape

0

FLDCW

Escape

Escape

I1

1

0

1

I mod

1 0

1 rim

disp-Iow

disp-high

1 1

1 rim

disp-Iow

disp-high

1

1 rim

disp-Iow

disp-high

0

0

disp-Iow

disp-high

= Store Control Word
0

0

1

I mod

= Store Status Word

FSTSW

Escape
FCLEX

1

= Load Control Word
0

FSTCW

1

1

0

1

I mod

= Clear Exceptions

I1

Escape

0

FSTENV

= Store Environment

Escape

0

1

0

1

1

1

I mod

6-22 Instruction Set

1 0

0

rim

1 0

Processor Control (Continued)

FLDENV

= Load Enviroment

Escape

0

0

1

I

0

rIm

disp-Iow

disp-high

1 0

rIm

disp-Iow

disp-high

rIm

disp-Iow

disp-high

mod

1 0

mod

1

FSAVE = Save State

Escape

1

0

1

I

FRSTOR = Restore State

Escape

1

0

1

I

mod

1 0

0

FINCSTP = Increment Stack Pointer

Escape

0

0

1

I1

1

1

1 0

1

1

1

FDECSTP = Decrement Stack Pointer

Escape

0

1

1

1

1

101

1 0

= Free ST(i)

FFREE

Escape
FNOP

0

0

0

1

1 0 0 0 ST(i)

= No Operation

Escape

0

0

1

I

1

0

1 0

0

0

0

FWAIT = CPU Wait for NDP

10011011

Instruction Set 6-23

Footnotes:
ST(O) = Current Stack top
ST(i) = ith register below stack top

d = Destination
0- Destination is ST(O)
1 - Destination is ST(i)

P= POP
0- No pop
1 - Pop ST(O)
R= Reverse
0- Destination (op) Source
1 - Source (op) Destination
For
For
For
For

FSQRT:
FSCALE:
F2XM1:
FYL2X:

For

FYL2XP1:

For
For

FPTAN:
FPATAN:

-O:o:ST(O):o: + 00
- 2' 5:0: ST (1 ) < + 2' 5 and ST (1) integer
O:o:ST(0):o:2- 1
O

>

Shift

Cyan

Yellow

High Intensity

63

?

?

Shift

Cyan

White

High Intensity

40

64

@

@

Shift

Red

Black

Normal

41

65

A

A

Note 4

Red

Blue

Underline

42

66

B

B

Note 4

Red

Green

Normal

43

67

C

C

Note 4

Red

Cyan

Normal

44

68

D

D

Note 4

Red

Red

Normal

45

69

E

E

Note 4

Red

Magenta

Normal

46

70

F

F

Note 4

Red

Brown

Normal

47

71

G

G

Note 4

Red

Light Grey

Normal

48

72

H

H

Note 4

Red

Dark Grey

High Intensity

49

73

I

I

Note 4

Red

Light Blue

High Intensity
Underline

4A

74

J

J

Note 4

Red

Light Green

High Intensity

Shift

Characters, Keystrokes, and Colors 7-3

As Text Attributes

Value

As Characters

Hex Dec Symbol

Keystrokes

Color / Graphics
Monitor Adapter

IBM

Monochrome
Display
Modes Background Foreground
Adapter

4B

75

K

K

Note 4

Red

Light Cyan

High Intensity

4C

76

L

L

Note 4

Red

Light Red

High Intensity

4D

77

M

M

Note 4

Red

Light
Magenta

High Intensity

4E

78

N

N

Note 4

Red

Yellow

High Intensity

4F

79

0

0

Note 4

Red

White

High Intensity

50

80

P

P

Note 4

Magenta

Black

Normal

51

81

Q

Q

Note 4

Magenta

Blue

Underline

52

82

R

R

Note 4

Magenta

Green

Normal

53

83

S

S

Note 4

Magenta

Cyan

Normal

54

84

T

T

Note 4

Magenta

Red

Normal

55

85

U

U

Note 4

Magenta

Magenta

Normal

56

86

V

V

Note 4

Magenta

Brown

Normal

57

87

W

W

Note 4

Magenta

Light Grey

Normal

58

88

X

X

Note 4

Magenta

Dark Grey

High Intensity

59

89

Y

Y

Note 4

Magenta

Light Blue

High Intensity
Underline

5A

90

Z

Z

Note 4

Magenta

Light Green

High Intensity

5B

91

[

[

Magenta

Light Cyan

High Intensity

5C

92

\

\

Magenta

Light Red

High Intensity

5D

93

1

1

Magenta

Light
Magenta

High Intensity

5E

94

A

A

Shift

Magenta

Yellow

High Intensity

5F

95

-

-

Shift

Magenta

White

High Intensity

60

96

Yellow

Black

Normal

61

97

a

a

Note 5

Yellow

Blue

Underline

62

98

b

b

Note 5

Yellow

Green

Normal

63

99

c

c

Note 5

Yellow

Cyan

Normal

64

100

d

d

Note 5

Yellow

Red

Normal

65

101

e

e

Note 5

Yellow

Magenta

Normal

66

102

f

Yellow

Brown

Normal

f

Note 5

7 -4 Characters, Keystrokes, and Colors

As Text Attributes

As Characters

Value
Hex Dec Symbol
67

103

g

Keystrokes
g

Color/Graphics
Monitor Adapter

IBM
Monochrome
Display
Adapter
Modes Background Foreground
Note 5

Yellow

Light Grey

Normal
High Intensity

68

104

h

h

Note 5

Yellow

Dark Grey

69

105

i

i

Note 5

Yellow

Light Blue

High Intensity
Underline

6A

106

j

j

Note 5

Yellow

Light Green

High Intensity

6B

107

k

k

Note 5

Yellow

Light Cyan

High Intensity

6C

108

I

I

Note 5

Yellow

Light Red

High Intensity

6D

109

m

m

Note 5

Yellow

Light
Magenta

High Intensity

6E

110

n

n

Note 5

Yellow

Yellow

High Intensity

6F

111

a

a

Note 5

Yellow

White

High Intensity

70

112

p

p

Note 5

White

Black

Reverse Video

71

113

q

q

Note 5

White

Blue

Underline

72

114

r

r

Note 5

White

Green

Normal

White

Cyan

Normal

73

115

s

s

Note 5

74

116

t

+

Note 5

White

Red

Normal

75

117

u

u

Note 5

White

Magenta

Normal

76

118

v

v

Note 5

White

Brown

Normal

77

119

w

w

Note 5

White

Light Grey

Normal

78

120

x

x

Note 5

White

Dark Grey

Reverse Video

79

121

y

y

Note 5

White

Light Blue

High Intensity
Underline

7A 122

z

z

Note 5

White

Light Green

High Intensity

7B

123

!

!

Shift

White

Light Cyan

High Intensity

7C

124

I
I

I
I

Shift

White

Light Red

High Intensity

7D

125

I

I

Shift

White

Light
Magenta

High Intensity

7E

126

Shift

White

Yellow

High Intensity

7F

127

White

White

High Intensity

~

!J.

~

Ctrl -

Characters, Keystrokes, and Colors 7-5

As Text Attributes

As Characters

Value
Hex Dec Symbol

..

• *

Keystrokes

Color / Graphics
Monitor Adapter

IBM
Monochrome
Display
Modes Background Foreground
Adapter

80 to FF Hex are Flashing in both Color & IBM Monochrome

* * * *

80

128

C

Alt 128

Note 6

Black

Black

Non-Display

81

129

U

Alt 129

Note 6

Black

Blue

Underline

82

130

Alt 130

Note 6

Black

Green

Normal

Alt 131

Note 6

Black

Cyan

Normal

Alt 132

Note 6

Black

Red

Normal

83

131

84

132

e
a
a

85

133

II

Alt 133

Note 6

Black

Magenta

Normal

86

134

a

Alt 134

Note 6

Black

Brown

Normal

87

135

C

Alt 135

Note 6

Black

Light Grey

Normal

88

136

Alt 136

Note 6

Black

Dark Grey

Non-Display

89

137

e
e

Alt 137

Note 6

Black

Light Blue

High Intensity
Underline

8A

138

e

Alt 138

Note 6

Black

Light Green

High Intensity

8B

139

'i

Alt 139

Note 6

Black

Light Cyan

High Intensity

BC

140

1

Alt 140

Note 6

Black

Light Red

High Intensity

80

141

1

Alt 141

Note 6

Black

Light
Magenta

High Intensity

BE

142

A

Alt 142

Note 6

Black

Yellow

High Intensity

BF

143

A

Alt 143

Note 6

Black

White

High Intensity

90

144

Eo

Alt 144

Note 6

Blue

Black

Normal

91

145

ae

Alt 145

Note 6

Blue

Blue

Underline

92

146

AE

Alt 146

Note 6

Blue

Green

Normal

93

147

6

Alt 147

Note 6

Blue

Cyan

Normal

94

14B

i:i

Alt 148

Note 6

Blue

Red

Normal

95

149

b

Alt 149

Note 6

Blue

Magenta

Normal

96

150

0

Alt 150

Note 6

Blue

Brown

Normal

97

151

U

Alt 151

Note 6

Blue

Light Grey

Normal

98

152

Y

Alt 152

Note 6

Blue

Dark Grey

High Intensity

99

153

i:i

Alt 153

Note 6

Blue

Light Blue

High Intensity
Underline

9A 154

U

Alt 154

Note 6

Blue

Light Green

High Intensity

7 -6 Characters, Keystrokes, and Colors

As Text Attributes

Value

As Characters

Hex Dec Symbol

Keystrokes

Color/Graphics
Monitor Adapter

IBM
Monochrome
Display
Adapter
Modes Background Foreground

9B

155

¢

Alt 155

Note 6

Blue

Light Cyan

High Intensity

9C

156

£

Alt 156

Note 6

Blue

Light Red

High Intensity

9D

157

¥

Alt 157

Note 6

Blue

Light
Magenta

High Intensity

9E

158

Pt

Alt 158

Note 6

Blue

Yellow

High Intensity

9F

159

Alt 159

Note 6

Blue

White

High Intensity

Alt 160

Note 6

Green

Black

Normal

AO

160

f
a

A1

161

i

Alt 161

Note 6

Green

Blue

Underline

A2

162

6

Alt 162

Note 6

Green

Green

Normal

A3

163

U

Alt 163

Note 6

Green

Cyan

Normal

A4

164

n

Alt 164

Note 6

Green

Red

Normal

A5

165

N

Alt 165

Note 6

Green

Magenta

Normal

A6

166

2-

Alt 166

Note 6

Green

Brown

Normal

A7

167

.£

Alt 167

Note 6

Green

Light Grey

Normal

A8

168

i

Alt 168

Note 6

Green

Dark Grey

High Intensity

A9

169

r-

Alt 169

Note 6

Green

Light Blue

High Intensity
Underline

AA 170

---,

Alt 170

Note 6

Green

Light Green

High Intensity

AB

171

'/2

Alt 171

Note 6

Green

Light Cyan

High Intensity

AC

172

%

Alt 172

Note 6

Green

Light Red

High Intensity

AD

173

i

Alt 173

Note 6

Green

Light
Magenta

High Intensity

AE

174

Alt 174

Note 6

Green

Yellow

High Intensity

AF

175

Alt 175

Note 6

Green

White

High Intensity

BO

176

«
»
--..---.-

Alt 176

Note 6

Cyan

Black

Normal

B1

177

i

Alt 177

Note 6

Cyan

Blue

Underline

B2

178

I

Alt 178

Note 6

Cyan

Green

Normal

B3

179

Alt 179

Note 6

Cyan

Cyan

Normal

B4

180 I--

Alt 180

-Note 6

Cyan

Red

Normal

~

Alt 181

Note 6

Cyan

Magenta

Normal

Alt 182

Note 6

Cyan

Brown

Normal

B5

181

B6

182

~I

Characters, Keystrokes, and Colors 7-7

As Text Attributes

Value

Color /Graphics
Monitor Adapter

As Characters

Hex Dec Symbol

Keystrokes

Modes Background Foreground

IBM
Monochrome
Display
Adapter

B7

183

IT1

Alt 183

Note 6

Cyan

Light Grey

B8

184

R

Alt 184

Note 6

Cyan

Dark Grey

High Intensity

B9

185

Alt 185

Note 6

Cyan

Light Blue

High Intensity
Underline

Alt 186

Note 6

Cyan

Light Green

High Intensity

Alt 187

Note 6

Cyan

Light Cyan

High Intensity

W

h

BA 186

hl

Normal

BB

187

BC

188

~

Alt 188

Note 6

Cyan

Light Red

High Intensity

BD 189

~

Alt 189

Note 6

Cyan

Light
Magenta

High Intensity

BE

190

::::::l

Alt 190

Note 6

Cyan

Yellow

High Intensity

I

BF

191

Alt 191

Note 6

Cyan

White

High Intensity

CO

192

L-

Alt 192

Note 6

Red

Black

Normal

Cl

193

I

Alt 193

Note 6

Red

Blue

Underline

C2

194

Alt 194

Note 6

Red

Green

Normal

C3

195

Ait 195

Note 6

Red

Cyan

Normal

C4

196

Alt 196

Note 6

Red

Red

Normal

C5

197

Alt 197

Note 6

Red

Magenta

Normal

C6

198

Alt 198

Note 6

Red

Brown

Normal
Normal

fI

If-

Alt 199

Note 6

Red

Light Grey

~

Alt 200

Note 6

Red

Dark Grey

High Intensity

rr==

Alt 201

Note 6

Red

Light Blue

High Intensity
Underline

CA 202 ~L-

Alt 202

Note 6

Red

Light Green

High Intensity

CB

203 r---, r -

Alt 203

Note 6

Red

Light Cyan

High Intensity

CC

204

I~

Alt 204

Note 6

Red

Light Red

High Intensity

Alt 205

Note 6

Red

Light
Magenta

High Intensity

Alt 206

Note 6

Red

Yellow

High Intensity

Alt 207

Note 6

Red

White

High Intensity

Alt 208

Note 6

Magenta

Black

Normal

C7

199

C8

200

C9

201

CD 205

CE

206

CF

207

DO 208

~~
L

7 -8 Characters, Keystrokes, and Colors

As Text Attributes

Value

As Characters

Hex IDec Symbol

.~y~"vkes

IBM
Monochrome
Display
Modes . Background Foreground
Adapter
Color/Graphics
Monitor Adapter

6

1209
02 210

lagel

lue

Underl le

Alt 210

Note 6

Magenta

Green

Normal

Alt 211

Note 6

Magenta

Cyan

Normal

t:=

Alt 212

N,

Magel

Red

Normal

05 213

F

Alt 213

Note 6

Magenta

Magenta

Normal

06 214

r-

Alt 214

Note 6

Magenta

Brown

Normal

Alt 215

Note 6

Magenta

Light Grey

Normal

Alt 216

Note 6

Magenta

Dark Grey

High Intensity

Alt 217

Note 6

Magenta

Light Blue

High Intensity
Underline

OA 218

Alt 218

Note 6

Magenta

Light Green

High Intensity

DB 219

Alt 219

Note 6

Magenta

Light Cyan

High Intensity

DC 220

Alt 220

Note 6

Magenta

Light Red

High Intensity

OD 221

Alt 221

Note 6

Magenta

Light
Magenta

High Intensity

DE

222

Alt 222

Note 6

Magenta

Yellow

High Intensity

DF

223

Alt 223

Note 6

Magenta

White

High Intensity

EO 1224

224

6

03 211

II
~

04 1212

I

07 215
08 216
09 217

6

f--

Norm,

E1

225

f3

Alt 225

Note 6

Yellow

Blue

Underline

E2

226

r

Alt 226

Note 6

Yellow

Green

Normal

E3 1227

7r

Alt 227

Note 6

Yellow

Cyan

Normal

E4

228

2:

Alt 228

Note 6

Yellow

Red

Normal

E5

229

a

Alt 229

Note 6

Yellow

E6

230

enta

Normal

6

E7 1231

1.23'

6

Grey

NOI

E8

232

1>

Alt 232

Note 6

Yellow

Dark Grey

High Intensity

E9

233

8

Alt 233

Note 6

Yellow

Light Blue

High Intensity
Underline

EA 234

n

Alt 234

Note 6

Yellow

Light Green

High Intensity

EB

0

Alt 235

Note 6

Yellow

Light Cyan

High Intensity

235

Characters, Keystrokes, and Colors 7-9

As Text Attributes

Value

Color / Graphics
Monitor Adapter
Modes Background Foreground

IBM
Monochrome
Display
Adapter

As Characters

Hex Dec Symbol

Keystrokes

EC

236

Alt 236

Note 6

Yellow

Light Red

High Intensity

ED

237

Alt 237

Note 6

Yellow

Light
Magenta

High Intensity

EE

238

Alt 238

Note 6

Yellow

Yellow

High Intensity

EF

239

Alt 239

Note 6

Yellow

White

High Intensity

FO

240

Alt 240

Note 6

White

Black

Reverse Video

F1

241

±

Alt 241

Note 6

White

Blue

Underline

F2

242

2:

Alt 242

Note 6

White

Green

Normal

F3

243

<::

Alt 243

Note 6

White

Cyan

Normal

F4

244

Alt 244

Note 6

White

Red

Normal

F5

245

Alt 245

Note 6

White

Magenta

Normal

F6

246

Alt 246

Note 6

White

Brown

Normal

F7

247

Alt 247

Note 6

White

Light Grey

Normal

F8

248

o

Alt 248

Note 6

White

Dark Grey

Reverse Video

F9

249

•

Alt 249

Note 6

White

Light Blue

High Intensity
Underline

•

Alt 250

Note 6

White

Light Green

High Intensity

FA 250

n

r
J

FB

251

Alt 251

Note 6

White

Light Cyan

High Intensity

FC

252

Alt 252

Note 6

White

Light Red

High Intensity

FD

253

Alt 253

Note 6

White

Light
Magenta

High Intensity

FE

254

Alt 254

Note 6

White

Yellow

High Intensity

FF

255

Alt 255

Note 6

White

White

High Intensity

7~ 1 0

2

•

BLANK

Characters, Keystrokes,and Colors

NOTE 1

Asterisk (') can easily be keyed using two methods:
1) hit the IPrt. Sc Ikey or 2) in shift mode hit the

~key.
NOTE 2

Period (.) can easily be keyed using two methods:
1) hit theW key or 2) in shift or Num Lock
mode hit the

M key.

NOTE 3

Numeric characters (0-9) can easily be keyed
using two methods: 1) hit the numeric keys on the
top row of the typewriter portion of the keyboard
or 2) in shift or Num Lock mode hit the numeric
keys in the 1a-key pad portion of the keyboard.

NOTE 4

Upper case alphabetic characters (A-Z) can easily
be keyed in two modes: 1) in shift mode the
appropriate alphabetic key or 2) in Caps Lock
mode hit the appropriate alphabetic key.

NOTE 5

Lower case alphabetic characters (a-z) can easily
be keyed in two modes: 1) in "normal" mode hit
the appropriate key or 2) in Caps Lock
combined with shift mode hit the appropriate alphabetic
key.

NOTE 6

The 3 digits after the Alt key must be typed from
the numeric key pad (keys 71-73,75-77,79-82).
Character codes 000 through 255 can be entered in
this fashion. (With Caps Lock activated, Character
codes 97 through 122 will display upper case
rather than lower case alphabetic characters.)

Characters, Keystrokes, and Colors 7-11

Character Set (OO-7F) Quick Reference
DECIMAL
VALUE

•

0

16

32

48

64

80

96 1 12

•

HEXA
DECIMAL
VALUE

0

1

2

3

4

5

6

7

0

0

BLANK
IN ULLI

~

BLAN K
ISPACE)

1

1

Q

~

I.

2

2

@)

3

3

c

s

4

4

5

5

6

6

+

7

7

• !

8

8

9

9

i
0 !

0
1
2
3
4
5
6
7
8
9

10

A

11

B

12

C

13

0

14

E

15

F

I I

t
.. =#=

•+ err"

$
4t § 0;0

-

---+

&

,

(
)

*

•
•

+ ,·

p , P
A Q a q
B R b r

@

C S
D T
E U
F V
GW
H X
I Y

d t
e u
f v
g W
h x

.
1 Y
.

J Z J

Z

K [ k {
1
9 L , < L
) +---+ - - M ] m }
~ ... • > N 1\ n 'Iv

cJ

+-

I
I

"

~

... /

?
•

7-12 Chal'acters, Keystrokes, and Colors

0

-

0

h.

Character Set (80-FF) Quick Reference
DECIMAL
VALUE

•

•

HEXA
DE CIMAl
VALUE

0

0

I

I

2

2

3

3

4

4

5

5

6

6

7

7

128 144 160 176 192 208 224 240
8

9

A

c; E

,

C

···......
a ·....

u••, CE f
,
e JE 0,
1\
~
0

B

~

8

8

9

9

10

A

11

B

••

12

C

1\

13

0

14

E

..."1

15

IT

1

1

A

¢

I
=
---1

¥

I

f3 +
r-' ->

T

11
=,
~

Q

_L

n

0

•

0 -r
cP

H

~
~

e •

ex:>

~

R «d
»n
f

---

r-

£ IA :=!
0

OC

F

- lL IT -<
b L (
F a J.
y -.
=

~ =:=l -

,

I

:::::

0

0

E

:.:.!
.:.:.

U
""
n -

a•• 0••
a" 0" N
I\.
a u -a
<; U" 0••
y
e" •• (,
e•• 0 I
••
"e U I

0

E

n

n
2

I
BLANK
'FF'

Characters, Keystrokes, and Colors 7-13

Notes:

7-14

Character~,Keystrokes,

ami Colors

SECTION 8. COMMUNICATIONS

Contents
Description

8-3

Establishing a Communications Link .................... 8-5
Establishing Link on Nonswitched Point-to-Point Line ...... 8-6
Establishing Link on Nonswitched Multipoint Line ......... 8-8
Establishing Link on Switched Point-to-Point line ........ 8-10

Communications 8-1

8-2 Communications

Description
Information processing equipment used for communications is
called data terminal equipment (DTE). Equipment used to connect
the DTE to the communications line is called data communications
equipment (DCE).
An adapter is used to connect the data terminal equipment to the
data communications line as shown in the following illustration:
Data
Terminal
Equipment

Data
Communications
Equipment

Communications
Line

~

Voice line
EIA/CCITT
Adapter

Cable Conforming to EIA
or CCITT Standards

Modem
Clock

The EIA/CCITT adapter allows data terminal equipment to be
connected to data communications equipment using EIA or CCITT
standardized connections. An external modem is shown in this
example; however, other types of data communications equipment
can also be connected to data terminal equipment using EIA or
CCITT standardized connections.
EIA standards are labeled RS-x (Recommended Standards-x) and
CCITT standards are labeled V.x or X.x, where x is the number of
the standard.
The EIA RS-232 interface standard defines the connector type, pin
numbers, line names, and signal levels used to connect data
terminal equipment to data communications equipment for the
purpose of transmitting and receiving data. Since the RS-232
standard was developed, it has been revised three times. The three
revised standards are the RS-232A, the RS-232B, and the presently
used RS-232C.
The CCITT V.24 interface standard is equivalent to the RS-232C
standard; therefore, the descriptions of the EIA standards also
apply to the CCITT standards.
Communications 8-3

The following is an illustration of data terminal equipment
connected to an external modem using connections defined by the
RS-232C interface standard:
Data
Terminal
Equipment

Communications
Line

~""''''-----

""

/ . "

;"

//

//
////
/

Adapter

......

/ / ' Cable Conforming

"""""

................

To RS-232C Standards

"EIA/CCITT
Line Number

Data
Terminal
Equipment

"
........................

"""

Telephone Co.
Lead Number

Protective Ground

G)- AA/1 01

Signal Ground

0--AB/102

Transmitted Data

®-- BAI 103

Received Data

0-BB/104

Request to Send

@--CA/105

CleartoSend

®-CB/106

Data Set Ready

@-CC/107

"

Data Terminal ReadY--@--CD/108.2
Connect Data Set to Line

Modem

------@- ** 1108.1
----@- CF/1 09

Received Line Signal Detector

@-- CH/111

Speed Select

Transmit Signal Element Timing~ DB/114
Receive Signal Element Timing ~ DD/115
Select Standby

@- ** 1116

Ring Indicator

@--DE/125

Test

~ **/***
I
External Modem Cable Connector
131211109

8

765

4

3

. +

2

1

\0000000 000 000/
~OOOOOOOOOOOOJ
252423222120191817161514

L ___ .Dat~ Terminal
I
EqUipment

(Modem) DCE
Data Communications----..l
Equipment-I

.__ _

Pin Number

* Not used when business machine clocking is used.

* * Not standardized by EIA (Electronic Industries Association).
* * * Not standardized by CCITT

8-4 Communications

Establishing a Communications Link
The following bar graphs represent normal timing sequences of
operatiori during the establishment of communications for both
switched (dial-up) and nonswitched (direct line) networks.
Switched Timing Sequence
Data Terminal Ready
Data Set Ready
Request to Send
Clear to Send

________

~------------IL--

Transmitted Data

Nonswitched Timing Sequence
Data Terminal Ready
Data Set Ready
Request to Send
Clear to Send

______
______

~--------------_.L--

~r------------.L

Transmitted Data

The following examples show how a link is established on a
nonswitched point-to-point line, a nonswitched multipoint line, and
a switched point-to-point line.

CODllllunications 8-5

oc

I
~

("l

~

~,
....
~
~

§'

Establishing a link on a Nonswitched Point-to-Point line
1.

The terminals at both locations activate the 'data terminal ready'

2.

lines" and
Normally the' data set ready' lines
and afrom the modems are
active whenever the modems are powered on.

a.

II

3.

Terminal A activates the 'request to send' line, which causes the
modem at terminal A to generate a carrier signal.

4.

Modem B detects the carrier, and activates the 'received line signal
detector' line (sometimes called data carrier detect)
Modem B
also activates the' receiver signal element timing' line (sometimes
called receive clock)
send receive clock signals to the terminal.
Some modems activate the clock signals whenever the modem is
powered on.

rLJ.

1IiI.

lito

5.

After a specified delay, modem A activates the 'clear to send'
line
which indicates to terminal A that the modem is ready to
transmit data.

II

6.

Terminal A serializes the data to be transmitted (through the serdes)
and transmits the data one bit at a time (synchronized by the
transmit clock) onto the 'transmitted data' line
the modem.

7.

The modem modulates the carrier signal with the data and transmits
it to the modem B

8.

Modem B demodulates the data from the carrier signal and sends it
to terminal B on the 'received data' IinelB.

9.

Terminal B deserializes the data (through the serdes) using the
receive clock signals (on the 'receiver signal element timing'
line)
from the modem.

lito

a.

II

10. After terminal A completes its transmission, it deactivates the
'request to send' line
which causes the modem to turn off the
carrier and deactivate the 'clear to send' line

II,

II.

11.

Terminal A and modem A now become receivers and wait for a
response from terminal B, indicating that all data has reached
terminal B. Modem A begins an echo delay (50 to 150 milliseconds)
to ensure that all echoes on the line have diminished before it begins
receiving. An echo is a reflection of the transmitted signal. If the
transmitting modem changed to receive too soon, it could receive a
reflection (echo) of the signal it just transmitted .

12. Modem B deactivates the 'received line signal detector' linelliland,
if necessary, deactivates the receive clock signals on the 'receiver
signal element timing, line

II.

13. Terminal B now becomes the transmitter to respond to the request
from terminal A. To transmit data, terminal B activates the 'request
to send' line
which causes modem B to transmit a carrier to
modemA.

111.

14. Modem B begins a delay that is longer than the echo delay at
modem A before turning on the 'clear to send' line. The longer delay
(called request-to-send delay) ensures that modem A is ready to
receive when terminal B begins transmitting data. After the delay,
modem B activates the 'clear to send' line
indicate that
terminal B can begin transmitting its response.

lito

15. After the echo delay at modem A, modem A senses the carrier from
modem B (the carrier was activated in step 13 when terminal B
activated the 'request to send' line) and activates the 'received line
signal detector; lineDto terminal A.
16. Modem A and terminal A are ready to receive the response from
termianl B. Remember, the response was not transmitted until after
the request-to-send to clear-to-send delay at modem B (step 14).

Terminal A

Terminal B

r;:======ll
II
II

!I

Modem A

Communications

Communications
Adapter

Modem B

"

Ij

"

II

1/
_-, /I
s , II
~ III
, 'II
:

II

e

II

II
II
U--~c;o--l

teL_~~~J
r- - - - ...,
I
I

Carrier
Generate I

"

~LIC~~~J

r

____
Modem'"

("':l

~

r

I

-..l

II

'I

-------,

II

~.

QIO

1/

II

g.

II
II
II
1/
T'ansm;tted Data
,

II.

II

L.::=======..J

m

III

Transmitter Signal
Element Timing

~_C~~_J
L_~~~~o~_J

s.

II
II
II
1/
II
: II

Request to Send II]

~----

r-----,
1'1 Transmit I

"

"

r~l
," s

I;

I

I

d

I:
L.J

J

I"

'"

III
I
III

III
III

_J"II

"

~======:'J

B UO!paS

Establishing a Link on a Nonswitched Multipoint Line

t

;
i.

1.

The control station serializes the address for the tributary or
secondary station (AA) and sends its address to the modem on the
'transmitted data' line

6.

After a short delay to allow the control station modem to receive
the carrier, the tributary modem activates the 'clear to send'
lineD·

2.

Since the 'request to send' line and, therefore, the modem carrier, is
active continuously
the modem immediately modulates the
carrier with the address, and, thus, the address is transmitted to all
modems on the line.

7.

When station A detects the active 'clear to send' line, it transmits
its response. (For this example, assume that station A has no data
to send; therefore, it transmits an EOT

8.

All tributary modems, including the modem for station A,
demodulate the address and send it to their terminals on the
'received data' line

After transmitting the EOT, station A deactivates the 'request to
send' line
This causes the modem to deactivate the carrier and
the 'clear to send' line

9.

Only station A responds to the address; the other stations ignore
the address and continue monitoring their 'received data' line. To
respond to the poll, station A activates its 'request to send' lineD,
which causes the modem to begin transmitting a carrier signal.

When the modem at the control station (host) detects the absence
of the carrier, it deactivates the 'received line signaLdetector'

10. Tributary station A is now in receive mode waiting for the next poll
or select transmission from the control station.

II.

f!')

t
'"

3.

II '

II·

4.

5.

The control station's modem receives the carrier and activates the
'received line signal detector' line Eland the 'receiver signal
element timing' line 8(to send clock signals to the control station).
Some modems activate the clock signals as soon as they are
powered on.

II.)

a.

D.

lineEl·

Host

r;:.=======ilII
II

Tributary or Secondary Station A

Communications

~

/1

r--

•

r

t

I 0
II

L

II

II
II

J
J

I
II

I
I

I

Transmitter Signal
Element Timing'

I

116

III

I

o

§

~.
ao...

1jl

II

A~
I

III

r - -

d I
u I

S

d - -,

~1~C:m

AA ' - - - - - - '

i

: :
L

f

J

t

I

0

:

r-- - --,

r

I Receive'

'----1.1
i

II

L::=======.J

Receiver I
____ .J

--,

L_~~odu~~r_J

I

1. -,

I

Clock

I

'- _ _ _ _ .J

r

- - - - - -...,

I

Demodulator

r

Carner

I Gene,ate ~
L - - _...J

r ----...,

~

T,ansmit

'-r-----'

r'-,
I 0 I
lei.

iii

I

r I

s'

I
.ill
I
L_.J
0

II
II
II

D

I

I

y I
Modem -,

II

Clear to Send

II

:

-----==_~-.J
i

r

t

II
II
II

Requestto Send

"'

~

I
C,
0 I
n I
I

Received Data

III

: :

r-'

Element Timing'

L ____ - - - - '

r--:---'

I

I

II

~daPte,

Receive, Signal

lodem

Modem

II

Transmitter Signal
Element Timing

I ____
Clock
'.JI

II

-----,

II
II
II
II
II

L_~~du~~_J

Il

Received DC!ta

\0

L

i_
__
I

r------

s :

r-----l

~U

II
II
II
II
II

III
Iii
II L_

1

Received Line Signa
Detectorl

r-M- -

~:

:

I

l

~

I

I ____
Clock --'I
L

~

I

M'

II

00
I

a I

lI

III

II

I

I

Receiver
I I Signal
Element Timing 1

II
Data Set Ready'

III
AA

I

D

I
I

II

: Transmit
L ____ .J

I a I
,YI
~ _J

II

III
II

r-----,

Received line Signal
Detector

II :

Data Terminal
Ready'
II

I

Gene'ate I
_____ .....J

II
EJ I I

III

("':l

arner

I

Transmitted Data

III
II I

r-----,
I
Power
I
I
On
I
L ____ J
,

I

I

II

Li

I-C-~--l

J
rD
Ie:
I I I

II
II
II.

II

Modem

I
Power
I
I
On
I
L_-, __ .J

1

Clear to Send'
I J

_...J

Communications

r-----,

Data Terminal
Ready'

I
ICIDataSetReady'
I 0
I n I
RequesttoSend'D
I

: sit
r 0
I
I :
I
I g
e
I

Communications

Host Modem

II

r--'

Terminal

ir==-=-=-==llI I
II

EDT

Transmitted Data

II

II

-t
i~:AA
: S

:~
: d

::

LTJ

III
: II
III
II
II
II
I II
: II
_J II
II
II

L::======~

'These lines are active continuously.

8 UO!I:Jas

Establishing a Link on a Switched Point-To-Point Line

Qe

....
.1

C

[
~

1.

Terminal A is in communications mode; therefore, the 'data
terminal ready' line
active. Terminal B is in communication
mode waiting for a call from terminal A.

Dis

2.

When the terminal A operator lifts the telephone handset, the
'switch hook' line from the coupler is activated

3.

Modem A detects the 'switch hook' line and activates the 'off
hook' line
which causes the coupler to connect the telephone
set to the line and activate the 'coupler cut-through' line
the
modem.

6"
i;l
4.

8.

The autoanswer circuits in modem B activate the 'off hook' line to
the coupler

9.

The coupler connects modem B to the communications line through
the 'data tip' and 'data ring' lines
and activates the 'coupler cutthrough' line
the modem. Modem B then transmits an
answer tone to terminal A.

lito

II.

D,

lito

5.

The terminal A operator sets the exclusion key or talk/data switch
to the talk position to connect the handset to the communications
line. The operator then dials the terminal B number.

6.

When the telephone at terminal B rings, the coupler activates the
'ring indicate' line to modem B
Modem B indicates that the
'ring indicate' line was activated by activating the 'ring indicator'
line
to terminal B.

7.

Terminal B activates the 'data terminal ready' line to modem B
which activates the autoanswer circuits in modem B. (The 'data
terminal ready' line might already be active in some terminals.)

II.

m,

m

10.

The terminal A operator hears the tone and sets the exclusion key
or talk/data switch to the data position (or performs an equivalent
operation) to connect modem A to the communications line
through the 'data tip' and 'data ring' lines

11.

The coupler at terminal A deactivates the 'switch hook' line.
This causes modem A to activate the 'data set ready' line
indicating to terminal A that the modem is connected to the
communications line.

II.

lito

Modem A activates the 'data modem ready' line
the coupler
(the 'data modem ready' line is on continuously in some modems).

lEI

II.

II

The sequence of the remaining steps to establish the data link is
the same as the sequence required on a nonswitched point-topoint line. When the terminals have completed their transmission,
they both deactivate the 'data terminal ready' line to disconnect
the modems from the line.

Terminal A

Terminal B

r;:======:::;-]II
II
Communications
Adapter

II
II

II
II

rC'
:0 I

I I ,-

I

II,'
II: ~

1'1
I ~
L_J

I n
I Sit

III

a

II:
II'
II
II
II

9

II

I':l

I
2.

rl

g.~

'"00

....
....

II
II
II
II
II
II
II
II
II
II

II
II
II
II

II
II

Modem A

D

~::~~e,

fJ

r-'

Ready
Request to Send

r!,

JD/

1I I
Ia ,

IMl
:0 I
Id I
Iu I

I y I
L_.J

Ia

le :

Clear to Send

II
II

II

II
..--

II
ITransmit Data
II

.---

ISH I

ISH I

(OH)~

Off Hook

IOHI

(CCTI

I

Data Modem'
Ready (DA)

I

r-'

r-l
, RI
Ie I
" I

IRI

II

Data Tip (DT)
Data
Data Ring (DR)

L_

II

:u

iii

I

:e
II I
Ia I
y:
Is I

Ia

f

IV
IS,
L_J

L_J

~ L_To~e__ J

,I
I

I
I

Ie I
I, I

Data Modem
Ready (DA)
Ring
Indicate (R)

"
10
la
In
Is

Iwl

ICCTI

iii

~

i~l j-A-n-;~;rl

0
Coupler
Cut- Through

1m

L_J

r-l
C

I

ID I £~~:iIVb~t~i~t~r
Ie I
I ml Ring Indic!lorIIJ

"
101

r-'

10 I

Id '
:u :
I' I
Ia I
' JI

r--,

m
Data Terminal

Communications
Adapter
- -,----

'0,

10

Data Ring (DR)

II
II
II

Ready
Data Set Ready

1'1

Data Tip {DT)II
Data

II

n'
It I

,

I

II
II
II

Received Data

II

II
II
II
II

L_!?J

II
jM~d;~l
L~'ock_J

rM~d;mj
__ _
:L _Clock

J

/' --- ,\----,2.

!

II

r

II

IsL

II
II
II
II

~j

Receive Clock

=i~

II
II
II
II
II

L~J

II
II

IE C I

:c I I
Ih a
10 ml

Transmit Clock

~======:::!J

.-.~~~".

Coupler
II
Cut- Through

10 :
:r I
I

II
II
II
II
II
II
II
II
II
II
II

r;:======1lII

Modem B
Switch Hook

10ff Hook

• I

II
II
II

Coupler

Switch Hook

It I
I

CBS

Coupler

II

iC;rrie-;--l
1
Generate
L _
_ _ _ _ ...JI

Data Terminal

CBS

II

1

i~~

id
,e

Is

L J

II
II
II
II
II
II
II
II
II
II
II
II

::J

Communications
line

I

8 UO!l:J9S

Notes:

8-12 Communications

lOC OBJ

LINE

SOURCE

3956
3957

CS :CODE ,OS: DATA, ES:DATA

ASSUME

3955
F374
F374 80FC04

NEAR

READ_At_CURRENT PROt

CMP

AH.4

; IS THIS GRAPHICS

F377 7208

3958

JC

PI

f379 8OFC07
F37C 7403

3959

CMP

AH.7

3960

F37E E9A802

3961

JE
JMP

GRAPHICS_READ

F381

3962

F381 E81AOO

3963

F384 BBF3

3964

; IS THIS Bioi CARD

PI

PI:

I READ_At_CONTINUE

CALL
NOV

FIND_POSITION
51.BX

; ESTABLISH ADDRESSING IN 51

3965

3966
3967
F3B6 86166300
F3eA 83C206

3968
3969

F3eD 06

3970

F38E IF
F38f
F3SF EC

3971
3972
3973

F390 A801

3974

;----- WAIT fOR HORIZONTAL RETRACE
MOV

DX,ADOR_6845

; GET BASE ADDRESS

ADO

DX.6

; POINT AT STATUS PORT

PUSH

ES

POP

OS

j

IN

AL,DX

i GET STATUS

PZ:

GET SEGMENT FOR QUICK ACCESS

I WAIT FOR RETRACE lOW
TEST

Al.l

F392 7SFB

3975

JNZ

P2

F394 FA

3976

CLI

I IS HORZ RETRACE LOW
I WAIT UNTIL IT IS
; NO MORE INTERRUPTS

F395

3977

F395 EC

3976

IN

Al,DX

F396 A801

3979

P3:
TEST

AL,l

; IS IT HIGH

F398 74FB

3960

JZ

P'

I WAIT UNTIL IT IS

I WAIT FOR RETRACE HIGH

F39A AD

3981

F398 E927FE

3962

JMP

3963

READ_AC_CURRENT ENDP

; GET STATUS

LOOSW

I GET THE CHAR/ATTR
VIDEO_RETURN

3984
F39E

3985

F39E 8ACF

3986

F3AO 32:ED

3987

XOR

CH.CH

F3A2 88Fl

3966

MOV

SI,CX

I MOVE TO SI FOR INDEX

F3A4 DlEb

3989

SAL

51,1

I

F3A6 864450

3990

MOV

AX, [SI+OFFSET CURSOR_POSN J

F3A9 330e

3991

XOR

aX,BX

I SET START ADDRESS TO ZERO

F3AB n06

3992

JCXZ

P,

I NO_PAGE

F3AD

3993

F3AD 03lE4COO

3994

ADO

ex,CIH_LEN

,

F3el E2FA

3995

LOOP

P4

F3e3

3996

F3B3 EaCFFE

3997

CALL

POSITION

; DETERMINE LOCATION IN REGEN

F3B6 0308

3998

ADO

eX,AX

; ADO TO START OF REGEN

F3Ba C3

3999

RET

FIND_POSITION

MOV

P5:

4001

;

4002

; WRITE_AC_CURRENT

PAGE_lOOP
LENGTH OF BUFFER

ENIlP

-----------------------------------------------THIS ROUTINE WRITES THE ATTRIBUTE

4004

AND CHARACTER AT THE CURRENT CURSOR
POSITION
I INPUT

4007

(AH)

4008

(BH)

4009

(CX)

4010

(Al)

4011

(BLl

4014

2 FOR WORD OFFSET
I GET ROW/COLUMN OF THAT PAGE

4003

(OS)
(ES)

4013

= CURRENT CRT MODE
= DISPLAY PAGE
= COUNT OF CHARACTERS TO WRITE
= CHAR TO WRITE
= ATTRIBUTE OF CHAR TO WRITE
= DATA SEGMENT
= REGEN SEGMENT

; OUTPUT

4015

n08

*

; NO_PAGE

Fum_POSITION

4012

F3ee

I DISPLAY PAGE TO CX

I

4000

4006

F389 80FC04

NEAR

Cl.8H

P4:

4005

F3B9

PROC

NONE

------------------------------------------------

4016

;

4017

WRITE_AC_CURRENT

PROC

4018

CMP

AH,4

4019

JC

P.

F3eE aOFC07

4020

CMP

F3Cl 7403

4021

JE

P.

F3C3 E9B201

4022

JMP

GRAPHICS_lomITE

AH,7

nC6

4023

P6:

NEAR
IS THIS GRAPHICS
IS THIS Bioi CARD

; WRITE_AC_CONTINUE

nC6 8AE3

4024

MOV

AH,6L

; GET ATTRIBUTE TO AH

nca 50

4025

PUSH

AX

; SAVE ON STACK

f3C9 51

4026
4027

PUSH
CAll

CX

; SAVE WRITE COUNT

FlCA E80lFF
FlCO 8BFB

4028

DI.ex

i ADDRESS TO 01 REGISTER

ex

I WRITE COUNT

BX

I CHARACTER IN 8X REG

F3CF 59

4029

MOV
POP

F300 58

4030

POP

FIND_POSITION

System BIOS 5-79

LOC OBJ
F30l

LINE
4031

SOURCE
P7:

I WRITE_LOOP

4032

4033
nOl 88166300

4034
40'35

F305 83C206

4036

noe
noe

4037
EC

j-----

WAIT FOR HORIZONTAL RETRACE

MOV
AOO

OX .ADDR_6845

j

OX.6

I POINT AT STATUS PORT

GET BASE ADDRESS

P8:

4038
4039

IN

AL.OX

; GET STATUS

F3D9 A801

TEST

AL.l

; IS IT LOW

nOB 7SFB

4040

; WAIT UNTIL IT IS

4041
4042
4043

JNZ
CLI

P8

nOD fA
F30E

nOE EC

; NO MORE IHTERRUPTS

P9:

IN

AL,DX

j

TEST

Al.1

; IS IT HIGH

P'

I WAlT UHTI L IT IS

4046

JZ
MOV

4047
4048

STl

f3E7 E,Ee

4049

lOOP

P7

F3E9 E909FD

4050
4051

JMP

VIDEO_RETURN

WRITE_AC_CURREHT

4052.

; -- ----------------- --------- -- -- ------ - --- --- ---

4053

; WRITE_C_CURRENT

F30F A801

f3El 74FB
f3B 88t'3
F3ES AB

F3Eb FB

4044
4045

AX.BX

i RECOVER THE CHAR/ATTR

STOSW

4054

GET STATUS

; PUT THE CHAR/ATTR
I INTERRUPTS BACK ON
AS MANY TIMES AS REQUESTED

J
ENDP

THIS ROUTINE WRITES THE CHARACTER AT

4055

THE CURRENT CURSOR POSITION. ATTRIBUTE

4056

UNCHANGED

4057

INPUT

4058

(AH)

= CURRENT

4059

(BH I

=

4060

(CX I

= COUNT

4061

(All

4062

(051

=
=
=

4063
4064

(ESI

4066
4067

OF CHARACTERS TO WRITE

CHAR TO IoIRITE
DATA SEGMENT
REGEN SEGMENT

; OUTPUT

4065

nEt

CRT HOOf

DISPLAY PAGE

NONE
; ----------- -- - ----------------------------------

nEt 80FC04

4068

F3EF n08

4069

F3Fl BOFC07

4070

F3F4 7403
F3F6 E97FOl

4071

CMP
JC
CMP
J,

4072

JMP

GRAPHICS_WRITE

I IS THIS GRAPHICS

AH.4

P10
AH,7

IS THIS BW CARD

P10

F3f9

4073

F3F9 50

4074
4075

PUSH

F3FA 51

PUSH

AX
CX

F3FS E8AOFF

4076

CALL

FIHO]OSITION

F3FE SBFB

MOV
POP
POP

DI.BX

I ADDRESS TO 01

CX
BX

; aL HAS CHAR TO WRITE

PI0:
I SAVE ON STACK
; SAVE WRITE COUNT

F400 59

4077
4078

F401 58

4079

F402

4080
4081

Pll:

4082

;----- WAIT FOR HORIZONTAL RETRACE

i WRITE COUNT
i WRITE_LOOP

4083

F402 88166300

4084

NOV
ADD

DX.6

I POIHT AT STATUS PORT

4087

IN

Al,DX

; GET STATUS

F40A A801

4088

TEST

Al.i

I IS IT LOW

F40C 75FB

4089

JNZ
CLI

Pl2

i WAIT UHTI L IT IS

Al.DX

F406 83C206

4085

F409

4086

F409 EC

DX,ADDR_6845

I GET BASE ADORESS

PI;?::

F40E FA

4090

F40F

4091

F40F EC

40/:}2

IN

I HO MORE INTERRUPTS

P13:
; GET STATUS

F410 ASOI

4093

TEST

AL.I

F412 74FB

4094

P13

; WAIT UNTIL IT IS

F414 8AC3

4095

JZ
MOV

AL.al

I RECOVER CHAR

F41b AA

4096

STOSB

f417 Fe

4097

F418 47

4098

STl
INC

F419 E2E7

4099

F41B E9A7FD

4100

i

i

IS IT HIGH

PUT THE CHAR/ATTR

; INTERRUPTS BACK ON

LOOP

01
Pll

JMP

VIDEO_RETURN

i BUMP POINTER PAST ATTRIBUTE

J

AS MANY TIMES AS REQUESTED

4101

WRITE_C_CURRENT ENDP

4102

; --------- ------------------------------------ -------------------

4103

; READ DOT

4104
4105

4106
4107

5-80 SystemBIOS

-- WRITE DOT

THESE ROUTINES WIll WRITE A DOT. OR READ THE DOT AT
THE INDICATED LOCATION
; ENTRY --

ox = ROW

(0-1991

(THE ACTUAL VALUE DEPENDS ON THE MODEl

Glossary

f.L. Prefix micro; 0.000001.
f.Ls. Microsecond; 0.000001 second.

A. Ampere.

ac. Alternating current.
accumulator. A register in which the result of an operation is
formed.
active high. Designates a signal that has to go high to produce an
effect. Synonymous with positive true.
active low. Designates a signal that has to go low to produce an
effect. Synonymous with negative true.
adapter. An auxiliary device or unit used to extend the operation
of another system.
address bus. One or more conductors used to carry the
binary-coded address from the processor throughout the rest of
the system.
algorithm. A finite set of well-defined rules for the solution of a
problem in a finite number of steps.
all points addressable (APA). A mode in which all points of a
displayable image can be controlled by the user.
alphameric. Synonym for alphanumeric.
alphanumeric (A/N). Pertaining to a character set that contains
letters, digits, and usually other characters, such as punctuation
marks. Synonymous with alphameric.

Glossary-l

alternating current (ac). A current that periodically reverses its
direction of flow.
American National Standard Code for Information Exchange
(ASCII). The standard code, using a coded character set
consisting of 7-bit coded characters (8 bits including parity
check), used for information exchange between data processing
systems, data communication systems, and associated equipment.
The ASCII set consists of control characters and graphic
characters.
ampere (A). The basic unit of electric current.
A/N. Alphanumeric
analog. (1) Pertaining to data in the form of continuously variable
physical quantities. (2) Contrast with digital.
AND. A logic operator having the property that if P is a
statement, Q is a statement, R is a statement, ... , then the AND of
P, Q, R, .. .is true if all statements are true, false if any statement is
false.
AND gate. A logic gate in which the output is 1 only if all inputs
are 1.
AND operation. The boolean operation whose result has the
boolean value 1, if and only if, each operand has the boolean
value 1. Synonymous with conjunction.
APA. All points addressable.
ASCII. American National Standard Code for Information
Exchange.
assemble. To translate a program expressed in an assembler
language into a computer language.

Glossary-2

assembler. A computer program used to assemble.
assembler language. A computer-oriented language whose
instructions are usually in one-to-one correspondence with
computer instructions.
asynchronous transmission. (1) Transmission in which the time of
occurrence of the start of each character, or block of characters,
is arbitrary; once started, the time of occurrence of each signal
representing a bit within a character, or block, has the same
relationship to significant instants of a fixed time frame. (2)
Transmission in which each information character is individually
transmitted (usually timed by the use of start elements and stop
elements).
audio frequencies. Frequencies that can be heard by the human
ear (approximately 15 hertz to 20 000 hertz).
auxiliary storage. (1) A storage device that is not main storage.
(2) Data storage other than main storage; for example, storage on
magnetic disk. (3) Contrast with main storage.
BASIC. Beginner's all-purpose symbolic instruction code.
basic inputloutput system (BIOS). The feature of the IBM
Personal Computer that provides the level control of the major
110 devices, and relieves the programmer from concern about
hardware device characteristics.
baud. (1) A unit of signaling speed equal to the number of
discrete conditions or signal events per second. For example, one
baud equals one bit per second in a train of binary signals,
one-half dot cycle per second in Morse code, and one 3-bit value
per second in a train of signals each of which can assume one of
eight different states. (2) In asynchronous transmission, the unit
of modulation rate corresponding to one unit of interval per
second; that is, if the duration of the unit interval is 20
milliseconds, the modulation rate is 50 baud.
Bec. Block-check character.

Glossary-3

beginner's aU-purpose symbolic instruction code (BASIC). A
programming language with a small repertoire of commands and a
simple syntax, primarily designed for numeric applications.
binary. (1) Pertaining to a selection, choice, or condition that has
two possible values or states. (2) Pertaining to a fixed radix
numeration system having a radix of 2.
binary digit. (1) In binary notation, either of the characters 0 or 1.
(2) Synonymous with bit.
binary notation. Any notation that uses two different characters,
usually the binary digits 0 and 1.
binary synchronous f:ommunications (BSC). A uniform procedure,
using a standardized set of control characters and control
character sequences for synchronous transmission of
binary-coded data between stations.
BIOS. Basic input/ output system.
bit. Synonym for binary digit
bits per second (bps). A unit of measurement representing the
number of discrete binary digits transmitted by a device in one
second.
block. (1) A string of records, a string of words, or a character
string formed for technical or logic reasons to be treated as an
entity. (2) A set of things, such as words, characters, or digits,
treated as a unit.
block-check character (BCC). In cyclic redundancy checking, a
character that is transmitted by the sender after each message
block and is compared with a block-checi<: character computed by
the receiver to determine if the transmission was successful.
boolean operation. (1) Any operation in which each of the
operands and the result take one of two values. (2) An operation
that follows the rules of boolean algebra.

Glossary-4

bootstrap. A technique or device designed to bring itself into a
desired state by means of its own action; for example, a machine
routine whose first few instructions are sufficient to bring the rest
of itself into the computer from an input device.
bps. Bits per second.
BSC. Binary synchronous communications.
buffer. (1) An area of storage that is temporarily reserved for use
in performing an input/output operation, into which data is read
or from which data is written. Synonymous with I/O area. (2) A
portion of storage for temporarily holding input or output data.
bus. One or more conductors used for transmitting signals or
power.
byte. (1) A sequence of eight adjacent binary digits that are
operated upon as a unit. (2) A binary character operated upon as
a unit. (3) The representation of a character.
C. Celsius.
capacitor. An electronic circuit component that stores an electric
charge.
CAS. Column address strobe.
cathode ray tube (CRT). A vacuum tube in which a stream of
electrons is projected onto a fluorescent screen producing a
luminous spot. The location of the spot can be controlled.
cathode ray tube display (CRT display). (1) A CRT used for
displaying data. For example, the electron beam can be controlled
to form alphanumeric data by use of a dot matrix. (2)
Synonymous with monitor.

Glossary-5

CCITT. International Telegraph and Telephone Consultative
Committee.
Celsius (C). A temperature scale. Contrast with Fahrenheit (F).
central processing unit (CPU). Term for processing unit.
channel. A path along which signals can be sent; for example,
data channel, output channel.
character generator. (1) In computer graphics, a functional unit
that converts the coded representation of a graphic character into
the shape of the character for display. (2) In word processing,
the means within equipment for generating visual characters or
symbols from coded data.
character set. (1) A finite set of different characters upon which
agreement has been reached and that is considered complete for
some purpose. (2) A set of unique representations called
characters. (3) A defined collection of characters.
characters per second (cps). A standard unit of measurement for
the speed at which a printer prints.
check key. A group of characters, derived from and appended to
a data item, that can be used to detect errors in the data item
during processing.
closed circuit. A continuous unbroken circuit; that is, one in
which current can flow. Contrast with open circuit.
CMOS. Complementary metal oxide semiconductor.
code. (1) A set of unambiguous rules specifying the manner in
which data may be represented in a discrete form. Synonymous
with coding scheme. (2) A set of items, such as abbreviations,
representing the members of another set. (3) To represent data
or a computer program in a symbolic form that can be accepted
by a data processor. (4) Loosely, one or more computer
programs, or part of a computer program.

Glossary-6

coding scheme. Synonym for code.
collector. An element in a transistor toward which current flows.
column address strobe (CAS). A signal that latches the column

addresses in a memory chip.
compile. (1) To translate a computer program expressed in a

problem-oriented language into a computer-oriented language.
(2) To prepare a machine-language program from a computer
program written in another programming language by making use
of the overall logic structure of the program, or generating more
than one computer instruction for each symbolic statement, or
both, as well as performing the function of an assembler.
complementary metal oxide semiconductor (CMOS). A logic
circuit family that uses very little power. It works with a wide

range of power supply voltages.
computer. A functional unit that can perform substantial

computation, including numerous arithmetic operations or logic
operations, without intervention by a human operator during a
run.
computer instruction code. A code used to represent the

instructions in an instruction set. Synonymous with machine
code.
computer program. A sequence of instructions suitable for

processing by a computer.
computer word. A word stored in one computer location and
capable of being treated as a unit.
configuration. (1) The arrangement of a computer system or

network as defined by the nature, number, and the chief
characteristics of its functional units. More specifically, the term
configuration may refer to a hardware configuration or a software
configuration. (2) The devices and programs that make up a
system, subsystem, or network.
conjunction. Synonym for AND operation.

Glossary-7

contiguous. Touching or joining at the edge or boundary;

adjacent.
control character. A character whose occurrence in a particular

context initiates, modifies, or stops a control operation.
control operation. An action that affects the recording,
processing, transmission, or interpretation of data; for example,
starting or stopping a process, carriage return, font change,
rewind, and end of transmission.
control storage. A portion of storage that contains microcode.
cps. Characters per second.

CPU. Central processing unit.
CRe. Cyclic redundancy check.
CRT. Cathode ray tube.
CRT display. Cathode ray tube display.
CTS. Clear to send. Associated with modem control.

cursor. (1) In computer graphics, a movable marker that is used

to indicate a position on a display. (2) A displayed symbol that
acts as a marker to help the user locate a point in text, in a system
command, or in storage. (3) A movable spot of light on the
screen of a display device, usually indicating where the next
character is to be entered, replaced, or deleted.
cyclic redundancy check (CRC). (1) A redundancy check in which

the check key is generated by a cyclic algorithm. (2) A system of
error checking performed at both the sending and receiving
station after a block-check character has been accumulated.
cylinder. (1) The set of all tracks with the same nominal distance

from the axis about which the disk rotates. (2) The tracks of a
disk storage device that can be accessed without repositioning the
access mechanism.

Glossary-8

daisy-chained cable. A type of cable that has two or more
connectors attached in series.
data. (1) A representation of facts, concepts, or instructions in a
formalized manner suitable for communication, interpretation, or
processing by human or automatic means. (2) Any
representations, such as characters or analog quantities, to which
meaning is, or might be assigned.
data base. A collection of data that can be immediately accessed
and operated upon by a data processing system for a specific
purpose.
data processing system. A system that performs input, processing,
storage, output, and control functions to accomplish a sequence
of operations on data.
data transmission. Synonym for transmission.
dB. Decibel.
dBa. Adjusted decibels.
dc. Direct current.
debounce. An electronic means of overcoming the make/break
bounce of switches to obtain one smooth change of signal level.
decibel. (1) A unit that expresses the ratio of two power levels on
a logarithmic scale. (2) A unit for measuring relative power.
decoupling capacitor. A capacitor that provides a low impedance
path to ground to prevent common coupling between circuits.
Deutsche Industrial Norm (DIN). (1) German Industrial Norm.
(2) The committee that sets German dimension standards.
digit. (1) A graphic character that represents an integer; for
example, one of the characters 0 to 9. (2) A symbol that

Glossary-9

represents one of the non-negative integers smaller than the radix.
For example, in decimal notation, a digit is one of the characters 0
to 9.
digital. (1) Pertaining to data in the form of digits. (2) Contrast
with analog.
DIN. Deutsche Industrial Norm.
DIN connector. One of the connectors specified by the DIN
committee.
DIP. Dual in-line package.
DIP switch. One of a set of small switches mounted in a dual
in-line package.
direct current (de). A current that always flows in one direction.
direct memory access (DMA). A method of transferring data
between main storage and 110 devices that does not require
processor intervention.
disable. To stop the operation of a circuit or device.
disabled. Pertaining to a state of a processing unit that prevents
the occurrence of certain types of interruptions. Synonymous with
masked.
disk. Loosely, a magnetic disk.
diskette. A thin, flexible magnetic disk and a semirigid protective
jacket, in which the disk is permanently enclosed. Synonymous
with flexible disk.
diskette drive. A device for storing data on and retrieving data
from a diskette.

Glossary-tO

display. (1) A visual presentation of data. (2) A device for visual
presentation of information on any temporary character imaging
device. (3) To present data visually. (4) See cathode ray tube
display.
display attribute. In computer graphics, a particular property that
is assigned to all or part of a display; for example, low intensity,
green color, blinking status.
DMA. Direct memory access.
dot matrix. (1) In computer graphics, a two-dimensional pattern
of dots used for constructing a display image. This type of matrix
can be used to represent characters by dots. (2) In word
processing, a pattern of dots used to form characters. This term
normally refers to a small section of a set of addressable points;
for example, a representation of characters by dots.
dot printer. Synonym for matrix printer.
dot-matrix character generator. In computer graphics, a character
generator that generates character images composed of dots.
DSR. Data set ready. Associated with modem control.
DTR. In the IBM Personal Computer, data terminal ready.
Associated with modem control.
dual in-line package (DIP). A widely used container for an
integrated circuit. DIPs have pins in two parallel rows. The pins
are spaced 1/10 inch apart. See also DIP switch.
duplex. (1) In data communication, pertaining to a simultaneous
two-way independent transmission in both directions. (2)
Contrast with half -duplex.
duty cycle. In the operation of a device, the ratio of on time to
idle time. Duty cycle is expressed as a decimal or percentage.

Glossary-ll

dynamic memory. RAM using transistors and capacitors as the

memory elements. This memory requires a refresh (recharge)
cycle every few milliseconds. Contrast with static memory.
EBCDIC. Extended binary-coded decimal interchange code.
ECC. Error checking and correction.
edge connector. A terminal block with a number of contacts

attached to the edge of a printed-circuit board to facilitate
plugging into a foundation circuit.
EIA. Electronic Industries Association.
electromagnet. Any device that exhibits magnetism only while an

electric current flows through it.
enable. To initiate the operation of a circuit or device.
end of block (EOB). A code that marks the end of a block of

data.
end of file (EOF). An internal label, immediately following the
last record of a file, signaling the end of that file. It may include

control totals for comparison with counts accumulated during
processing.
end-of-text (ETX). A transmission control character used to

terminate text.
end-of-transmission (EOT). A transmission control character

used to indicate the conclusion of a transmission, which may have
included one or more texts and any associated message headings.
end-of-transmission-block (ETB). A transmission control

character used to indicate the end of a transmission block of data
when data is divided into such blocks for transmission purposes.

Glossary-12

EOB. End of block.
EOF. End of file.
EOT. End-of-transmission.
EPROM. Erasable programmable read-only memory.
erasable programmable read-only memory (EPROM). A PROM in
which the user can erase old information and enter new
information.
error checking and correction (ECC). The detection and
correction of all single-bit errors, plus the detection of double-bit
and some multiple-bit errors.
ESC. The escape character.
escape character (ESC). A code extension character used, in
some cases, with one or more succeeding characters to indicate by
some convention or agreement that the coded representations
following the character or the group of characters are to be
interpreted according to a different code or according to a
different coded character set.
ETB. End-of-transmission-block.
ETX. End-of-text.
extended binary-coded decimal interchange code (EBCDIC). A set
of 256 characters, each represented by eight bits.
F. Fahrenheit.
Fahrenheit (F). A temperature scale. Contrast with Celsius (C).

Glossary-13

falling edge. Synonym for negative-going edge.
FCC. Federal Communications Commission.
fetch. To locate and load a quantity of data from storage.
FF. The form feed character.
field. (1) In a record, a specified area used for a particular
category of data. (2) In a data base, the smallest unit of data that
can be referred to.
fixed disk drive. In the IBM Personal Computer, a unit consisting
of nonremovable magnetic disks, and a device for storing data on
and retrieving data from the disks.
flag. (1) Any of various types of indicators used for
identification. (2) A character that signals the occurrence of
some condition, such as the end of a word. (3) Deprecated term
for mark.
flexible disk. Synonym for diskette.
flip-flop. A circuit or device containing active elements, capable
of assuming either one of two stable states at a given time.
font. A family or assortment of characters of a given size and
style; for example, 10 point Press Roman medium.
foreground. (1) In multiprogramming, the environment in which
high-priority programs are executed. (2) On a color display
screen, the characters as opposed to the background.
form feed. (1) Paper movement used to bring an assigned part of
a form to the printing position. (2) In word processing, a
function that advances the typing position to the same character
position on a predetermined line of the next form or page.

Glossary-14

form feed character. A control character that causes the print or
display position to move to the next predetermined first line on
the next form, the next page, or the equivalent.
format. The arrangement or layout of data on a data medium.
frame. (1) In SDLC, the vehicle for every command, every
response, and all information that is transmitted using SDLC
procedures. Each frame begins and ends with a flag. (2) In data
transmission, the sequence of contiguous bits bracketed by and
including beginning and ending flag sequences.
g. Gram.
G. (1) Prefix giga; 1 000000000. (2) When referring to
computer storage capacity, 1 073 741 824. (1 073 741 824 = 2 to
the 30th power.)
gate. (1) A combinational logic circuit having one output channel
and one or more input channels, such that the output channel
state is completely determined by the input channel states. (2) A
signal that enables the passage of other signals through a circuit.
Gb. 1 073 741 824 bytes.
general-purpose register. A register, usually explicitly addressable
within a set of registers, that can be used for different purposes;
for example, as an accumulator, as an index register, or as a
special handler of data.
giga (G). Prefix 1 000000000.
gram (g). A unit of weight (equivalent to 0.035 ounces).
graphic. A symbol produced by a process such as handwriting,
drawing, or printing.

Glossary-1S

graphic character. A character, other than a control character,
that is normally represented by a graphic.
half-duplex. (1) In data communication, pertaining to an
alternate, one way at a time, independent transmission. (2)
Contrast with duplex.
hardware. (1) Physical equipment used in data processing, as
opposed to programs, procedures, rules, and associated
documentation. (2) Contrast with software.
head. A device that reads, writes, or erases data on a storage
medium; for example, a small electromagnet used to read, write,
or erase data on a magnetic disk.
hertz (Hz). A unit of frequency equal to one cycle per second.
hex. Common abbreviation for hexadecimal.
hexadecimal. (1) Pertaining to a selection, choice, or condition
that has 16 possible different values or states. These values or
states are usually symbolized by the ten digits 0 through 9 and the
six letters A through F. (2) Pertaining to a fixed radix
numeration system having a radix of 16.
high impedance state. A state in which the output of a device is
effectively isolated from the circuit.
highlighting. In computer graphics, emphasizing a given display
group by changing its attributes relative to other display groups in
the same display field.
high-order position. The leftmost position in a string of
characters. See also most-significant digit.
housekeeping. Operations or routines that do not contribute
directly to the solution of the problem but do contribute directly
to the operation of the computer.
Hz. Hertz

Glossary-16

image. A fully processed unit of operational data that is ready to
be transmitted to a remote unit; when loaded into control storage
in the remote unit, the image determines the operations of the
unit.
immediate instruction. An instruction that contains within itself an
operand for the operation specified, rather than an address of the
operand.
index register. A register whose contents may be used to modify
an operand address during the execution of computer instructions.
indicator. (1) A device that may be set into a prescribed state,
usually according to the result of a previous process or on the
occurrence of a specified condition in the equipment, and that
usually gives a visual or other indication of the existence of the
prescribed state, and that may in some cases be used to determine
the selection among alternative processes; for example, an
overflow indicator. (2) An item of data that may be interrogated
to determine whether a particular condition has been satisfied in
the execution of a computer program; for example, a switch
indicator, an overflow indicator.
inhibited. (1) Pertaining to a state of a processing unit in which
certain types of interruptions are not allowed to occur. (2)
Pertaining to the state in which a transmission control unit or an
audio response unit cannot accept incoming calls on a line.
initialize. To set counters, switches, addresses, or contents of
storage to 0 or other starting values at the beginning of, or at
prescribed points in, the operation of a computer routine.
input/output (I/O). (1) Pertaining to a device or to a channel that
may be involved in an input process, and, at a different time, in an
output process. In the English language, "input/output" may be
used in place of such terms as "input/output data,"
II·mput / output sIgna,
•
I " an d II·mput / output termma
•
Is, "w
hen such
usage is clear in a given context. (2) Pertaining to a device whose
parts can be performing an input process and an output process at
the same time. (3) Pertaining to either input or output, or both.
instruction. In a programming language, a meaningful expression
that specifies one operation and identifies its operands, if any.

Glossary-17

instruction set. The set of instructions of a computer, of a
programming language, or of the programming languages in a
programming system.
interface. A device that alters or converts actual electrical signals
between distinct devices, programs, or systems.
interleave. To arrange parts of one sequence of things or events
so that they alternate with parts of one or more other sequences
of the same nature and so that each sequence retains its identity.
interrupt. (1) A suspension of a process, such as the execution of
a computer program, caused by an event external to that process,
and performed in such a way that the process can be resumed.
(2) In a data transmission, to take an action at a receiving station
that causes the transmitting station to terminate a transmission.
(3) Synonymous with interruption.
I/O. Input/output.
I/O area. Synonym for buffer.
irrecoverable error. An error that makes recovery impossible
without the use of recovery techniques external to the computer
program or run.
joystick. In computer graphics, a lever that can pivot in all
directions and that is used as a locator device.
k. Prefix kilo; 1000.
K. When referring to storage capacity, 1024. (1024 = 2 to the
10th power.)
Kb. 1024 bytes.
kg. Kilogram; 1000 grams.

Glossary-IS

kHz. Kilohertz; 1000 hertz.
kilo (k). Prefix 1000
kilogram (kg). 1000 grams.
kilohertz (kHz). 1000 hertz
latch. (1) A simple logic-circuit storage element. (2) A feedback
loop in sequential digital circuits used to maintain a state.
least-significant digit. The rightmost digit. See also low-order
position.
LED. Light-emitting diode.
light-emitting diode (LED). A semiconductor device that gives off
visible or infrared light when activated.
load. In programming, to enter data into storage or working
registers.
low power Schottky TTL. A version (LS series) of TTL giving a
good compromise between low power and high speed. See also
transistor-transistor logic and Schottky TTL.
low-order position. The rightmost position in a string of
characters. See also least-significant digit.
m. (1) Prefix milli; 0.001. (2) Meter.
M. (1) Prefix mega; 1 000 000. (2) When referring to computer
storage capacity, 1 048 576. (1 048 576 = 2 to the 20th power.)
mAo Milliampere; 0.001 ampere.

Glossary-19

machine code. The machine language used for entering text and
program instructions onto the recording medium or into storage
and which is subsequently used for processing and printout.
machine language. (1) A language that is used directly by a
machine. (2) Deprecated term for computer instruction code.
magnetic disk. (1) A flat circular plate with a magnetizable
surface layer on which data can be stored by magnetic recording.
(2) See also diskette.
main storage. (1) Program-addressable storage from which
instructions and other data can be loaded directly into registers
for subsequent execution or processing. (2) Contrast with
auxiliary storage.
mark. A symbol or symbols that indicate the beginning or the end
of a field, of a word, of an item of data, or of a set of data such as
a file, a record, or a block.
mask. (1) A pattern of characters that is used to control the
retention or elimination of portions of another pattern of
characters. (2) To use a pattern of characters to control the
retention or elimination of portions of another pattern of
characters.
masked. Synonym for disabled.
matrix. (1) A rectangular array of elements, arranged in rows 'and
columns, that may be manipulated according to the rules of matrix
algebra. (2) In computers, a logic network in the form of an array
of input leads and output leads with logic elements connected at
some of their intersections.
matrix printer. A printer in which each character is represented
by a pattern of dots; for example, a stylus printer, a wire printer.
Synonymous with dot printer.
Mb. 1 048 576 bytes.
mega (M). Prefix 1 000000.

Glossary-20

megahertz (MHz). 1 000 000 hertz.
memory. Term for main storage.
meter (m). A unit of length (equivalent to 39.37 inches).
MFM. Modified frequency modulation.
MHz. Megahertz; 1 000 000 hertz.
micro (/L). Prefix 0.000 001.
microcode. (1) One or more microinstructions. (2) A code,
representing the instructions of an instruction set, implemented in
a part of storage that is not program-addressable.
microinstruction. (1) An instruction of microcode. (2) A basic or
elementary machine instruction.
microprocessor. An integrated circuit that accepts coded
instructions for execution; the instructions may be entered,
integrated, or stored internally.
microsecond (/Ls). 0.000001 second.
milli (m). Prefix 0.001.
milliampere (rnA). 0.001 ampere.
millisecond (ms). 0.001 second.
mnemonic. A symbol chosen to assist the human memory; for
example, an abbreviation such as "mpy" for "multiply."
mode. (1) A method of operation; for example, the binary mode,
the interpretive mode, the alphanumeric mode. (2) The most
frequent value in the statistical sense.
modem (modulator-demodulator). A device that converts serial
(bit by bit) digital signals from a business machine (or data

Glossary-21

communication equipment) to analog signals that are suitable for
transmission in a telephone network. The inverse function is also
performed by the modem on reception of analog signals.
modified frequency modulation (MFM). The process of varying
the amplitude and frequency of the 'write' signal. MFM pertains
to the number of bytes of storage that can be stored on the
recording media. The number of bytes is twice the number
contained in the same unit area of recording media at single
density.
modulation. The process by which some characteristic of one
wave (usually high frequency) is varied in accordance with
another wave or signal (usually low frequency). This technique is
used in modems to make business-machine signals compatible
with communication facilities.
modulation rate. The reciprocal of the measure of the shortest
nominal time interval between successive significant instants of
the modulated signal. If this measure is expressed in seconds, the
modulation rate is expressed in baud.
module. (1) A program unit that is discrete and identifiable with
respect to compiling, combining with other units, and loading. (2)
A packaged functional hardware unit designed for use with other
components.
modulo check. A calculation performed on values entered into a
system. This calculation is designed to detect errors.
monitor. Synonym for cathode ray tube display (CRT display).
most-significant digit. The leftmost (non-zero) digit. See also
high-order position.
ms. Millisecond; 0.001 second.
multiplexer. A device capable of interleaving the events of two or
more activities, or capable of distributing the events of an
interleaved sequence to the respective activities.

Glossary-22

multiprogramming. (1) Pertaining to the concurrent execution of
two or more computer programs by a computer. (2) A mode of
operation that provides for the interleaved execution of two or
more computer programs by a single processor.
n. Prefix nano; 0.000000001.
NAND. A logic operator having the property that if P is a
statement, Q is a statement, R is a statement, ... , then the NAND
of P, Q ,R, ... is true if at least one statement is false, false if all
statements are true.
NAND gate. A gate in which the output is 0 only if all inputs are
1.
DaDo (n). Prefix 0.000 000 001.
nanosecond (ns). 0.000000001 second.
negative true. Synonym for active low.
negative-going edge. The edge of a pulse or signal changing in a
negative direction. Synonymous with falling edge.
non-return-to-zero change-on-ones recording (NRZI). A
transmission encoding method in which the data terminal
equipment changes the signal to the opposite state to send a
binary 1 and leaves it in the same state to send a binary o.
non-return-to-zero (inverted) recording (NRZI). Deprecated term
for non-return-to-zero change-on-ones recording.
NOR. A logic operator having the property that if P is a
statement, Q is a statement, R is a statement, ... , then the NOR of
P, Q, R, ... is true if all statements are false, false if at least one
statement is true.
NOR gate. A gate in which the output is 0 only if at least one
input is 1.

Glossary-23

NOT. A logical operator having the property that if P is a

statement, then the NOT of P is true if P is false, false if P is true.
NRZI. Non-return-to-zero change-on-ones recording.
ns. Nanosecond; 0.000000001 second.
NUL. The null character.
null character (NUL). A control character that is used to

accomplish media-fill or time-fill, and that may be inserted into or
removed from, a sequence of characters without affecting the
meaning of the sequence; however, the control of the equipment
or the format may be affected by this character.
odd-even check. Synonym for parity check.
offline. Pertaining to the operation of a functional unit without

the continual control of a computer.
one-shot. A circuit that delivers one output pulse of desired

duration for each input (trigger) pulse.
open circuit. (1) A discontinuous circuit; that is, one that is

broken at one or more points and, consequently, cannot conduct
current. Contrast with closed circuit. (2) Pertaining to a no-load
condition; for example, the open-circuit voltage of a power
supply.
open collector. A switching transistor without an internal

connection between its collector and the voltage supply. A
connection from the collector to the voltage supply is made
through an external (pull-up) resistor.
operand. (1) An entity to which an operation is applied. (2) That

which is operated upon. An operand is usually identified by an
address part of an instruction.

Glossary-24

operating system. Software that controls the execution of
programs; an operating system may provide services such as
resource allocation, scheduling, input/output control, and data
management.
OR. A logic operator having the property that if P is a statement,
Q is a statement, R is a statement, ... , then the OR of P, Q, R, .. .is
true if at least one statement is true, false if all statements are
false.
OR gate. A gate in which the output is 1 only if at least one input
is 1.
output. Pertaining to a device, process, or channel involved in an
output process, or to the data or states involved in an output
process.
output process. (1) The process that consists of the delivery of
data from a data processing system, or from any part of it. (2)
The return of information from a data processing system to an
end user, including the translation of data from a machine
language to a language that the end user can understand.
overcurrent. A current of higher than specified strength.
overflow indicator. (1) An indicator that signifies when the last
line on a page has been printed or passed. (2) An indicator that is
set on if the result of an arithmetic operation exceeds the capacity
of the accumulator.
overrun. Loss of data because a receiving device is unable to
accept data at the rate it is transmitted.
overvoltage. A voltage of higher than specified value.
parallel. (1) Pertaining to the concurrent or simultaneous
operation of two or more devices, or to the concurrent
performance of two or more activities. (2) Pertaining to the
concurrent or simultaneous occurrence of two or more related
activities in multiple devices or channels. (3) Pertaining to the

Glossary-25

simultaneity of two or more processes. (4) Pertaining to the
simultaneous processing of the individual parts of a whole, such as
the bits of a character and the characters of a word, using
separate facilities for the various parts. (5) Contrast with serial.
parameter. (1) A variable that is given a constant value for a

specified application and that may denote the application. (2) A
name in a procedure that is used to refer to an argument passed to
that procedure.
parity bit. A binary digit appended to a group of binary digits to

make the sum of all the digits either always odd (odd parity) or
always even (even parity).
parity check. (1) A redundancy check that uses a parity bit. (2)

Synonymous with odd-even check.
PEL. Picture element.

personal computer. A small home or business computer that has a

processor and keyboard and that can be connected to a television
or some other monitor. An optional printer is usually available.
phototransistor. A transistor whose switching action is controlled

by light shining on it.
picture element (PEL). The smallest displayable unit on a display.
polling. (1) Interrogation of devices for purposes such as to avoid

contention, to determine operational status, or to determine
readiness to send or receive data. (2) The process whereby
stations are invited, one at a time, to transmit.
port. An access point for data entry or exit.
positive true. Synonym for active high.
positive-going edge. The edge of a pulse or signal changing in a

positive direction. Synonymous with rising edge.

Glossary-26

potentiometer. A variable resistor with three terminals, one at

each end and one on a slider (wiper).
power supply. A device that produces the power needed to

operate electronic equipment.
printed circuit. A pattern of conductors (corresponding to the

wiring of an electronic circuit) formed on a board of insulating
material.
printed-circuit board. A usually copper-clad plastic board used to

make a printed circuit.
priority. A rank assigned to a task that determines its precedence
in receiving system resources.
processing program. A program that performs such functions as

compiling, assembling, or translating for a particular programming
language.
processing unit. A functional unit that consists of one or more

processors and all or part of internal storage.
processor. (1) In a computer, a functional unit that interprets and

executes instructions. (2) A functional unit, a part of another
unit such as a terminal or a processing unit, that interprets and
executes instructions. (3) Deprecated term for processing
program. (4) See microprocessor.
program. (1) A series of actions designed to achieve a certain

result. (2) A series of instructions telling the computer how to
handle a problem or task. (3) To design, write, and test computer
programs.
programmable read-only memory (PROM). A read-only memory

that can be programmed by the user.
programming language. (1) An artificial language established for

expressing computer programs. (2) A set of characters and rules
with meanings assigned prior to their use, for writing computer
programs.

Glossary-27

programming system. One or more programming languages and
the necessary software for using these languages with particular
automatic data-processing equipment.
PROM. Programmable read-only memory.
propagation delay. (1) The time necessary for a signal to travel
from one point on a circuit to another. (2) The time delay
between a signal change at an input and the corresponding change
at an output.
protocol. (1) A specification for the format and relative timing of
information exchanged between communicating parties. (2) The
set of rules governing the operation of functional units of a
communication system that must be followed if communication is
to be achieved.
pulse. A variation in the value of a quantity, short in relation to
the time schedule of interest, the final value being the same as the
initial value.
radio frequency (RF). An ac frequency that is higher than the
highest audio frequency. So called because of the application to
radio communication.
radix. (1) In a radix numeration system, the positive integer by
which the weight of the digit place is multiplied to obtain the
weight of the digit place with the next higher weight; for example,
in the decimal numeration system the radix of each digit place is
10. (2) Another term for base.
radix numeration system. A positional representation system in
which the ratio of the weight of anyone digit place to the weight
of the digit place with the next lower weight is a positive integer
(the radix). The permissible values of the character in any digit
place range from 0 to one less than the radix.
RAM. Random access memory. Read/write memory.

Glossary-28

random access memory (RAM). Read/write memory.
RAS. In the IBM Personal Computer, row address strobe.
raster. In computer graphics, a predetermined pattern of lines
that provides uniform coverage of a display space.
read. To acquire orinterpret data from a storage device, from a
data medium, or from another source.
read-only memory (ROM). A storage device whose contents
cannot be modified. The memory is retained when power is
removed.
read/write memory. A storage device whose contents can be
modified. Also called RAM.
recoverable error. An error condition that allows continued
execution of a program.
red-green-blue-intensity (RGBI). The description of a
direct-drive color monitor that accepts input signals of red, green,
blue, and intensity.
redundancy check. A check that depends on extra characters
attached to data for the detection of errors. See cyclic redundancy
check.
register. (1) A storage device, having a specified storage capacity
such as a bit, a byte, or a computer word, and usually intended for
a special purpose. (2) A storage device in which specific data is
stored.
retry. To resend the current block of data (from the last EOB or
ETB) a prescribed number of times, or until it is entered correctly
or accepted.
reverse video. A form of highlighting a character, field, or cursor
by reversing the color of the character, field, or cursor with its
background; for example, changing a red character on a black
background to a black character on a red background.

Glossary-29

RF. Radio frequency.
RF modulator. The device used to convert the composite video
signal to the antenna level input of a home TV.
RGBI. Red-green-blue-intensity.
rising edge. Synonym for positive-going edge.
ROM. Read-only memory.
ROM/BIOS. The ROM resident basic input/output system,
which provides the level control of the major I/O devices in the
computer system.
row address strobe (RAS). A signal that latches the row address in
a memory chip.
RS-232C. A standard by the EIA for communication between
computers and external equipment.
RTS. Request to send. Associated with modem control.
run. A single continuous performance of a computer program or
routine.
schematic. The representation, usually in a drawing or diagram
form, of a logical or physical structure.
Schottky TTL. A version (S series) of TTL with faster switching
speed, but requiring more power. See also transistor-transistor
logic and low power Schottky TTL.
SDLC. Synchronous Data Link Control.

Gloss/:lry-30

sector. That part of a track or band on a magnetic drum, a
magnetic disk, or a disk pack that can be accessed by the
magnetic heads in the course of a predetermined rotational
displacement of the particular device.
SERD ES. Serializer / deserializer.
serial. (1) Pertaining to the sequential performance of two or
more activities in a single device. In English, the modifiers serial
and parallel usually refer to devices, as opposed to sequential and
consecutive, which refer to processes. (2) Pertaining to the
sequential or consecutive occurrence of two or more related
activities in a single device or channel. (3) Pertaining to the
sequential processing of the individual parts of a whole, such as
the bits of a character or the characters of a word, using the same
facilities for successive parts. (4) Contrast with parallel.
serializer/deserializer (SERDES). A device that serializes output
from, and de serializes input to, a business machine.
setup. (1) In a computer that consists of an assembly of
individual computing units, the arrangement of interconnections
between the units, and the adjustments needed for the computer
to operate. (2) The preparation of a computing system to
perform a job or job step. Setup is usually performed by an
operator and often involves performing routine functions, such as
mounting tape reels. (3) The preparation of the system for
normal operation.
short circuit. A low-resistance path through which current flows,
rather than through a component or circuit.
signal. A variation of a physical quantity, used to convey data.
sink. A device or circuit into which current drains.
software. (1) Computer programs, procedures, and rules
concerned with the operation of a data processing system. (2)
Contrast with hardware.
source. The origin of a signal or electrical energy.

Glossary-31

square wave. An alternating or pulsating current or voltage whose
waveshape is square.
square wave generator. A signal generator delivering an output
signal having a square waveform.
SS. Start-stop.
start bit. (1) A signal to a receiving mechanism to get ready to
receive data or perform a function. (2) In a start-stop system, a
signal preceding a character or block that prepares the receiving
device for the reception of the code elements.
start-of-text (STX). A transmission control character that
precedes a text and may be used to terminate the message
heading.
start-stop system. A data transmission system in which each
character is preceded by a start bit and is followed by a stop bit.
start-stop (SS) transmission. (1) Asynchronous transmission such
that a group of signals representing a character is preceded by a
start bit and followed by a stop bit. (2) Asynchronous
transmission in which a group of bits is preceded by a start bit
that prepares the receiving mechanism for the reception and
registration of a character and is followed by at least one stop bit
that enables the receiving mechanism to come to an idle condition
pending the reception of the next character.
static memory. RAM using flip-flops as the memory elements.
Data is retained as long as power is applied to the flip-flops.
Contrast with dynamic memory.
stop bit. (1) A signal to a receiving mechanism to wait for the
next signal. (2) In a start-stop system, a signal following a
character or block that prepares the receiving device for the
reception of a subsequent character or block.
storage. (1) A storage device. (2) A device, or part of a device,
that can retain data. (3) The retention of data in a storage device.
(4) The placement of data into a storage device .

. Glossary-32

strobe. An instrument that emits adjustable-rate flashes of light.
Used to measure the speed of rotating or vibrating objects.
STX. Start-of-text.
symbol. (1) A conventional representation of a concept. (2) A
representation of something by reason of relationship,
association, or convention.
synchronization. The process of adjusting the corresponding
significant instants of two signals to obtain the desired phase
relationship between these instants.
Synchronous Data Link Control (SDLC). A protocol for
management of data transfer over a data link.
synchronous transmission. (1) Data transmission in which the time
of occurrence of each signal representing a bit is related to a fixed
time frame. (2) Data transmission in which the sending and
receiving devices are operating continuously at substantially the
same frequency and are maintained, by means of correction, in a
desired phase relationship.
syntax. (1) The relationship among characters or groups of
characters, independent of their meanings or the manner of their
interpretation and use. (2) The structure of expressions in a
language. (3) The rules governing the structure of a language.
(4) The relationships among symbols.
text. In ASCII and data communication, a sequence of characters
treated as an entity if preceded and terminated by one STX and
one ETX transmission control character, respectively.
time-out. (1) A parameter related to an enforced event designed
to occur at the conclusion of a predetermined elapsed time. A
time-out condition can be cancelled by the receipt of an
appropriate time-out cancellation signal. (2) A time interval

Glossary-33

allotted for certain operations to occur; for example, response to
polling or addressing before system operation is interrupted and
must be restarted.
track. (1) The path or one of the set of paths, parallel to the
reference edge on a data medium, associated with a single reading
or writing component as the data medium moves past the
component. (2) The portion of a moving data medium such as a
drum, or disk, that is accessible to a given reading head position.
transistor-transistor logic (TTL). A popular logic circuit family
that uses multiple-emitter transistors.
translate. To transform data from one language to another.
transmission. (1) The sending of data from one place for
reception elsewhere. (2) In ASCII and data communication, a
series of characters including headings and text. (3) The
dispatching of a signal, message, or other form of intelligence by
wire, radio, telephone, or other means. (4) One or more blocks
or messages. For BSC and start-stop devices, a transmission is
terminated by an EOT character. (5) Synonymous with data
transmission.
TTL. Transistor-transistor logic.

V. Volt.
video. Computer data or graphics displayed on a cathode ray
tube, monitor, or display.
volt. The basic practical unit of electric pressure. The potential
that causes electrons to flow through a circuit.
W. Watt.
watt. The practical unit of electric power.

Glossary-34

word. (1) A character string or a bit string considered as an

entity. (2) See computer word.
write. To make a permanent or transient recording of data in a

storage device or on a data medium.
write precompensation. The varying of the timing of the head

current from the outer tracks to the inner tracks of the diskette to
keep a constant 'write' signal.

Glossary-35

Glossary-36

Bibliography

Intel Corporation. The 8086 Family User's Manual. This manual
introduces the 8086 family of micro computing components and
serves as a reference in system design and implementation.
Intel Corporation. 8086/8087/8088 Macro Assembly Reference
Manual for 8088/8085 Based Development System. This manual
describes the 8086/8087/8088 Macro Assembly Language, and
is intended for use by persons who are familiar with assembly
language.
Intel Corporation. Component Data Catalog This book describes
Intel components and their technical specifications.
Motorola, Inc. The Complete Microcomputer Data Libary. This
book describes Motorola components and their technical
specifications.
National Semiconductor Corporation. 250 Asynchronous
Communications Element book documents physical and operating
characteristics of the INS 8250.

Bibliograpby-l

Bibliography-2

Index

Special Characters
-MEMR (memory read command) 1-20
-MEMW (memory write command) 1-21

A
adapter card with ROM 5-12
address
bits 0 to 19 (AO-AI9), I/O channel 1-18
enable (AEN), I/O channel 1-18
latch enable (ALE), I/O channel 1-18
map, I/O 1-21
AEN (address enable), I/O channel 1-18
ALE (address latch enable), I/O channel 1-18

B
BASIC reserved interrupts 5-8
BASIC,
DEF SEG 5-8
reserved interrupt 5-8
binary integers (coprocessor) 2-3,2-4
BIOS,
parameter passing 5-4
quick reference 5-23
software interrupt 5-5
system ROM 5-23

Index-l

use of 5-3
bit map, I/O 8255A 1-25
block diagram (coprocessor) 2-6
break (keyboard extended code) 5-19

c
CCITT 8-3
standards 8-3
CH CK,negative (-channel check), I/O channel 1-19
channel check, negative (-CH CK), I/O channel 1-19
character codes (keyboard) 5-15
CLK, I/O channel 1-19
clock (CLK), I/O channel 1-19
communications 8-3
component diagram, system board 1-15
connectors (power supply) 3-5,3-9

D
data
bits 0 to 7 (DO-D7) 1-19
flow, system board diagram 1-5
decimal integers (coprocessor) 2-3,2-4
description I/O channel 1-18
diagram system board 1-15
diagram, I/O channel 1-16
DMA request 1 to 3 (DRQI-DRQ3) 1-19
DOS,
keyboard function 5-8
keyboard functions 5-22

Index-2

E
EIA 8-3
standards 8-3
establishing a communications link 8-5
establish a link 8-5

I
I/O channel
address map 1-21
ALE (address latch enable) 1-18
bit map 8255A 1-25
CH CK (-I/O channel check) 1-19
CH RDY (I/O Channel Ready), I/O channel 1-20
check (-CH CK) 1-19
CLK 1-19
description 1-18
I/O channel diagram 1-16
oscillator (OSC) 1-21
read command (-lOR) 1-20
reset drive (RESET DRV) 1-21
terminal couIit (T/C) 1-21
write command (-lOW) 1-20
Intel 8048 4-3
Intel 8088 microprocessor, 6-17,.instuction set extensions
arithmetic 6-8, 6-19
comparison 6-19
conditional transfer operations 6-15
constants 6-21
control transfer 6-12
data transfer 6-6, 6-17
instruction set index 6-27
instruction set matrix 6-25
logic 6-10
memory segmentation model 6-5
operand summary 6-4
processor control 6-16,6-22

Index-3

register model 6-3
second instruction byte summary 6-4
string manipulation 6-11
transcendental 6-21
use of segment override 6-5
interrupt request 2 to 7 ORQ2-IRQ7) 1-20

K
keyboard 4-3
connector 4-13
interface 4-5
power-on self test 4-4
keyboard extended codes,
alt 5-17
break 5-19
caps lock 5-18
ctrl 5-17
pause 5-19
print screen 5-19
scroll lock 5-18
shift 5-17
system reset 5-18
keyboard scan 4-3

L
logic diagrams, system board 1-30

Index-4

M
math coprocessor
binary integers 2-3, 2-4
block diagram 2-6
control word 2-5
decimal integers 2-3, 2-4
hardware interface 2-4
NMI 2-5
QSO 2-4
QS1 2-4
real numbers 2-3,2-4
memory locations,
reserved 5-8
memory map,
BIOS 5-9
memory map, system 1-8
memory read command (-MEMR) 1-20
memory write command (-MEMW) 1-21

N
NMI (coprocessor) 2-5

o
OSC (oscillator), I/O channel 1-21
oscillator (OSC), I/O channel 1-21

Index-5

p
parameter passing (ROM BIOS) 5-4
software interrupt listing 5-5
pause (keyboard extended code) 5-19
power good signal 3-5, 3-9
power supply (system) 3-3
connectors 3-5, 3-9
input requirements 3-3, 3-7
outputs 3-4, 3-8
overvoltage/overcurrent protection 3-5
pin assignments 3-5,3-9
power good signal 3-5, 3-9

Q
QSO (coprocessor) 2-4
QS 1 (coprocessor) 2-4
quick reference, character set 7 -12

R
read command I/O channel 1-20
read memory command (-MEMR) 1-20
ready (RDY), I/O channel 1-20
real numbers (coprocessor) 2-3,2-4
request interrupt 2 to 7 (IRQ2-IRQ7) 1-20
reserved interrupts,
BASIC and DOS 5-8
RESET DRV, I/O channel 1-21

Index-6

s
screen editor keyboard function 5-22
scroll lock (keyboard extended code) 5-18
shift (key priorities (keyboard code) 5-18
shift (keyboard extended code) 5-15
shift states (keyboard code) 5-17
signals (I/O),
-DACKO-DACK3 1-19
-I/O CH CK 1-19
-lOR 1-20
-lOW 1-20
-MEMR 1-20
-MEMW 1-21
AEN 1-18
ALE 1-18
AO-A19 1-18
CLK 1-19
DRQ1-DRQ3 1-19
DO-D7 1-19
I/O CH RDY 1-20
IRQ2-IRQ7 1-20
OSC 1-21
RESET DRY 1-21
T/C 1-21
software interrupt listing (8088) 5-5
speaker circuit 1-23
speaker drive system 1-23
system board
data flow diagrams 1-5
diagram 1-15
logic diagrams 1-30
system clock (CLK), I/O channel 1-19
system memory map 1-8
system reset 5-18
system ROM BIOS 5-23

Index-7

T
terminal count (T/C), I/O channel 1-21
typematic 4-3

v
vectors with special meanings 5-5

w
write command (-lOW), I/O channel 1-20
write memory command (-MEMW) 1-21

Numerals
8088, (see Intel 8088 microprocessor) 1-4
8255A bit map 1-25
specifications I/O channel 1-28

Index-8

----- -- -----

-- -

---.-

The Personal Computer
Hardware Library

Reader's Comment Form
Technical Reference
IBM Personal Computer XT
IBM Portable Personal Computer

6361459

Your comments assist us in improving the usefulness of
our publication; they are an important part of the input
used for revisions.
IBM may use and distribute any of the information you
supply in any way it believes appropriate without
incurring any obligation whatever. You may, of course,
continue to use the information you supply.
Please do not use this form for technical questions
regarding the IBM Personal Computer or programs for
the IBM Personal Computer, or for requests for
additional publications; this only delays the response.
Instead, direct your inquiries or request to your
authorized IBM Personal Computer dealer.
Comments:

rUIn

NOPOSTAGE
NECESSARY
IF MAILED
IN THE
UNITED STATES

BUSINESS REPLY MAIL
FIRST CLASS

PERMIT NO. 321

BOCA RATON, FLORIDA 33432

POSTAGE WILL BE PAID BY ADDRESSEE

IBM PERSONAL COMPUTER
SALES & SERVICE
P.O. BOX 1328-C
BOCA RATON, FLORIDA 33432

aJa~

.1

aldelS

IOU

PIO::!

op aseald

ade.l

-------

- ---'!''::~~5:

The Personal Computer
Hardware Library

Reader's Comment Form
Technical Reference
IBM Personal Computer XT
IBM Portable Personal Computer

6361459

Your comments assist us in improving the usefulness of
our publication; they are an important part of the input
used for revisions.
IBM may use and distribute any of the information you
supply in any way it believes appropriate without
incurring any obligation whatever. You may, of course,
continue to use the information you supply.
Please do not use this form for technical questions
regarding the IBM Personal Computer or programs for
the IBM Personal Computer, or for requests for
additional publications; this only delays the response.
Instead, direct your inquiries or request to your
authorized IBM Personal Computer dealer.
Comments:

nlln

NO POSTAGE
NECESSARY
IF MAILED
IN THE
UNITED STATES

BUSINESS REPLY MAIL
FIRST CLASS

PERMIT NO. 321

BOCA RATON, FLORIDA 33432

POSTAGE WILL BE PAID BY ADDRESSEE

IBM PERSONAL COMPUTER
SALES & SERVICE
P.O. BOX 1328-C
BOCA RATON, FLORIDA 33432

aJa~ PIO~

aldelS

IOU

op aseald

adel

-------_.-

--- --- --- -----

The Personal Computer
Hardware Library

Reader's Comment Form
Technical Reference
IBM Personal Computer XT
IBM Portable Personal Computer

6361459

Your comments assist us in improving the usefulness of
our publication; they are an important part of the input
used for revisions.
IBM may use and distribute any of the information you
supply in any way it believes appropriate without
incurring any obligation whatever. You may, of course,
continue to use the information you supply.
Please do not use this form for technical questions
regarding the IBM Personal Computer or programs for
the IBM Personal Computer, or for requests for
additional publications; this only delays the response.
Instead, direct your inquiries or request to your
authorized IBM Personal Computer dealer.
Comments:

10111

NO POSTAGE
NECESSARY
IF MAILED
IN THE
UNITED STATES

BUSINESS REPLY MAIL
FIRST CLASS

PERMIT NO. 321

BOCA RATON, FLORIDA 33432

POSTAGE WILL BE PAID BY ADDRESSEE

IBM PERSONAL COMPUTER
SALES & SERVICE
P,O, BOX 1328-C
BOCA RATON, FLORIDA 33432

8J8l1 PIO=!

aldelS IOU op aseald

ade,l

-

------ ----- -------_.-

The Personal Computer
Hardware Library

Reader's Comment Form
Technical Reference
IBM Personal Computer XT
IBM Portable Personal Computer

6361459

Your comments assist us in improving the usefulness of
our publication; they are an important part of the input
used for revisions.
IBM may use and distribute any of the information you
supply in any way it believes appropriate without
incurring any obligation whatever. You may, of course,
continue to use the information you supply.
Please do not use this form for technical questions
regarding the IBM Personal Computer or programs for
the IBM Personal Computer, or for requests for
additional publications; this only delays the response.
Instead, direct your inquiries or request to your
authorized IBM Personal Computer dealer.
Comments:

1mB

NO POSTAC-E
NECESSARY
IF MAILED
IN THE
UNITED STATES

BUSINESS REPLY MAIL
FIRST CLASS

PERMIT NO. 321

BOCA RATON, FLORIDA 33432

POSTAGE WILL BE PAID BY ADDRESSEE

IBM PERSONAL COMPUTER
SALES & SERVICE
P.O. BOX 1328-C
BOCA RATON, FLORIDA 33432

aJa~

aldelS

IOU

PIO:l

op aseald

ade.l

----- =~=';'=®

-------

International Business Machines Corporation
P.O. Box 1328-W
Boca Raton, Florida 33432

6361459
Printed in United States of America



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.3
Linearized                      : No
XMP Toolkit                     : Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:56:37
Create Date                     : 2013:05:24 16:35:43-08:00
Modify Date                     : 2013:05:24 16:25:38-07:00
Metadata Date                   : 2013:05:24 16:25:38-07:00
Producer                        : Adobe Acrobat 9.53 Paper Capture Plug-in
Format                          : application/pdf
Document ID                     : uuid:ac0fa91b-c612-694e-9e71-f98eb10ed986
Instance ID                     : uuid:a4cb8074-92e7-9b46-904e-2205cda5981b
Page Layout                     : SinglePage
Page Mode                       : UseNone
Page Count                      : 307
EXIF Metadata provided by EXIF.tools

Navigation menu