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 .
Page Count: 307
Download | |
Open PDF In Browser | View 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) ren ~ ~ 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 : 307EXIF Metadata provided by EXIF.tools