4301000_FT 86C_Users_Manual_Sep81 4301000 FT 86C Users Manual Sep81
4301000_FT-86C_Users_Manual_Sep81 manual pdf -FilePursuit
4301000_FT-86C_Users_Manual_Sep81 4301000_FT-86C_Users_Manual_Sep81
User Manual: 4301000_FT-86C_Users_Manual_Sep81
Open the PDF directly: View PDF .
Page Count: 92
Download | ![]() |
Open PDF In Browser | View PDF |
FT-86C and FT-86C/FP USER'S MANUAL FORWARD TECHNOLOGY INCORPORATED document number 4301000, 9/81 This manual is intended to give the user of the FT -86C and FT -86C/FP a guide to system functionality and also to enable the user to add peripheral, memory and other devices to satisfy specific requirements. The FT -86C and FT -86C/FP give users the capability to quickly add components without needing a detailed understanding of the 8086 or its support chips. For specific device timings we recommend that you refer to the manufacturer's literature listed in Appendix B. © 1981 FORWARD TECHNOLOGY INC. FORWARD TECHNOLOGY INC., 2595 Martin Avenue, Santa Clara 95050 PHONE: TWX: (408) 988-2378 910-338-2186 TABLE OF CONTENTS SECTION TITLE PAGE SPECIFICATIONS • v 1.0 INTRODUCTION 1-1 2.0 INST ALL ATION PROCEDURE AND OPTIONS 2-1 2.1 2-1 MUL TIBUS CONTROL MUL TIBUS OPTIONS • 2-2 COMMUNICA TIONS OPTIONS • 2-2 2.1.1 2.2 2.2.1 3.0 . COMMUNICA TIONS CLOCK STRAPPING • 2-2 2.3 EPROM TYPE • 2-9 2.4 WAIT STATE TIMING. 2-10 205 INTERRUPT STRAPPING. 2-11 THEOR Y OF OPERATION FT -86C • 3-1 3.1 BUS ELEMENTS 3-1 3.1.1 BUS CONTROL . 3-2 3.1.2 LOCAL BUS. 3-2 3.1.3 I/O BUS • 3-2 3.2 3.3 3.4 3.5 MEMORY 3-2 3.2.1 RANDOM ACCESS MEMORY. 3-2 3.2.2 PROGRAMMABLE READ ONLY MEMORY. 3-2 TIMING. 3-5 3.3.1 CLOCK GENERA TOR • 3-5 3.3.2 PROCESSOR TIMING 3-5 3.3.3 BUS CONTROL TIMING 3.3.4 BUS TIMING. COMMUNICA TIONS • • 3-5 3-6 • 3-7 3.4.1 READ REGISTER FUNCTIONS • 3-9 3.4.2 WRITE REGISTER FUNCTIONS • 3-9 3.4.3 PROGRAMMING THE WRITE REGISTERS • 3-9 3.4.4 PROGRAMMING THE READ REGISTERS • 3-10 INTERRUPT CONTROL • 3-12 TABLE OF CONTENTS (Cont.) SECTION 4.0 TITLE BREADBOARD INTERFACE. 4.1 4.2 4.3 MEMORY ADDRESS BUS I/O ADDRESS BUS DATA LINES 4.3.1 4.3.2 4.4 4.5 MEMOR Y DATA BUS • I/O DATA BUS • CHIP SELECT DECODING • EPROM CHIP SELECTS RAM SELECT LINES • CONTROLFOR TH • MONITOR COMMANDS 5.2.1 5.2.2 5.2.3 5.2.4 5.3 . . SUBSTITUTE. MOVE. MATCH . 5-1 5-1 5-2 5-2 5-2 5.2.5 5.2.6 5.2.7 5.2.8 5.2.9 GO. SEND. 5-4 5-4 5.2.10 DUMP. 5-4 P! AND WP!. 5-3 P@ AND WP@ 5-3 5-3 RECEIVE. MONITOR COMMANDS WITH EXPLICIT SEGMENT ADDRESSES 5.3.1 5.3.2 5.4 FILL 4-1 4-1 4-1 4-1 4-1 4-1 4-3 4-3 4-3 4-5 5-1 5-1 FIRMWARE 5.1 5.2 ii • 1.0 SELECT LINES 4.5.1 4.5.2 5.0 PAGE SMOVE SMA TCH • MONITOR CONTROL COMMANDS. 5-5 5-5 5-5 5-5 5.4.1 5.4.2 SEGMENT 5-5 TIMES ••• RUN 5-6 5.4.3 MISMATCHES 5-6 TABLE OF FIGURES TITLE FIGURE NUMBER PAGE 2-1 FT -86C SELECTED PAD LOCATIONS 2-3 2-2 MUL TIBUS CONTROL STRAPPING 2-5 2-3 CLOCK GENERA TOR STRAPPING 2-6 2-4 MODEM CONTROL AND COMMUNICATIONS STRAPPING 2-7 2-5 EPROM STRAPPING 2-9 2-6 WAIT STATE STRAPPING 2-10 2-7 INTERRUPT STRAPPING 2-12 3-1 BLOCK DIAGRAM FT -86C/FP 3-3 3-2 ADDRESS TIMING CONSTRAINTS 3-7 3-3 USART INTERNAL STRUCTURE 3-8 3-4 READ REGISTER BIT FUNCTIONS 3-10 3-5 WRITE REGISTER BIT FUNCTIONS 3-11 4-1 MEMOR Y ADDRESS AND DATA BUS'S 4-2 4-2 I/O ADDRESS PADS 4-3 4-3 I/O SELECT PADS 4-4 4-4 EPROM AND RAM CHIP SELECT LINES 4-5 iii TABLE OF TABLES TABLE NUMBER 2-1 TITLE TELECOMMUNICA nON PAD ASSIGNMENTS PAGE 2-8 APPENDICES APPENDIX NUMBER TITLE PAGE A CONTROLFORTH GLOSSARY A-I B RECOMMENDED READING B-1 C FT -86C PIN ASSIGNMENTS C-I Multibus is a registered trademark of Intel Corporation Portions of the copyrighted Zilog Microcomputer Components Data Book are reproduced within this manual with the written consent of Zilog Corporation. iv SPECIFICA nONS PHYSICAL Width: 12.0" (30.48cm) Height: 6.75" (17.15cm) Depth: .27" (.83cm) Weight: 13.0 oz. approx. (370 gm) Shipping Weight: 20.0 oz. approx. (570 gm) Form Factor: IEEE P-796 Operating Temperature: ENVIRONMENTAL OOC to 55 0 C Storage Temperature: Relative Humidity: 5V +5% 12V +10% -12V +10% FT-B6C 2.75 A 40 mA 35 mA FT-86C!FP 3.25 A 40 mA 35 mA ELECTRICAL CHARACTERISTICS 90% non-condensing SYSTEM CLOCK 5.0 MHz +0.1% CONNECTORS BUS: 86 pin 0.156" center (0.4cm) Viking 3KH43/9AMK12 SERIAL I/O: 50 pin header type AUGAT 110-50001-102 ELECTRICAL INTERFACE P-796 Bus TTL compatible Interrupt request TTL compatible Serial I/O RS-232C compatible PROCESSORS FT-86C Intel 8086 or equivalent Space for 8087-co-processor provided Direct addressing to 1 Mbyte of memory Bit, byte, word and block operation v SPECIFICAnONS (Cont.) PROCESSORS (Cont.) 24 operand addressing modes Fourteen (14) registers 8 and 16-bit signed and unsigned arithmetic FT-86C/FP Intel IAPX 86/20 consisting of an Intel 8086 and an Intel 8087 co-processing configuration Direct addressing of up to 1 Mbyte of memory Bit, byte, word and block operations 24 operand addressing modes Fourteen registers in the 8086. Eight 80-bit numeric data registers and six 16-bit registers in 8087 Single and double precision floating point arithmetic, BCD arithmetic and transcendental functions PROCESSOR WORD SIZE FT-86C Instruction: 8, 16, 24, 32, 40 or 48-bits Data: 8 and 16-bits FT-86C/FP INSTRUCTION CYCLE TIME Instruction: 8, 16, 24, or 32-bits Data: Internal up to 80-bits FT-86C Typical instruction cycle: 1.0 microsecond FT-86C/FP Typical instruction cycles: Multiply double precision - 27 microseconds Square root - 36 microseconds Divide single precision - 39 microseconds Tangent - 90 microseconds vi SECTION 1.0 INTRODUCTION The FT -86C is a Multibus compatible single board 16-bit computer offering a customizing area. The processor is an Intel 8086 with the 8087 Numeric Data Processor available as an option. The customizing area allows the user to add peripheral and memory chips to meet the user's specific needs. The FT -86C and FT -86C/FP provide ample drive current on local busses to support most types of peripheral or memory chips. Spare select lines are provided for user-added PROM, RAM or I/o devices. All pads in the customizing area are drilled to take 0.025" square wire wrap pins. The customizing area may be used for up to 27 16-pin chips and 5 40-pin chips, or many combinations of 0.3" wide and 0.6" wide devices. The optional controlFORTH monitor is an implementation of FORTH with monitor command extensions. It provides the user with a real time programming language and also with a powerful testing and debugging tool. The FORTH supplied with the 8087 numeric data processor option contains additional extensions to facilitate the use of the 8087. 1-1 1-2 SECTION 2.0 INSTALLA TION PROCEDURE AND OPTIONS The FT -86C is shipped with the following options and straps. Option straps and IC's can be located by using the x-y coordinate system etched on the PCB. Along the length of the PCB is a set of alphabetic coordinates (A, B, 0, etc.). Along the width of the PCB, a set of numeric coordinates ( 1, 2, 3, etc.) can be found. These coordinates form an x-y grid so that straps and IC's can be located rapidly. 2.1 MULTIBUS CONTROL The FT -86C is optioned to act as bus master with the highest priority. This is done by a strap (pad 1 to pad 2 at board location 8J) which holds pin 9 of the 8289 to ground. (Refer to Figure 2-1 for pad locations and Figure 2-2 for specific strapping information.) Cutting the ground strap allows the FT -86C to respond to the Multibus bus priority in (BPRN) signal. The FT -86C can be used in either parallel or serial bus priority arbitration schemes. F or parallel priority arbitration external logic must be provided. The 8289 bus arbiter has the signal ANYRQST option strapped to ground via pads 9 and 10. (Refer to Figure 2-1 for pad locations and Figure 2-2 for specific strapping information.) In this mode the FT86C will not release the Multibus unless it has completed its immediate bus access requirements. Cutting the ground trace between pads 9 and 10, and strapping ANYRQST to the adjacent option hole (pad 8) will hold ANYRQST high. The FT -86C will now relinquish the bus as soon as the current bus transfer cycle (if any) has been completed. ANYRQST FACTORY STANDARD BPRN CRQLCK Low Low Low Gives the FT -86e priority. It will not relinquish the bus. Low Dri ven by pin 15 on Multibus Low The FT -86C will relinquish the bus only to a higher priority master. Low Dri ven by pin 15 on Multibus High The FT-86C relinquishes the Multibus after each transfer cycle. USER OPTIONS FUNCTION 2-1 2.1.1 MULTIBUS OPTIONS (Figure 2-2) The FT -86C is factory optioned to provide bus clock and common clock to the Multibus. The clocks can be disabled by cutting the straps between pads 6 and 7 and 11 and 12 (Refer to Figure 2-2 for pad locations). The FT -86C will now draw its bus clock from the Multibus. 2.2 COMMUNICATIONS OPTIONS Most of the communications options for the FT -86C are software controlled. The strapping options for the communications channels allow the user to select the communications clock source and speed for each channel. The user can also select local mode (direct connection to a terminal) or select modem operation through a combination of software and hardware strapping options. 2.2.1 COMMUNICA TIONS CLOCK STRAPPING The communications clock for the USART can come from either of two sources: the on-board clock generator (used for asynchronous protocols) or from an external clock source such as a modem (used for synchronous protocols). The user may select the clock source and speed by removing or installing jumpers. The FT -86C is strapped at the factory for 300 baud operation on both communications channels. Figure 2-1 is a pictorial representation of the FT -86C PCB showing the jumper pad locations and numbers for option strapping. Figure 2-3 shows the telecommunications clock generator and the associated pads for each clock frequency. An example of how to strap Channel "B" for 9600 baud is given on page 2-6. All baud rates assume that the USAR T is initialized to + 64 clock mode on the appropriate channel. 2-2 ;! 500 0 0 0 \ \ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4900000000000000000000000001 0000000000000000000000000 0000000000000000000000000 0000000000000000000000000 0000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 WAIT STATE STRAPPING 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 oG +0 oG OOo-t:=)-o+OOG F R 3 + 0 oG +0 oG.. +0 oG ..a...24600Q~ +0 oG o 0 CII 0 0 0 ................... ,. .......... .., 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 r~O 0 + G Al>15R"" MEMORY ADDRESS PADS 0 0 0 MODEM CONTROL STRAPPING o 0000 0 , 0 0 0_0 000000_0 0 0 0 0 I/O ADDRESS STRAPPING .. 0 0 o~0 f0 0 0 0 0 000 '186D+o2 1~ WS 0 000 0000 0 0 0 0 Off DAT~~ 50 CJ" ,. ,. I 9 07 0 0 0 0 0 0 0 0 0- PKUM a TYPE a - 0 G 0 0 : : : 0 ! 0 0 0 o o o o o o : : : o o ~ o o o o 0 0 0+ 00 0 o o oG 00 o 0 0+0 0 0 o o o G o o 0 0 0 0 0 0 0 0 0 o o o o o 0 0 0 0+ 00 0 0 o oG 0 0 00 0 o + o 0 0 0 0 0 0 0 0 0 0 G 0 0 0 0+ 0 00 0 0 oG 0 0 00 0 + 0 0 0 0 0 0 0 0 000 o G 0 o o o o o o v o o o a ~ ~ 0 o o o 0 OG 00 o o o o o o o o o o o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 V3A tOOtOOt-80Q ,,--.a..._--~::.ra11ft1 0 lOla TIUOAIO ::JIIIIII"""IIIIIIIIIIIIIIII" Figure 2·1. FT -86C SELECTED PAD LOCATIONS 2-3/2-4 ANYRDST STRAPPING (CUT & JUMPER TO PAD 8 FOR ANYRDST HIGH) BUS CLOCK STRAPPING (CUT TO DISABLE) BUS PRIORITY STRAPPING (CUT TO ENABLE BPRN) COMMON CLOCK STRAPPING (CUT TO DISABLE) Figura 2-2. MULTIBUS CONTROL STRAPPING 2-5 EXAMPLE 1 - Change Channel "B" to 9600 1. Cut trace between Ir 7D pin 11 and pad 99, to free trace from pad 99 to pad 16. 2. Add jumper between pads 98 and 99 to place 9600 baud clock on pad 16. 3. Cut jumpers between pads 15, and 17 to separate Channel tlA and Btl clocks. 4. Jumper pad 16 to pad 15, make sure jumper between 13 and 15 is intact. R9 1 4 5 6 2 R9 ClR OA 14 lO OS 13 p OC 12 T 00 11 80 15 A 00 163 S C 0 ClK ClR OA 14 9 lD OS 13 7 12 p QC 10 T QO 11 3 A 70 15 1 4 5 I- 6 2 S C 0 9600* 98} 4800 097 2400 96 1200 95 20 18 16 2-6 NOTE: } 302 on schamatlc 6H on board 14 600 102 300 101 } 150 100 75 ClK CLOCK GENERATOR STRAPPING Labeled baud are for 3D2 on schamatlc 70 on board 99 163 QO Figure 2-3. * 301 on schematic 80 on board 64 USART clock mode. The FT -86C can also be strapped to operate from an external clock source. Figure 2-4 is a schematic representation of the telecommunications circuitry. EXAMPLE 2 - OPERATE CHANNEL "B" FROM MODEM CLOCK 20 1. Remove jumpers between pads 13, 15, and 17 removing the internal clock from Channel "B". 2. Jumper pad 27 to 28. 3. Jumper pad 29 to 30. Clock now comes from Jl pins 44 for TXCB and 46 for RXCB. TXCS 13~----~~---------------------; RXCS 150-----~~-------------------. EXAMPLE 2 170-----T~X~C~A~--------------__. 19o-____~RX~C~A~______________. 32 I NT 34 b--'5~ _____________________ TXDA!---"15=--__U8 0--+-t--lf-"18~ C ~~ T S A RTSA ______~~~r»__~~~19~DCDA FROM J1 b-\-----4~F28::..i R XC B D T RA 17 44 ~'----G ~ ~ ~ ~ ~16=--__4u6 ~ ~ tbI'---_--C~2.:...,7 T XC B 22 DCDB ~ - 3n6t---OI--+--+=-14"'-1 T \( C A 4G _ _ 26 49 ZSIO/2TXDB~~--~ ~ 5~2 75188 3 TO J1 2H 0-_ _ _ _-=2.::...,3 C T S B USART o-_ _---:2=.;:9'-! R X D B 40 DB 0 DB 1 39 D B2 RTSB~24~__40 O 3~9 8 10 75188 3H 42 t-='------ 42 11 39 40 81 82 0 80 18 79 19 78 77 20 76 75 21 68 5 74 73 23 72 71 24 35 36 I R2 69 84 0 figure 2-7. 6G PIC IR3 70 11 INTN 2-12 I R1 22 37 38 I RO INTERRUPT STRAPPING 8259A 17 TO CPU SECTION 3.0 THEORY OF OPERATION FT-86C The FT -86C processor is the Intel 8086 5 MHz 16-bit microprocessor. The 8086 communicates to the outside world via a 20-bit wide mUltiplexed address and data bus, i.e., addresses and data exist on the same pins but at different times. The separation of data and address values is achieved by using signals derived from the 8086 status lines. Eleven additional 8086 lines provide the timing and control interfaces. Internally, the 8086 can be considered as three major elements: the Bus Interface Unit (BIU), the Execution Unit (EU) and the timing and control unit. The bus interface unit operates asynchronously to the execution unit. The BIU controls an internal 6 byte long instruction queue. The BIU will prefetch instructions from memory whenever there are 4 bytes or less in its internal queue and the executive unit doesn't require use of the bus. The BIU has access to 5 of the 8086's 16-bit registers. The execution unit is not directly involved with bus management. The execution unit executes instructions taken off the internal 6 byte instruction queue that were prefetched by the BIU. When the EU requires immediate access to the bus, it does so via the BIU. The control and timing unit provides status information to external devices in addition to the EU and the BIU. The processor status lines 50, 51 and 52, together with the processor clock, are provided to the external bus control elements to enable demultiplexing of the address and data lines from the 8086. The bus control elements also decode the status lines into the appropriate operational commands. The 8087 numerical data processor operates in a close coupled configuration with the 8086. The 8087 can execute instructions in parallel with the 8086. The 8087 provides trigonometric, logarithmic, and exponential functions in addition to its arithmetic processing capabilities. The 8087 conforms to the proposed IEEE Floating Point Standard. Internally, the 8087 consists of two units: a control unit and a numeric execution unit. The 8087 control unit maintains synchronization with the 8086 by monitoring the 8086 status lines SO, 51, 52, and 56. The 8087 control unit moitors the data bus to obtain 8087 specific instructions. The numeric execution unit has a register stack of 8 80-bit data registers which are used for computation. Instructions can addres the data registers either implicitly or explicitly. 3.1 BUS ELEMENTS There are four major elements within the FT -86C bus system: bus control, local bus, Figure 3-1 is a block diagram of the FT -86C. I/o bus and the Multibus. 3-1 3.1.1 BUS CONTROL Bus CO(!t!IJ: is hlplemented Nith three LSI chips. The on-board bus and the I/O bus are controlled by an Intel 8288 bus controller. The Multibus is controlled by a second 8288. Selection of which bus controller to use is made through an Intel 8289 bus arbiter. The 8289 resolves access contention to the Multibus when operating in a multi-master environment. 3.1.2 LOCAL BUS The 20-bit memory addresses output by the 8086/8087 are always latched on-board. A range test is then carried out by the memory decoding logic to determine if this is within the local (on-board) address range. If the address is not within this range the bus arbiter contends for access to the Multibus. The local bus controller is disabled and when access to the Multibus is granted the bus arbiter enables the Multibus bus controller. If the address is a valid local address the local bus controller is enabled and issues the appropriate commands and enable signals. 3.1.3 I/o BUS The local I/o bus consists of the low order 8-bits of both the data and address lines. It is activated for an input or output operation. The I/o bus is only acti ve for local I/o addresses in the range 00 to 3F Hex. 3.2 MEMORY The on-board memory resides in two overlapped 64 Kbyte address areas. FOOOO to FFFFF Hex 00000 to OFFFF Hex An address of Hex FFFFO will also address Hex OFFFO. This overlaid 64 Kbyte area is decoded into two sections of 32 Kbytes for EPROM and, 32 Kbytes for RAM. 3.2.1 RANDOM ACCESS MEMORY The FT -86C comes with 4 Kbytes of RAM. This is at addresses Hex 00000 to OOFFF, and also Hex FOOOO to FOFFF. The RAM is configured with 2 x 8 Kbytes 200ns static RAMs. Decoding is provided for up to seven additional pairs of RAMs up to a maximum of 32 Kbytes. 3.2.2 PROGRAMMABLE READ ONLY MEMORY F our configuration pads are provided for EPROMs. Each pad may be configured for 2532, 2732 or 2764 parts. Decoding is provided for four pairs of 32 Kbit EPROMs. One chip select line is provided for one pair of 2764 EPROMs. 3-2 IIlTERRUPT REQUESTS IRllRl iPIiJj. iiiiEli. IiPiilf. BUSY CBRn. INIT r-·---, CPU ClK GEN It DRIVERS l12li4 • 4 OPTIONAL GCII7 - LT 6J AOO-A013 BUS CONTROL lOGIC I _.J 1!0811 Pl MULTIBUS DUS INTERFACE IE INT SO-S3 r- LOCK MULTIBUS CONTROL SIGNALS INTA1. MR01. MWR1. IOR1. 10Wl 9J lOCK AEN SII·S3 ..,,--.... SYSOIRESB MULTIBUS BUS SII C~NTROUER S3 8288 OT/R r-- AEN I- SYSS ALEl BCLK & CCLK 1 BUS ARBITER >---- CEIl • BJ il - r'"" BCLK r- AOO-A013 1 DE ON·OOARO ADO LATCHES r- r--"I STB MULTIBUS BUS ADO LATCHES AIH I PROM ARRAY r<>- I-- lE.BE.BF CS . OPT PROM SOCKETS I - AIN 3A.7A 4D.BB.7F I r-I I---I L __ -I AIN - I 4A.BA CS ABB·ABO ABO-AB13 ALE J SO-S3 LOCAL BUS COIHROLlER 8288 ~ -- AORO-AOR13 OATO·OATF CEN r----- OE.I IOCSO·IOCS7 ON·BOARO BI·DIRECT DATA DRIVERS ~ ~ MULTIBUS BUS BI· ADD DIRECT ADF DRIVERS - 50.9B - lJ OTIRl -6 OIR I r- ~ OIR CHIP SELECT LOGIC - SIGNALS TO CUSTOMIZING AREA OF PCB RAM ARRAY OBO·DBF "'- AIN 3B.3C.3E.3F 6B.1B.9E l . CS lA.6A LPSEL LRSEL DT/R OPTIONAL EXTERIIAL TCOM CLOCK I CHANNEL 0 ~ E CHANNEL A TCOM CLOCK INTR J INT BUS CDNTRDUER 8259 I- LDCAL 110 BI·DlRECT DRIVERS ~ 60.1D.8D.90 3G INTA·2 TCOM CLK GEN DO 07 AB ZILDG SID r D80 DB7 4G BIA CIO r---u -- '0 RXOB.CTSB.DCDB • RXOA.CTSA.OCOA Jl EXTERNAL COMMUNICATIONS CHANNEl A CHANNEl D INT TTL TO EIA CH B TIL TO EIA CHA EIA TD TIL CHA EIA TO TIL CHB TXDA.RTSA.DTRA TXDB.RTSB.OTRB I 68 IRO IRl ro- INT BUS IRO DRIVERS 8G.9G lal·IRl ~ OABl 110 L-....o- CD~TRDl LATCHES GAB2 ZG Figure 3-1. BLOCl{ DIAGRAM FT-86C/FP 3-3/3-4 If the FORTH monitor is ordered with the FT -86C it will be in 32 Kbit EPROMs located at board positions 3A and 7 A. The FORTH monitor resides at memory addresses Hex FEOOO through Hex FFFFF, and also at addresses Hex OEOOO through, Hex OFFFF. If the 8087 numeric data processor option is ordered, an enhanced FORTH system is supplied in EPROM. The enhancements follow the guidelines of the proposed standards committee working group version of Floating Point FORTH. 3.3 TIMING Two timing elements are used in the FT -86C: the processor clock and the bus clock. The processor clock is generated by an Intel 8284. The oscillator input is 15 MHz. The 8284 divides by three and provides a 5 MHz 33% duty cycle clock to the processor and to the bus control elements. The bus clock can either be generated by the FT -86C and fed onto the Multibus or can be driven via the Multibus from another bus master. The bus clock is used by the bus arbiter in its bus contention circuits and also to synchronize its output commands to the bus controllers. 3.3.1 CLOCK GENERATOR In addition to providing the processor clock, the 8284 synchronizes and controls the READY and RESET lines to the 8086/8087. Generation of the Multibus initialization signal INIT holds the RESET line active. The READY line to the 8086 is controlled by two pairs of input signals on the 8284. One pair of inputs are used for controlling wait states for on-board devices, the other pair is used for external bus control, i.e., Multibus. 3.3.2 PROCESSOR TIMING The 8086 processor cycle operates in a minimum of four clock cycles called Tl, T2, T3, and T4. Depending on the speed of attached memory or I/O devices a variable number of wait states may be inserted between processor clock cycles T3 and T4 (e.g., Tl, T2, T3, Tw ••• Tw, T4.) The FT -86C provides separately strappable wait states for on-board I/O, RAM and EPROMs. Multibus access, being asynchronous, will automatically result in o to N wait states being inserted. The number of wait states inserted depends on bus contention and arbitration and also on the access time of the specific device or memory type accessed. 3.3.3 BUS CONTROL TIMING The three elements that make up the bus control section derive their timing from the processor clock and the processor status lines (SO, 51, and 52) to 3-5 indicate what function is going to be performed during the current Tl to T4 cycle. This is done at Tl. The 8086 also places the address on the multiplexed bus at this time. Both bus controllers (8288s) use the status lines and the processor clock to generate a pulse (ALE) to latch the address into both the local bus and the Multibus address drivers. The Multibus address drivers do not at this stage have their outputs enabled. The output of the local address drivers is decoded by the local PROM, RAM and I/O decoders to establish whether this address falls within the on-board address range. If it does, a signal is generated and input to the bus arbiter to indicate a resident bus access only. The Multibus address latches are not output enabled and the Multibus bus controller is held disabled. If the address is not within the resident address space, the signal to the 8289 bus arbiter is raised and the 8289 contends for the Multibus. As soon as the 8289 has gained control of the Multibus, the Multibus address drivers are enabled as is the Multibus bus controller. At T2 time the 8086 floats its multiplexed address/data lines preparatory to outputting or inputting data. If the resident bus controller is enabled, it will now generate the appropriate command which has been decoded from the processor status lines. If the Multibus bus controller is enabled, the appropriate commands are issued to the Multibus and the resident bus controller is held disabled. At T3 the appropriate control signals are issued from whichever bus controller is active to condition one of the sets of data bus transceivers. The control signals will be held active through T3 and Twait, where Twait may be 0 up to N. The number of Twaits is dependent on the speed of the addressed device. When addresses are within resident bus address space, the FT -86C allows the user to strap select separate wait states for EPROM, RAM and I/O. When addresses are not within the resident bus space, Twait will be issued until the addressed Multibus device responds with an acknowledgement (XACK). At T4 time the 8086 floats its address/data lines preparatory to issuing a new address at the following Tl. The commands are terminated as are the control signals. The processor status lines (50, 51, and 52) all go inactive. 3.3.4 BUS TIMING Although the Multibus is an asynchronous bus, two clock lines are present on the bus -- bus clock and constant clock. The Multibus also has certain timing constraints regarding the relationship of the address, data and command presentation. Bus clock is used to synchronize bus arbitration. Enabling of the Multibus address drivers (AEN) is synchronized with bus clock; however, the disabling of the Multibus address drivers is synchronized with T4 of the processor clock. Bus clock can, in theory, be any frequency; however, the lower the frequency the longer the Multibus access arbitration time. The FT -86C generates a bus clock frequency of 9.83 MHz. Constant clock is provided to the Multibus for general use. It is not specifically related to the timing of bus clock or to the timing of other bus signals. The FT -86C can provide a 9.83 MHz constant clock. 3-6 ADR(nj' STABLE ADDRESS MRDC' OR 10RC' STABLE DATA DATA(nj' ~ XACK' CD _ _---,I ADDRESS SETUP TIME: 50 NANOSECONDS MINIMUM. @ TIME REQUIRED FOR SLAVE TO GET DATA ONTO BUS IN ACCORDANCE WITH ® @) ® SETUP TIME REQUIREMENT. XACK' CAN BE ASSERTED AS SOON AS DATA IS ON BUS. TIME REQUIRED FOR MASTER TO REMOVE COMMAND. ADDRESS AND DATA HOLD TIME: 50 NANOSECONDS MINIMUM. XACK' AND DATA MUST BE REMOVED FROM THE BUS A MAXIMUM OF 65 NANOSECONDS AFTER THE COMMAND IS REMOVED. Figure 3-2. 3.4 ADDRESS TIMING COMSTRAINTS COMMUNICAnONS Two independent communications ports are provided via a Zilog ZSIO USART. Each port can be configured via software to operate in several different modes. Two full sets of RS-232C modem control signal drivers are provided, allowing modems to be attached to these ports. Access to these I/O ports is achieved through the FORTH words P@ and PI. These words are described in Section 5.0. All port programming and I/O is accomplished using these two words. BASE ADDRESS (Hex) ZSIO PORT 0000 Channel "A" Data 0002 Channel "A" Control Registers 0004 Channel "B" Data 0006 Channel "B" Control Registers 3-7 ,...... ~} SERIAL DATA CHANNEL A f--} CHANNEL CLOCKS ~ f---------- 5Y GND INTERNAL CONTROL LOGIC CHANNEL A READ/WRITE REGISTERS .... ~~~ ~ DISCRETE CONTROL & STATUS (CH. AI §} MODEM OR OTHER CONTROLS DISCRETE CONTROL & STATUS (CH. BI ==} ==:J MODEM OR OTHER CONTROLS CHANNEL B -.=} SERIAL DATA :=} CHANNEL CLOCKS 8 DATA CONTROL 6 INTERNAL BUS CPU BUS I/O INTERRUPT CONTROL LOGIC H! CHANNEL B READ/WRITE REGISTERS .... ~ INTERRUPT CONTROL LINES Figure 3-3. --- USART INTERNAL STRUCTURE The USAR TIs internal structure includes a CPU interface, internal control and interrupt logic, and two full duplex channels. Each channel contains read and writ.e registers, and discrete control and status logic that provides the interface to modems or other external devices (see Figure 3-3). The read and write register group includes five 8-bit control registers, two sync character registers and two status registers. The ZSIO interrupt vector capability is not used. All interrupt vectors are provided by the 8259A PIC. The registers for both channels are designated in the text as follows: WRO-WR7 write registers 0 through 7 RRO-RR2 read registers 0 through 2 The bit assignment and functional grouping of each register is configured to simplify and organize the programming process. Paragraps 3.4.1 and 3.4.2 on the following page list the functions assigned to each read or write register. 3-8 3.4.1 3.4.2 READ REGISTER FUNCTIONS RRO Transmit/receive buffer status, interrupt status and external status RRI Special receive condition status RR2 Modified interrupt vector (Channel "B" only) WRITE REGISTER FUNCTIONS WRO Register pointers, CRC initialize, initialization commands for the various modes, etc. WRI Transmit/receive interrupt and data transfer mode definition WR2 Interrupt vector (Channel "B" only) WR3 Receive parameters and control WR4 Transmit/receive miscellaneous (parameters and modes) WR5 Transmit parameters and controls WR6 Sync character or SOLC address field WR7 Sync character or SOLC flag The logic for both channels provides formats, synchronization and validation for data transferred to and from the channel interface. The modem control inputs Clear to Send (CTS) and Data Carrier Detect (OCO) are monitored by the discrete control logic under program control. Strapping options permit on-board emulation of the modem control signals. The automatic interrupt vectoring capability of the ZSIO is not used. An attempt to use the ZSIO generated interrupt vectors will cause an indeterminate result. Both channels contain command registers that must be programmed prior to operation. The controlFORTH monitor initializes Channel "A and B" of the ZSIO. 3.4.3 PROGRAMMING THE WRITE REGISTERS The Z8D-SID contains eight registers (WRO-WR7) in each channel that are programmed separately by the system program to configure the functional personality of the channels. With the exception of WRD, programming the write register requires two bytes. The first byte contains three bits (00-02) that point to the selected register; the second byte is the actual control word that is written into the register to configure the Z8D-SID. (See Figure 3-5.) WRD is a special case in that all the basic commands (CMOD-CM02) can be accessed with a single byte. Reset (internal or external) initializes the pointer bits 00-02 to point to WRO. 3-9 3.4.4 PROGRAMMING THE READ REGISTERS The ZBO-SIO contains three registers, RRO-RR2 (Figure 3-1) that can be read to obtain the status information for each channel (except for RR2 -- Channel "B" only). The status information includes error conditions, interrupt vector and standard communications-interface signals. To read the contents of a selected read register other than RRO, the user program must first write the pointer byte to WRO in exactly the same way as a write register operation. Then by executing an input instruction, the contents of the addressed read register can be rEad. The status bits of RRO and RRI are grouped to simplify status monitoring. This enables tIle user to read all the appropriate error bits from aile register (RR!). READ REGISTER 0 I 07 I 06 I 05 J 04 J 03 J 02 I J 01 I 00 I I I Rx CHARACTER AVAILABLE INT PENDING (CH. A ONL YI Tx BUFFER EMPTY } OCO SYNC/HUNT CTS • Tx UNDERRUN/EOM BREAK/ABORT ·USEO WITH "EXTERNAL/ST.UUS INTERRUPT" MODE READ REGISTER 1t I 07 1 06 I 05 1 04 1 03 I 02 I 01 1 DO 1 ALL SENT 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 0 0 1 1 1 1 0 1 FIELD BIT S HI PREVIOU S BYTE 0 0 0 0 0 0 1 2 PARITY ERROR Rx OVERRUN ERROR CRC/FRAMING ERROR ENO OF FRAME (SOLCI - 1 FIELD BITS IN SECONO PREVIOUS BYTE 3 4 5 6 7 8 8 8 -RESIDUE DATA FOR EIGHT Rx BITS/CHARACTER PROGRAMMED tuSEO WITH SPECIAL RECEIVE CONDITION MODE READ REGISTER 2 I 07 I 06 1 05/ 04 J 03 1 02 I 1 01 1 00 1 I I Vlt '10 V2t } V3t V4 V5 V6 V7 INTERRUPT VECTOR tvARIABLE IF "STATUS AFFECTS VECTOR" IS PROGRAMMED Figure 3-4. 3-10 READ REGISTER BIT FUNCTIONS WRITE REGISTER 4 WRITE REGISTER 0 I 07 I 06 I 05 1 04 I 03 I 02 I 0 I I 00 I o I I I 0 0 o 0 I I 0 I I 0 I 0 I 0 I I I I 1 0 1 o o o 1 0 1 0 1 0 1 1 o o 1 1 ' - - - - PARITY ENABLE PARITY EVEN/OOO L-_ _ _ _ 0 1 2 3 4 5 6 7 SYNC MODES ENABLE 1 STOP BIT/CHARACTER III STOP BITS/CHARACTER 2 STOP BITS/CHARACTER 8 BIT CHARACTER 16 BIT SYNC CHARACTER SOLC MODE 101111110 FLAG) EXTERNAL SYNC MOOE NULL COOE SEND ABORT ISOLC) RESET EXT/STATUS INTERRUPTS CHANNEL RESET ENABLE INT ON NEXT Rx CHARACTER RESET TxINT PENDING ERROR RESET RETURN FROM INT ICH·A ONLY) 0 o REGISTER REGISTER REGISTER REGISTER REGISTER REGISTER REGISTER REGISTER 1 o 1 o 1 o XI CLOCK MODE X16 CLOCK MODE X32 CLOCK MODE X64 CLOCK MODE rWLL CODE RESET Rx CRC CHECKER RESET Tx CRC GENERATOR RESET Tx UNDERRUN/EOM LATCH o 1 1 WRITE REGISTER 1 WRITE REGISTER 5 I 07 I 06 I 051 04 I 03 I 02 I 01 I DO I I 07 I 06 I 051 04 I 031 I I L -_ _ _ _ _ L -_ _ _ _ _ _ _ I EXT INT ENABLE Tx INT ENABLE STATUS AFFECTS VECTOR ICH. B ONLY) 02 I I 01 TDO -I IL~I~=== ~~SCRC ENABLE SOLC/CRC·16 L -_ _ _ _ _ _ _ _ Tx ENABLE L-_ _ _ _ _ _ _ _ _ SEND BREA~ Rx INT DISABLE Rx INT ON FIRST CHARACTER } INT orl ALL Rx CHARACTERS IPARITY AFFECTS VECTORI • INT ON ALL Rx CHARACTERS IPARITY DOES NOT AFFECT VECTOR) • OR ON SPECIAL CONDITION WAIT/RE/jOY 011 R/T ' - - - - WAIT/READY FUNCTION ' - - - - - - WAIT/READY ENABLE Tx Tx Tx Tx 5 BITS lOR LESS) CHARACTER 7 BITS/CHARACTER 6 BITS/CHARACTER 8 BITS/CHARACTER "--DTR WRITE REGISTER 6 WRITE REGISTER 2 (CHANNEL B ONLY) I 07 T06 T051041 03 I 02 I 01 TDO 1 I I I I I 07 I 06 I 051 04 I 03 I 02 I 01 I 00 I II I I VI VO } V2 V3 V4 V5 V6 V7 INTERRUPT VECTOR WRITE REGISTER 7 I 07 I 06 I 05 1 04 I 03 I 02 I 01 I DO I I 07 I 06 I 051 04 I 03 I 02 I 01 I 00 I Rx ENABLE SYNC CHARACTER LOAO INHIBIT L ADDRESS SEARCH MOOE ISDLC) Rx CRC ENABLE ENTER HUNT PHASE ' - - - - - - - - - - - - - AUTO ENABLES o 1 o I Rx Rx Rx Rx 5 BITS/CHARACTER 7 BITS/CHARACTER 6 BITS/CHARACTER B BITS/CHARACTER BIT BIT BIT BIT BIT BIT BIT BIT 0 1} 2 3 4 5 6 7 II I I SYNC SYNC SYNC SYNC SYNC SYNC SYNC SYNC BIT BIT BIT BIT BIT BIT BIT BIT 8 } 9 10 11 12 13 14 15 'FOR SOLC IT MUST BE PRO GRAMM EO TO "01111110" FOR FLAG RECOGNITION Figura 3·5. • -ALSO SDLC ADDRESS FIELD WRITE REGISTER 3 I L~'==== I _~~======= SYNC SYNC SYNC SYNC SYNC SYNC SYNC SYNC WRITE REGISTER BIT FUNCTIONS 3-11 • 3.5 INTERRUPT CONTROL The 8259A programmable interrupt controller is in local I/O space at Hex address 0008. It can be programmed using the P@ and P! commands in the same manner as the serial communications ports. When an interrupt request is generated and presented to one of the 8259 A interrupt request lines, the interrupt controller will evaluate the interrupt request and, if appropriate, generate an interrupt request to the 8086. If interrupts are enabled, the processor will complete execution of the current instruction and enter the interrupt acknowledge machine cycle. The processor status line S2 being low indicates either an I/O operation or an interrupt machine cycle. The I/o bus will be enabled. The local 8288 bus controller generates an interrupt acknowledge signal (INTA) which is used to precondition the 8259A interrupt controller. No other activity takes place during this processor cycle. The second processor cycle duplicates the first up to issuing the INTA. The second INTA causes the 8259A to issue a vector byte to the 8086 via the I/O data bus transceiver. The vector byte is used to generate an address where the 8086 loads a new code segment and instruction pointer. The base address of the interrupt controller is Hex 0008. Address line 1 is used to indicate the first word of either an initialized command word or an operational command word. For full programming information see the Intel Component Data Catalog, or the 8086 User's Guide. 3-12 SECTION 4.0 BREADBOARD INTERFACE 4.1 MEMORY ADDRESS BUS The memory address bus is available at two locations. The full 20-bit address is available at pads FAD through F A13. The lower 8-bits of the address lines are available on pads at board location AD also. Refer to Figure 4-1 for pad location. Memory addresses are always presented at these locations even when the address is not within the on-board address range. 4.2 I/O ADDRESS BUS The I/o address bus is the lower 8-bits of the address bus. always active when any address is output from the 8086. The addresses are available at board area G2. numbering. 4.3 The I/O address bus is See Figure 4-2 for pad layout and DATA LINES Two separate sets of data transceivers are available. One is active during memory references or memory mapped I/O operations. The other is only active during input, output or interrupt acknowledge processor cycles. 4.3.1 MEMORY DATA BUS Memory data lines are available to the user at pads FDO through FDF. During an on-board memory write cycle, data will be valid on these pads during T3, Tw •• Tw. Tw is governed by strap settings at board location 01 (see Wait State Timing Section). During an on-board memory read, data should be presented during T3, Tw Tw, Tw. See Intel 8086 product specification for exact timings. During off-board operations, the on-board transceivers will be tri-stated, allowing pads FDO through FDF to float. The low order byte of the data bus is also available at board location AI. Refer to Figure 4-1 for pad location. 4.3.2 I/o DATA BUS The I/O data bus is the low order byte of the data bus. It is only active during an input, output or interrupt acknowledge processor cycle. Timing is the same as the memory data bus. Wait states are set by straps at 02 (see Section on Wait State Timing). 4-1 o o o o (; ~ oG " 0 o o o o o o .. ~ o 7 0 0 2732 00 0 0+0 0 000 0 000 000 000 0 ¢ o Goo 000 o 0G 0 o 00 0 ~ 000 o Figura 4-1. (, 0 0 0 0 0 0 0 0 0 tOOtOOt-80Q 0 0 0 0 0 0 4) 0 0 tala TIUOAlO -::JIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 4-2 " o o MEMORY ADDRESS AND DATA BUS'S PADII 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 Figura 4-2. 4.4 I/o ADDRESS (Hex) 0DB~ 00B1 0DB2 00B3 00B4 0DB5 0DB6 00B7 0AB0 0AB2 0AB4 0AB6 0AB1 0AB3 0AB5 IDAB7 110 ADDRESS PADS I/o SELECT LINES All I/o addresses in the range of Hex 00 to Hex 53 are automatically considered on-board addresses even though not all of the I/o addresses are decoded. The I/O select lines are decoded on 8 byte boundaries. Address line a is not used. All I/O port addresses must be even addresses. Address lines 2 and 1 are available for port addressing within the selected chip. Select lines a and 1 are used for the ZSIO and 8259A respectively. Refer to Figure 4-3 for I/O select line information. 4.5 CHIP SELECT DECODING Chip select lines are provided for RAM, EPROM and I/O. for user added components. 4.5.1 Spare lines are available EPROM CHIP SELECTS ERPOM chip select lines are available on pads at board location B2. Select lines are decoded on 8 Kbyte boundaries. If the user adds PROM's using the spare select lines they must be connected to the opposite pad in order to be within the on-board address space. Only the top 4 chip select lines may be used, allowing the user to put a maximum of 32 Kbytes of EPROM on-board. 4-3 One chip select line is provided for 2764 EPROMs. This is derived from ORting the top two chip select lines on pads 119 and 121. If 2764s are to be used, pads 119 and 121 must be strapped to 120 and 122 respectively. Refer to Figure 4-4 for pad location. PAD TO PAD OEOOO or FEOOO 121 122 OCOOO or FCOOO 119 120 OAOOO or F AOOO 123 124 08000 or F8000 125 126 I/o ADDRESSES CHIP SELECT PAD NUMBER SELECTED DEVICE BASE ADDRESS In Hex In Hex 0000-0007 0008-000F 0010-0017 00l8-00lF 0020-0027 0028-002F 0030-0037 0038-003F 91 90 89 88 87 92 - ZSIO 8259A SPARE SPARE SPARE SPARE SPARE SPARE ;~ , ...... ...-.......;;;;-;;,;,.;;;;-;;;;,;;;;-="'........... =-~..c.,,~-.,.I!IIIIIIIIIi--~ •.. - . .... t.:...............;';"; Figure 4-3. 4-4 110 SELECT PADS 4.5.2 RAM SELECT LINES The RAM select lines are decoded on 4 Kbyte boundaries. One select line is used to select the 2 Kbit by 8 RAM chips at board locations lA and 6A. Seven select lines are avilable for use options. To be included in the on-board RAM space the user must connect the appropriate pad to the pad opposite it in addition to wiring the select signal to the RAM chip. Refer to Figure 4-4 for pad location. BASE ADDRESS OF SELECT LINE (Hex) CHIP SELECT PAD NUMBER CONNECT TO PAD NUMBER 00000 or FOOOO 117 118 01000 or FlOOD 115 116 02000 or F2000 113 114 03000 or F3000 III 112 04000 or F4000 109 110 05000 or F5000 107 108 06000 or F6000 103 104 07000 or F7000 105 106 000000000000000000000 ~@ @G +@ @G o@@cccccccooocco OAT ws RAM SELECT figure 4-4. EPROM AND RAM CHIP SELECT liNES 4-5 4-6 SECTION 5.0 FIRMWARE 5.1 CONTROLFORTH ControlFORTH is supplied in EPROM and is an implementation of FORTH derived from fig-FORTH and with certain extensions. The extensions are a general set of monitor commands to assist the user in adding, debugging and testing LSI devices. This Section explains the monitor enhancements of controlFORTH in detail. The glossary in Appendix A contains descriptions of the other FORTH words in controlFORTH. For further information on FORTH, Appendix B is a bibliography of FORTH works. In the following text underlines indicate one or more spaces and -+ means the RETURN key. With the exception of the substitute command all addresses, counts and value fields may be entered in decimal, octal or hexadecimal depending on the base selected prior to entering the command. Commands may be strung together, separated with spaces, on the same line with a carriage return ( -+ ) at the end. Once a base is selected it will remain in effect until another base command is entered. Base commands: HEX -+ DECIMAL OCTAL Sets hexadecimal base -+ -+ Sets decimal base Sets octal base The base selected will affect the number of characters displayed in any numeric field. All command formats shown use the hexadecimal base. See the glossary for more information. 5.2 MONITOR COMMANDS - Implied Segment Value 5.2.1 STUFF FORMAT AAAA CCCC VV STUFF AAAA Source address CCCC Byte count VV Value to be inserted The STUFF command executes using the implied segment value. Memory will be filled with the specified value VV starting at address AAAA for the number of bytes specified in CCCC. See 5.4.1 for information on setting or viewing the implied segment value. The 16-bit implied segment value and 16-bit addresses are used together to generate the 20-bit addresses of the 8086. See the biblography in Appendix B for more information the 8086. 5-1 EXAMPLE: HEX COO 10 55 STUFF ~ This example fills 16 decimal (hexadecimal 10) memory locations starting at hexadecimal address COO with hexadecimal 55. 5.2.2 SUBSTITUTE FORMAT AAAA SUBSTITUTE AAAA Starting address DISPLAY FORMAT SS55 AAAA HH This command executes on successive byte memory locations. If the contents of a byte location do not need to be changed, pressing carriage return will not alter the current value HH and fetch the next byte location. To change a value enter the required value VV and press carriage return. The entered value VV will replace the original value HH. To terminate the SUBSTITUTE command press the Q key and carriage return. SUBSTITUTE operates in hexadecimal but it preserves and restores the base in use prior to using SUBSTITUTE. 5.2.3 MOVE FORMAT AAAA BBBB CCCC MOVE AAAA Source address BBBB Destination address CCCC Number of bytes to moved This command moves the specified number of bytes from locations starting at AAAA to locations starting at BBBB within the implied segment. The move is always to higher memory locations. 5.2.4 MATCH FORMAT AAAA BBBB CCCC MATCH AAAA Source address 1 BBBB Source address 2 ccce Byte count to compare DISPLAY FORMAT FOR MISMATCH IIII AAAA HH nn BBBB VV Where lIII is the implied segment value, AAAA and BBBB are the addresses within the segment and HH and VV are the unequal values at those locations. 5-2 MATCH compares two given strings of bytes. The start addresses are AAAA and BBBB. This command will terminate either on completion of the count CCCC or after a given number of mismatches have been displayed. The number of errors tolerated before termination can be altered, see Section 5.4.3. This default is set to 10 mismatches. 5.2.5 P! and WP! FORMAT VV DD P! and VV DD WP! VV Value to be output to the port DD Destination port address The commands P! and WP! write data to output ports. P! works with 8-bit ports and WP! is for 16-bit output ports. If the destination port address is within the local Con-board) I/O address space these commands will terminate normally even if there is no port at that address. If the destination port is in the off-board I/O address space, i.e., via the Multibus, two conditions can occur. If the destination port responds, the commands will terminate normally. If the destination port doesn't respond, the deadman timer will expire and terminate the command. In the second case there will be a delay of at least 1/10th of a second. Using a "TIMES • • . RUN" command it is simple to detect a non-responsi ve port. 5.2.6 P@ and WP@ FORMAT DD _P(8) and DD _ WP@ DD Input port address The commands P@ and WP@ read data from a given input port. Again, P@ is for 8-bit ports and WP@ is for 16-bit ports. These commands will exhibit exactly the same symptoms as the OUT command if the addressed port does not respond. The data value displayed will be indeterminate if the port does not respond. To see the value read from the port type the FORTH print command • "dot" or U. See glossary for more information about dot. EXAMPLE: to view the value from an I/O device at Hex port II2E type: 5.2.7 GO FORMAT AAAA GO AAAA Address of first instruction to execute This command transfers control to the program whose first instruction is located at address AAAA and with the implied segment value. 5-3 5.2.8 5.2.9 RECEIVE FORMAT AAAA CCCC DD RECEIVE AAAA Address where input data is to be loaded CCCC Count of bytes to be loaded DD Input port address SEND FORMAT AAAA CCCC DD SEND AAAA Address where output data begins CCCC Number of memory bytes to be transferred DD Output port address TRANSMISSION FORMAT HHHHHHHH etc. Where each H is an ASCII character containing 4 of the B-bits in a byte. To SEND n bytes requires transmission of 2 n characters. The command pair RECEIVE and SEND receive and send binary data via a selected serial input/output port. The binary data is broken into 4-bit nibbles and converted to form the ASCII Hex characters D through 9F and AD through F for transmission over a serial link. The format for both commands is simply one of a long string of ASCII characters. The command SEND assembles the ASCII from the data bytes and transmits it. The RECEIVE command accepts an ASCII string, strips the ASCII, reassembles the original data bytes, and places them in memory at the given address. 5.2.10 DUMP FORMAT AAAA CCCC DUMP AAAA Starting address CCCC Byte count DISPLAY FORMAT AAAA n n n n n n n n n n n n n n n n 5-4 5.3 MONITOR COMMANDS WITH EXPLICIT SEGMENT ADDRESSES 5.3.1 SMOVE FORMAT AAAA SSSS BBBB DDDD CCCC SMOVE AAAA Source address within source segment SSSS Source segment address BBBB Destination segment DDDD Destination segment address CCCC Count of bytes to be moveel - - address within destination The command SMOVE functions in the same way as MOVE except that the segment values must be explicitly specified. 5.3.2 SMATCH FORMAT AAAA SSSS BBBB DODD CCCC SMA TCH AAAA First source address within source segment SSSS First source segment register address BBBB Second source address within segment DDDD Second source segment register address CCCC Count of bytes to be compared - - DISPLAY FORMAT SSSS AAAA HH DODD BBBB VV Command terminates either on completion of count or upon a gi ven number of mismatches, see Section 5.4.3. 5.4 MONITOR CONTROL COMMANDS 5.4.1 SEGMENT FORMAT SSSS SEGMENT SSSS Value to be loaded into the implied segment register. The contents of the implied segment may be views by typing: IMPLIED? -+. (Note: If the number appears negative type: IMPLIED_@_U._ -+ ). 5-5 5.4.2 TIMES • . . RUN FORMAT NNNN TIMES COMMAND RUN NNNN Loop counter value COMMAND One or more of the monitor commands using either implied or explicit segment register. The TIMES • . • RUN command pair must be used as a pair and in the order given above. The commands that go between TIMES and RUN will be executed at least once even if a zero is given for the count. The maximum count is 32,767. The number of commands that go in between has no practical limit and may extend over several lines. Each command must be able to be found in controlFORTH's dictionary or an error will result. 5.4.3 TOLERATED To set the number of mismatches tolerated before termination of MATCH or SMA TCH type: n TOLERATED -+ To view the number tolerated type: 5-6 APPENDIX A CONTROLFORTH GLOSSARY This glossary contains the definition of all words in the controlFOR TH vocabulary. The de finitions are presented in ASCII sort order. Stack Notation The first line of each entry shows a symbolic description of the action of the procedure on the parameter stack. The symbols on the left indicate the order in which input parameters have been placed on the stack. Three dashes " ___ " indicate the execution point; any parameters left on the stack after execution are listed on the right. In this notation, the top of the stack is to the right. Symbol Definition addr,adrl, Memory address b 8-bit (with high eiaht bits zero) c 7-bit ASCII character (with high nine bits zero) d,di, 32-bit signed double integer, most significant portion with sign on top of stack flag Boolean flag (0 ff Boolean false flag (value = n,nl, I6-bit signed integer number u,ul, I6-bit unsigned integer number ud,udi, 32-bit unsigned number tf Boolean true flag (value - non-zero) = false, non-zero = true) 0) Pronunciation The natural language pronunciation of controlFORTH names is given in double quotes ("). Integer Format Unless otherwise noted, all references to numbers are for I6-bit signed integers. For 32-bit signed double numbers, the most significant part (with the sign) is on top. All arithmetic is implicitly I6-bit signed integer math, with error and underflow indication unspecified. A-I Capitalization Word names as used within the glossary are conventionally written in upper case characters. Lower case is used when reference is made to the run-time machine codes, not directly accessible. O.e. VARIABLE is the user word to create a varible.) Each use of that variable makes use of a code sequence 'variable' which executes the function of the particular variable. Attributes (ATTR) Capital letters show definition characteristics: C May only be used within a colon definition. A digit indicates number of memory addresses used, if other than one. E Intended for execution only. Indicates that the word is IMMEDIATE and will execute during compilation, unless special action is taken. P Has precedence bit set. U A user variable. Will execute even when compiling. Group Key Words (GROUP) The following key words identify the functional groups that each word is most related to. A-2 STACK Stack Manipulation NUMERIC Numeric Representation ARITHMETIC Arithmetic and Logical COMPARISON Comparison Operators CONTROL Control Structures MEMORY Memory I/O Input/Output FORMAT Output Formatting COMPILER Compiler - Text Interpreter DICTIONARY Dictionary Control DEFINING Defining Words VOCABULARY Vocabularies MASS Mass Storage MISC Miscellaneous SECURITY Security /Error Detection PRIMITIVE Primitives ASSEMBLER Assembler Dictionary PARAMETER Parameter Used in ControlFOR TH WORD STACK NOT A TION/DEFINITION GROUP ATTR n addr --"store" MEMORY Stores 16-bit number n into addr. !CSP SECURITY "store CSP" Stores the stack position in CSP. Used as part of the compiler security. See CSP • II udl --- ud2 "sharp" FORMAT Generates the next ASCII character placed in an output string from udl. Result ud2 is the quotient after division by BASE, and is maintained for further processing. Use between• See #S . II> d --- addr n "sharp-greater" FORMAT Terminates numeric output conversion by dropping d, leaving the text address and character count n suitable for TYPE • ud --- 0 e) "sharp-s" lIS FORMAT Converts all digits of a ud adding each to the pictured numeric output text, until the remainder is zero. A single zero is added to the output string if the number was initially zero. Use only between • --- addr "tick" DICTIONARY I Use in the form: , If executing, leaves the parameter field address of the next word accepted from the input stream. If compiling, compiles this address as a literal; later execution will place this value on the stack. If the word is not found after a search of CONTEXT and FOR TH vocabularies an error message is displayed. A-3 WORD STACK NOT A TION/DEFINITION GROUP ATTR "paren" MISC ( Used in the form: ( ecce) Accepts and ignores comment characters from the input stream, until the next right parenthesis. As a word, the left parenthesis must be followed by one blank. It may be freely used while executing or compiling. An error condition exists if the input stream is exhausted before the right parenthesis. (.") PRIMITIVE The run-time procedure, compiled by ." , which transmits the following in-line text to the selected See ." • PRIMITIVE (;CODE) The run-time procedure, compiled by ;CODE , that rewrites the code field of the most recently defined word to point to the following machine code sequence. See ;CODE • PRIMITIVE (+LOOP) The run-time procedure compiled by +LOOP , which increments the loop index by n and tests for loop completion. See +LOOP • (ABORT) PRIMITIVE Executes after an error when WARNING is -l. This word normally executes ABORT, but may be altered (with care) to a user's alternative procedure. See ABORT. (DO) limit+l start The run-time procedure, compiled by DO , which moves the loop control parameters to the return stack. See DO • A-4 PRIMITIVE WORD ST ACK NOTATION/DEFINITION (FIND) GROUP ATTR PRIMITIVE addr1 addr2 addr1 addr2 pfa byte tf (found) ff (not found) Searches the dictionary starting at the name field address addr2, matching to the text at addrl. Returns parameter field address, length of name field byte and Boolean true for a good match. If no match is found, only a Boolean false is left. See -FIND. (LOOP) PRIMITIVE C The run-time procedure, compiled by LOOP, which increments the loop index and tests for loop completion. See LOOP • (NUMBER) dl addr1 --- d2 addr2 PRIMITIVE Converts the ASCII text beginning at addrl+l with regard to BASE. The new value is accumulated into dl, being left as d2. addr2 is the address of the first unconvertable digit. See NUMBER • n1 n2 --- n3 ARITHMETIC "times" Multiples nl by n2 and leaves the product n3. */ n1 n2 n3 --- n4 ARITHMETIC "times-di vide" Multiplies nl by n2, divides the result by n3 and leaves the quotient n4. n4 is rounded toward zero. The product of nl times n2 is maintained as in intermediate 32-bit value for a greater precision than the otherwise equivalent sequence: n1 n2 .. n3 / */MOD n1 n2 n3 --- n4 n5 ARITHMETIC "times-di vide-mod" Multiplies nl by n2, divides the result by n3 and leaves the remainder n4 and quotient n5. A 32-bit intermediate product is used as for */. The remainder has the same sign as nl. A-5 WORD + STACK NOT A TION/DEFINITION GROUP ATTR n1 n2 --- n3 "plus" ARITHMETIC Adds n1 to n2 and leaves the arithmetic sum n3. n addr --"plus store" MEMORY Adds n to the 16-bit value at the address, by the convention given for +. +- n1 n2 --- n3 "plus-minus" ARITHMETIC Applies the sign of n2 to nl, which is left as n3. +LOOP CONTROL IC n1 --- (run-time) addr n2 --- (compile-time) "plus loop" Used in a colon-definition in the form: DO ••• n1 +LOOP At run-time, +LOOP selectively controls branching back to the corresponding DO based on nl, the loop index and the loop limit. The signed increment nl is added to the index and the total compared to the limit. The branch back to DO occurs until the new index is equal to or greater than the limit (nl > ~), or until the new index is equal to or less than the limit (n1 < 0). Upon exiting the loop, the parameters are discarded and execution continues. Index and limit are signed integers in the range -32,768 to 32,767. At compile-time, +LOOP compiles the run-time word (+LOOP) and computes the branch offset from HERE to the address left on the stack by DO. n2 is used for compile time error checking. n --- "comma" Stores n into the next available dictionary memory cell, advancing the dictionary pointer. A-6 DICTIONARY WORD STACK NOT A nON/DEFINITION GROUP ATTR nl n2 --- n3 IIminus" ARITHMETIC Substracts n2 from n1 and leaves the difference n3. -FIND pta byte tf (found) ft (not found) "dash-find" DICTIONARY Accepts the next text word (delimited by blanks) in the input stream to HERE , and searches the CONTEXT and then CURRENT vocabularies for a matching entry. If found, the dictionary entry's parameter field address, its length byte, and a Boolean true is left. Otherwise, only a Boolean false is left. -TRAILING addr n1 --- addr n2 FORMAT "dash-traHingil Adjusts the character count n1 of a text string beginning address to suppress the output of trailing blanks. The characters at addr+n1 to addr+n2 are blanks. An error condition exists if n1 is negative. n --- INPUT/OUTPUT "dot" Displays the number on the top of a stack. The number is converted from a signed 16-bit two's complement value according to the numberic BASE. The sign is displayed only if the value is negative. A trailing blank is displayed after the number. Also see D. . " INPUT/OUTPUT I "dot-quote" Used in the form: ." ecce" Accepts the following text from the input stream, terminated by "(double-quote). If executing, transmits this text to the selected output device. If compiling, compiles so that later execution will transmit the text to the selected output device. At least 127 characters are allowed in the text. If the input stream is exhausted before the terminating double-quote, an error condition exists. A-7 WORD .R ST ACK NOT A TION/DEFINITION GROUP ATTR nl n2 --"dot-R" FORMAT Displays number n1 right justified n2 places. trailing blank is printed. No .S STACK "dot-S" Displays the contents of the stack without altering the stack. This word is very useful in determining the stack contents during debugging programs and learning FORTH. / nl n2 --- n3 "divide" ARITHMETIC Divides n1 by n2 and leave the quotient n3. n3 is rounded toward zero. The remainder is lost. /MOD nl n2 --- n3 n4 "di vide-mod" ARITHMETIC Divides n1 by n2 and leaves the quotient n3 and remainder n4. n3 has the same sign as nl. --- ~ NUMERIC "zero" The number zero is placed on top of the stack. ~< n --- flag "zero-less" COMPARISON Leaves a true flag (1) if the number is less than zero (negative), otherwise leaves a false flag (r/J) • The number is lost. n --- flag "zero-equals" Leaves a true flag (1) if the number is equal to zero, otherwise leaves a false flag (~). The number is lost. A-8 COMPARISON WORD i'BRANCH STACK NOT A TION/DEFINITION flag --"zero-branch" GROUP ATTR PRIMITIVE C The run-time procedure to conditionally branch. If the flag is false (zero), the following in-line parameter is added to the interpretive pointer to branch ahead or back. Compiled by IF , UNTIL , and WHILE. 1 --- 1 NUMERIC "one" The number one is placed on top of the stack. 1+ n --- n+1 ARITHMETIC "one-plus" Increments n by one according to the operation of +. 1- n --- n-1 ARITHMETIC "one-minussv Decrements n by one according to the operation of -. 2 --- 2 NUMERIC "two" The number two is placed on top of the stack. 2+ n --- n+2 ARITHMETIC "two-plus" Increments n by two according to the operation of +. 2- n --- n-2 ARITHMETIC "two-minus" Decrements n by two, according to the operation of -. 2DROP d STACK or nl n2 "two-drop" Drops the top double number on the stack. A-9 WORD STACK NOTA nON/DEFINITION GROUP ATTR 2DUP d---dd STACK or n1 n2 --- n1 n2 n1 n2 "two-dup" Duplicates the top double number on the stack. 3 --- 3 !'three" NUMERIC The number three is placed on top of the stack. . DEFINING E DEFINING I "colon" A defining word used in the form: : Selects the CONTEXT vocabulary to be identical to CURRENT. Creates a dictionary entry for name in CURRENT , and sets the compile mode. Words thus defined are called 'colon-definitions'. The compilation addresses of subsequent words from the input stream which are not immediate words are stored into the dictionary to be executed when is later executed. IMMEDIATE words are executed as encountered. If a word is not found after a search of the CONTEXT and FORTH vocabularies conversion and compilation of a literal number is attempted, with regard to the current BASE ; that failing, an error condition exists. "semi -colon" Terminates a colon-definition and stops further compilation. If compiling from an external source and the input stream is exhausted before encountering ; an error condition exists. A-IO WORD STACK NOTATION/DEFINITION ;CODE GROUP ATTR DEFINING I semi-colon-code" II Used in the form: : • • ;CODE END-CODE Stops compilation and terminates a new defining word name by compiling (;CODE). The assembly code is. put into place by putting bytes on the stack and using C, and , to emplace the opcodes in line. Example: 01 C, 02 C, n, , When is later executed in the form: To define the new , the code field address of will contain the address of the code sequence following the ;CODE in . Execution of any will cause this machine code sequence to be executed. ;S COMPILER "semi-colon-S" Stops interpretation of an input stream. ;S is also the run-time word compiled at the end of a colon-definition which returns execution to the calling procedure. n1 n2 --- flag < COMPARISON "less-than" Leaves a true flag (1) if n1 is less than n2; otherwise leaves a false flag (0). /I specifies the conversion of a double-precision number into an ASCII character string stored in right-to-Ieft order, producing text at PAD • A-ll WORD ST ACK NOT A TION/DEFINITION < BUILDS DOES> Each time is executed, in the form: Uses < BUILDS to create a dictionary entry for with a call to the DOES> part for . When nnnn is later executed, it has the address of its parameter area on the stack and executes the words after DOES> in . allows run-time procedures to be written in high-level rather than in assembler code (as required by ;CODE ). > n1 n2 --- flag "greater-than" COMPARISON Leaves a true flag (1) if n1 is greater than n2; otherwise a false flag (0). >R n --- STACK "to-R" Removes a number from the computation stack and places it as the most accessible number on the return stack. Use should be balanced with R> in the same de finition. ? addr -"question-mark" STACK Displays the value contained at the address on the top of the stack in free format according to the current BASE. Uses the format of . ?COMP SECURITY "question comp" Issues error message if not compiling. A-12 WORD ST ACK NOTA nON/DEFINITION GROUP ATTR SECURITY ?CSP IIquestion c s p" Issues error message if stack position differs from value saved in CSP • ?DUP n1 ---- n1 (if zero) "1 --- n1 n1 Cnon-zero) STACK IIquestion-dup" Reproduces n1 only if it is non-zero. This is usually used to copy a value just before IF, to eliminate the need for an ELSE clause to drop it. ?ERROR f n SECURITY "question errorll Issues error message n if the Boolean flag is true. ?EXEC SECURITY "question exec" Issues an error message if not executing. ?PAIRS nl n2 --- SECURITY "question pairsll Issues error message 1119 (CONDITIONALS NOT PAIRED) if n1 does not equal n2. The message indicates that compiled conditionals do not match. ?STACK SECURITY "question stack" Issues error message 117 (FULL STACK) if the stack is out of bounds. ?TERMINAL --- flag "question terminallV INPUT/OUTPUT Tests the terminal keyboard for actuation of any key. Generates a Boolean value. A true flag (1) indicates actuation, whereas a false flag (~) indicates non-actuation. A-13 WORD @ STACK NOTATION/DEFINITION GROUP ATTR addr --- n "fetch" MEMORY Leaves the 16-bit contents of the address on top of the stack. ABORT SECURITY "abort" Clears the stacks and enters the execution state. Returns control to the active I/o port. ABS n --- u "absolute" ARITHMETIC Leaves the absolute value of n as u. AGAIN addr n --- (compile-time) "again" CONTROL Used in a colon-definition in the form: BEGIN ••. AGAIN At run-time, AGAIN forces execution to return to the corresponding BEGIN. There is no effect on the stack. Execution cannot leave this loop (unless R> DROP is executed one level below). At compile-time, AGAIN compiles BRANCH with an offset from HERE to addr. n is used for compile-time error checking. ALLOT n --- COMPILER "allot" Adds the signed number to the dictionary pointer DP May be used to reserve dictionary space or re-origin memory. n is the number of bytes. AND n1 n2 --- n3 "and" Leaves the bitwise logical AND of nl and n2 as n3. A-14 ARITHMETIC WORD STACK NOTATION/DEFINITION BASE --- addr ''base'' GROUP ATTR NUMERIC U Leaves the address of the variable containing the current number base used for input and output conversion. The range of BASE is 2 through 70. BEGIN --- addr n (compile-time) "begin" CONTROL Occurs in a colon-definition in form: BEGIN BEGIN BEGIN Flag UNTIL AGAIN flag WHILE ••• REPEAT At run-time, BEGIN marks the start of a word sequence for repetitive execution. A BEGIN-UNTIL loop will be repeated until flag is true. A BEGIN-WHILE-REPEAT loop will be repeated until flag is false. The words after UNTIL or REPEAT will be executed when either loope is finished. flag is always dropped after being tested. The BEGIN-AGAIN loop executes indefinitely. At compile-time, BEGIN leaves its return address and n for compiler error checking. BL --- char INPUT/OUTPUT ''blank'' A constant that leaves the ASCII character value for "blank", i.e. Hex 20. BLANKS addr n --''blanks'' MEMORY Fills an area of memory beginning at addr with the ASCII value for "blank", the number of bytes specified by count n will be blanked. BU< --- addr MASS U "b-I-k" Leaves the address of a user variable containing the number of the mass storage block being interpreted as the input stream. If the content is zero, the input stream is taken from the terminal. This variable is used internally and is included so that later mass storage words can be added. A-I5 STACK NOTATION/DEFINITION WORD BRANCH GROUP ATTR CONTROL "branch" The run-time procedure to unconditionally branch. An in-line offset is added to the interpretive pointer IP to branch ahead or back. BRANCH is compiled by ELSE , AGAIN , and REPEAT. C! n addr --lie-store" MEMORY Stores the least significant 8-bits of n into the byte at the address. C, n --- DICTIONARY "c-comma" Stores the least significant 8-bits of n into the next available dictionary byte, advancing the dictionary pointer. C/L --- n INPUT/OUTPUT "characters/line" Leaves the number of characters (default value per input line. = 8~) C@] addr --- byte "c-fetch" MEMORY Leaves the 8-bit contents of the byte at the address on the top of the stack in the low order byte. The high order byte is zero. CFA pfa --- efa MISC "c-f-a" Converts the parameter field address (pfa) of a definition to its code field address (cfa). CUT --- b "c-lit" Compiled within system object code to indicate that the next byte is a single character literal (i.e. in range 0-255). Used only in system code (not by application program, i.e. user). Application programs use LITERAL , which uses CLIT or LIT as appropriate. A-16 STACK WORD STACK NOTATION/DEFINITION addrl addr2 n "c-move" CMOVE GROUP ATTR MEMORY Moves n bytes from memory area beginning at address addrl to memory area starting at addr2. The contents of addrl is moved first proceeding toward high memory. If n is zero or negative, nothing is moved. COLD MONITOR "cold" The cold start procedure to adjust the dictionary pointer to the minimum standard and restart via ABOR T. May be called from the terminal to remove application programs and restart. Performs the same functions as entering controlFORTH by a reset or power on sequence. COMPILE COMPILER "compile" When the word containing COMPILE executes, the compilation address of the next non-immediate word following COMPILE is copied (compiled) into the dictionary. This allows specific compilation situations to be handled in addition to simply compiling an execution address (which the interpreter already does). CONSTANT n --- (compile-time) -- n (run-time) "constant" DEFINING A defining word used in the form: n CONSTANT To create a dictionary entry for , leaving n in its parameter field. When is later executed, it will push the value of n to the stack. CONTEXT --- addr context" DICTIONARY Il Leaves the address of a user variable pointing to the vocabulary in which dictionary searches are made, during interpretation of the input stream. A-17 WORD STACK NOTATION/DEFINITION GROUP ATTR COUNT addr --- addr+1 n "count" FORMAT Leaves the addr+1 and the character count n of text beginning at ad dr. The first byte at addr must contain the character count n. The actual text starts with the second byte. The range of n is 0-255. Typically COUNT is followed by TYPE. CR INPUT/OUTPUT "carriage-return" Transmits a carriage return (CR) and line feed (LF) to the active output device. CREATE DICTIONARY "create" A defining word used in the form: CREATE Creates a dictionary entry for without allocating any parameter field memory. When is subsequently executed, the address of the first byte of 's parameter field is left on the stack. The code field contains the address of the word's parameter field. The new word is created in the CURRENT vocabulary. CSP SECURITY --- addr U "c-s-p" Leaves the address of a user variable temporarily storing the check stack pointer (CSP) position, for compilation error checking. CURRENT DICTIONARY --- addr "current" Leaves the address of a user variable pointing to the vocabulary into which new word definitions are to be entered. D+ dl d2 d3 lid-plus" Adds double precision numbers dl and d2 and leaves the double precision number sum d3. A-18 ARITHMETIC WORD D+- STACK NOTATION/DEFINITION n dl --- d2 GROUP ATTR ARITHMETIC "d-plus" Applies the sign of n to the double precision number dl and leaves it as double precision number d2. D. d --lid-dot" FORMAT Displays a signed double-precision number from a 32-bit two's complement value. The high-order 16-bits are most access able on the stack. Conversion is performed according to the current BASE. A blank follows. DoR d n -- FORMAT "d-dot-r" Displays a signed double-precision number d right aligned in a field n characters wide. No blank follows. DABS d --- ud "d-absll ARITHMETIC Leaves the absolute value ud of a double number. NUMERIC DECIMAL "decimal" Sets the numeric conversion BASE to decimal (base l~) for input-output. VOCABULARY DEFINITIONS "definitions" Used in the form: cccc DEFINITIONS Sets CURRENT to the CONTEXT vocabulary so that subsequent definitions will be created in the vocabulary previously selected at CONTEXT. In the example, executing vocabulary name cccc made it the CONTEXT vocabulary and executing DEFINITIONS made both specify vocabulary cccc • A-19 WORD DIGIT STACK NOTATION/DEFINITION n2 tf (valid conversion) ff {invalid conversion} "digit" char n1 char n1 GROUP ATTR NUMERIC Converts the ASCII character (using BASE n1) to its binary equivalent n2, accompanied by a true flag (1). If the conversion is invalid, leaves only a false flag (~). DLITERAL d (executing) (compiling) "d-literal" d d COMPILER If compiling, compiles a stack double number into a literal. Later execution of the definition containing the literal will push it to the stack. If executing, the number will remain on the stack. d1 d1 "d-negate" DNEGATE ARITHMETIC Leaves the two's complement of a double precision number. DO n1 n2 --- (run-time) addr n --- (compile-time) Occurs in a colon-definition in form: DO DO LOOP +LOOP At run-time, DO begins a sequence with repetitive execution controlled by a loop limit n1 and an index with initial value n2. DO removes these from the stack. Upon reaching LOOP the index is incremented by one. At the +LOOP the index is modified by a positive or negative value. Until the new index equals or exceeds the limit, execution loops back to just after DO ; otherwise the loop parameters are discarded and execution continues ahead. Both n1 and n2 are determine at run-time and may be the result of other operations. Loops may be nested. Within a loop I will copy the current value of the index to the stack. See I , LOOP , +LOOP , LEAVE • At compile-time within the colon-definition, DO compiles (DO) and leaves the following addr and n for later error checking. CONTROL WORD STACK NOT ATION/DEFINITION GROUP ATTR DEFINING DOES> "does" Defines the run-time action within a high-level defining word. Used in the form: : • •• (BUILDS DOES> ••• ; and the . Marks the termination of the defining part of the defining word and begins the definition of the run-time action for words that will later be defined by . DOES> alters the code field and first parameter of the new word to execute the sequence of compiled word addresses following DOES>. Used in combination with part begins with the address of the first parameter of the new word on the stack. Upon execution of the sequence of words between DOES> and ; will be executed, with the address of 's parameter field on the stack. This allows interpretation using this area or its contents. Typical uses include a FORTH assembler, multidimensional arrays, and compiler generation. DP --- addr "d-p" COMPILER U Leaves the address of user variable, the dictionary pointer, which points to address the next free memory address above the dictionary. The value may be read by HERE and altered by ALLOT. DPL --- addr "d-p-l" FORMAT U Leaves the address of user variable containing the number of digits to the right of the decimal on double integer input. It may also be used to hold the output column location of a decimal point, in user generated formatting. The default value on single number input is -1. A-21 WORD STACK NOTATION/DEFINITION DROP n GROUP ATTR STACK --- "drop" Drops the number on top of the stack from the stack. DUMP INPUT/OUTPUT addr n --"dump" Displays the contents of n memory locations beginning at addr. Both addresses and contents are shown in the current numeric base. DUP n --- n "dup" STACK n Duplicates the value on the stack. ELSE addr1 n1 --- addr2 n2 (compiling) "else" CONTROL I Occurs within a colon-definition in the form: IF ••• ELSE ••• THEN At run-time, ELSE executes after the true part following IF. ELSE forces execution to skip over the following false part and resumes execution after the THEN. It has no stack effect. At compile-time, ELSE emplaces BRANCH reserving a branch offset, leaves the address addr2 and n2 for error testing. ELSE also resolves the pending forward branch from IF by calculating the offset from addrl to HERE and storing at addr 1. See IF and THEN • EMIT char --"emit" Transmits an ASCII character to the active output device. See KEY • A-22 INPUT/OUTPUT WORD ENCLOSE STACK NOTATION/DEFINITION addr char addr n1 "enclose" n2 n3 GROUP ATTR PRIMITIVE The text scanning primitive used by WORD. From the text address addr and an ASCII delimiting character, is determined the byte offset to the first non-delimiter character nl, the offset to the first delimiter after the text n2, and the offset to the first character not included n3. This procedure will not process past an ASCII 'null', treating it as an unconditional delimiter. ERASE addr n "erase" MEMORY Clears a region of memory to zero from addr over n addresses. ERROR line in blk SECURITY "error" Executes error notification and restart of system. WARNING is first examined. If WARNING = 1, the text of line n, relative to screen 4 of drive VJ is printed. This line number may be positive or negative, and beyond just screen 4. If WARNING = ~, n is just printed as a message number (non-disk installation). If WARNING = -1, the definition (ABORT) is executed, which executes the system ABORT. The user may cautiously modify this execution by altering (ABORT) • ControlFOR TH saves the contents of IN and BLK to assist in determining the location of the error. Final action is execution of QUIT • EXECUTE addr "execute" COMPILER Executes the definition whose code field address is on the stack. The code field address is also called the compilation address. EXPECT addr count "expect" INPUT/OUTPUT Transfers characters from the terminal beginning at addr, upwards until a "return" or the count of n characters has been received. Takes no action for n = zero or less. One or more nulls are added at the end of the text. A-23 WORD FENCE STACK NOTATION/DEFINITION --- addr GROUP ATTR SECURITY U "fence" Leaves the address of a user variable containing an address below which FORGEtting is trapped. To forget below this point the user must alter the contents of FENCE • FORGET DICTIONARY "forget" Executes in the form: FORGET Delete from the dictionary (which is in the CURRENT vocabulary) and all words added to the dictionary after , regardless of their vocabulary. An error message will occur if the CURRENT and CONTEXT vocabularies are not currently the same. Failure to fine in CURRENT or FORTH is an error condition. VOCABULARY FORTH "forth·' The name of the primary vocabulary. Execution makes FORTH the CONTEXT vocabulary. New definitions become a part of FORTH until a differing CURRENT vocabulary is established. User vocabularies conclude by "chaining" to FOR TH , so it should be considered that FORTH is 'contained' within each user's vocabulary. HERE --- addr DICTIONARY "here" Leaves the address of the next available dictionary location. HEX NUMERIC "hex" Sets the numeric conversion BASE to sixteen (hexadecimal). A-24 WORD STACK NOTATION/DEFINITION GROUP ATTR --- addr "hold" FORMAT HLD Leaves the address of user variable which holds the address of the latest character of text during numeric output conversion. HOLD FORMAT char --"hold" Used between to insert an ASCII character into a pictured numeric output string. I --- CONTROL n "i" Used within a DO-LOOP to copy the loop index from the return stack to the stack. ID. INPUT/OUTPUT nfa --lIi-d-dot" Print a definition's name from its name field address. See NF A • flag --- (run-time) addr n (compile) "if" IF CONTROL Used in a colon-definition in form: IF IF THEN ELSE ••• THEN At run-time, IF selects execution based on a Boolean flag. If flag is true, the words following IF are executed and the words following ELSE are skipped. The ELSE part is optional. If flag is false, the words between IF and ELSE , or between IF and THEN (when no ELSE is used), are skipped. IF -ELSE-THEN conditionals may be nested. At compile-time, IF compiles ~RANCH and reserves space for an offset at addr. addr and n are used later for resolution of the offset and error testing. A-25 WORD STACK NOTATION/DEFINITION GROUP ATTR COMPILER IMMEDIATE "immediate" Marks the most recently made dictionary entry as a word which will be executed when encountered rather than being compiled. IN --- addr "in" INPUT/OUTPUT Leaves the address of user variable containing the byte offset within the current input text buffer (terminal or disk) from which the next text will be accepted. WORD uses and moves the value of IN • COMPILER INTERPRET "interpret" The outer text interpreter which sequentially executes or compiles text from the input stream (terminal or mass storage) depending on STATE • If the word name cannot be found after a search of CONTEXT and then CURRENT it is converted to a number according to the current BASE • That also failing, an error message echoing the with a 11?11 will be given. Text input will be taken according to the convention for WORD. If a decimal point is found as part of a number, a double number value will be left. The decimal point has no other purpose than to force this action. See NUMBER • KEY --- char INPUT/OUTPUT "key" Leaves the ASCII value of the next avaiable character from the active input device. LATEST --- addr "latest" Leave the name field address of the top most word in the CURRENT vocabulary. A-26 COMPILER U GROUP ATTR STACK NOTATION/DEFINITION WORD CONTROL LEAVE "leave" Forces termination of a DO-LOOP at the next opportunity by setting the loop limit equal to the current value of the index. The index itself remains unchanged, and execution proceeds normally until LOOP or +LOOP is encountered. LFA pfa DICTIONARY --- fa "f-a" Converts the parameter field address (pfa) of a dictionary definition to its link field address (fa). LIMIT --- MISC n Leaves the highest address plus one available in the data (or mass storage) buffer. Usually this is the highest contiguous system memory. LIT --- COMPILER n lllit" Within a colon-definition, LIT is automatically compiled before each 16-bit literal number encountered in input text.· Later execution of LIT causes the contents of the next dictionary address to be pushed to the stack. LITERAL n COMPILER --- (compiling) "literal" If compiling, then compile the stack value n as a 16-bit literal, which when later executed will leave n on the stack. This definition is immediate so that it will execute during a colon definition. The intended use is: : xxx [calculation] LITERAL ; Compilation is suspended for the compile time calculation of a vallie. Compilation is then resumed and LITERAL compiles this value into the definition. A-27 WORD LOOP STACK NOTATION/DEFINITION addr n --- (compiling) "loop" GROUP ATTR CONTROL I Occurs in a colon-definition in form: DO LOOP At run-time, LOOP selectively controls branching back to the corresponding DO based on the loop index and limit. The loop index is incremented by one and compared to the limit. The branch back to DO occurs until the index equals or exceeds the limit; at that time, the parameters are discarded and execution continues ahead. At compile-time, LOOP compiles (LOOP) and uses addr to calculate an offset to DO. n is used for error testing. M* nl ARITHMETIC n2 d "m-times" A mixed magnitude math operation which leaves the double number signed product of two signed number. M/ d nl --- n2 "m-divide" n3 ARITHMETIC A mixed magnitude math operator which leaves the signed remainder n2 and signed quotient n3, from a double number dividend d and divisor nl. The remainder takes its sign from the dividend. M/MOD udl u3 ud4 u2 "m-di vide-mod" ARITHMETIC An unsigned mixed magnitude math operation which leaves a double quotient ud4 and remainder u3, from a double dividend udl and single divisor u2. MAX nl n2 "max" max Leaves the greater of two numbers. A-28 ARITHMETIC WORD STACK NOT ATION/DEFINITION MESSAGE n GROUP ATTR SECURITY --- "message" If WARNING is positive, executes the word whose CF A is in UWARN. n may be positive or negative. If WARNING is zero, the message will simply be displayed as a number (no mass storage). MIN n1 n2 "min" n3 ARITHMETIC Leaves the smaller number n3 of two numbers, n1 and n2. MOD n1 n2 "mmP' nJ ARITHMETIC Leaves the remainder n3 of n1 divided by n2, with the same sign as nl. NEGATE n --- ARITHMETIC -n "negate" Leaves the two's complement of a number, i.e. the difference of tl less n. NFA pfa --- nfa "n-f-a" DICTIONARY Converts the parameter field address (pfa) of a definition to its name field address (nfa). NOT flag "not" COMPARISON Leaves a true flag (1) if the number is equal to zero, otherwise leaves a false flag. Same as ~ = • NUMBER addr --- d FORMAT "number" Converts a character string left at addr with a preceeding count, to a signed double precision number, using the current number BASE. If a decimal point is encountered in the text, its position will be given in DPL , but no other effect occurs. If numeric conversion is not possible, an error message will be given. A-29 WORD STACK NOT A TION/DEFINITION nl OR n2 "or" n3 GROUP ATTR ARITHMETIC Leaves the bit-wise logical or of two 16-bit values. OVER nl n2 nl "over" n2 nl STACK Copies the second stack value, placing it as the new top of stack. PAD addr DICTIONARY Leaves the address of a scratch area used to hold character strings for intermediate processing. The maximum capacity is 64 characters. PFA nfa pfa DICTIONARY "p-f-a" Converts the name field address (nfa) of a dictionary definition to its parameter field address (pfa). PICK n --- nth STACK "pick" Returns the contents of the nth stack value, not counting n itself. An error conditions results for n less than one. 2 PICK is equivalent to OVER • QUERY INPUT/OUTPUT "query" Accepts input of up to 8~ characters of text, (or until a 'return') from the keyboard into the terminal input buffer (TIS). WORD may be used to accept text from this buffer as the input stream, by setting IN and BLK to zero. QUIT MISC IIquit" Clears the return stack, stops compilation, and returns control to the entire input. No message is given. A-30 STACK NOTATION/DEFINITION WORD --- R@ GROUP ATTR STACK n "r-fetch" Copies the top of the return stack to the computation stack. R> --- STACK n "r-from" Removes the top value from the return stack and leaves it on the computation stack. See >R and R@ • PRIMITIVE --- addr "r-zero" U Leaves the address of user variable containing the initial value of the return stack pointer. See RP! • REPEAT addr n --- (compiling) "repeat" CONTROL Used within a colon-definition in the form: BEGIN ••• WHILE •• • REPEAT At run-time, REPEAT forces an unconditional branch back to just after the corresponding BEGIN. At compile-time, REPEAT compiles BRANCH and the offset from HERE to addr. n is used for error testing. ROT n1 n2 n3 --- n2 "rote" n3 n1 STACK Rotates the top three values on the stack, bringing the third to the top. PRIMITIVE RP! "r-p-store" Initializes the return stack pointer from user variable R~ • A-31 WORD STACK NOT A TION/DEFINTION addr RP@ GROUP ATTR STACK "r-p-fetch" Leaves the address of a variable containing the return stack pointer. S->D n ARITHMETIC d "s-to-d" Extends the sign of single number n to form double number d. addr PRIMITIVE "s-zero" Leaves the address user variable that contains the initial value for the parameter stack pointer. See SP! . SCR addr MASS "s-c-r" Leaves the address of user variable containing the screen number most recently referenced. SIGN n d "sign" d FORMAT Inserts the ASCII "_" (minus sign) into the pictured numeric output string if n is negative. n is discarded, but double number d is maintained. Must be used between . SMUDGE DICTIONARY "smudge" Used during word definition to toggle the "smudge bit" in a definitions name field. This prevents an uncompleted definition from being found during dictionary searches, until compiling is completed without error. SP! STACK IIs-p-store" Initializes the stack pointer from S~ • A-32 WORD STACK NOT A nON/DEFINITION GROUP ATTR addr "s-p-fetch" STACK SP@ Returns the address of the top of the stack as it was before SP@ was executed. SPACE INPUT/OUTPUT "spaces" Transmits an ASCII blank to the active output device. SPACES n "spaces" INPUT/OUTPUT Transmit n ASCII blanks to the active output device. STATE COMPILER --- addr "stateR; U Leaves the address of user variable containing the compilation state. A non-zero value indicates compilation. SWAP n1 n2 --- n2 STACK n1 "swap" Exchanges the top two values on the stack. TASK DICTIONARY "task" A no-operation word which can mark the boundary between applications. By forgetting TASK and re-compiling, an application can be discarded in its entirety. Its definition is : TASK; • THEN CONTROL Used within a colon-definition, in the form: IF IF ELSE THEN THEN or THEN is the point where execution resumes after ELSE or IF (when no ELSE is present). A-33 WORD STACK NOTATION/DEFINITION TIB GROUP ATTR INPUT/OUTPUT --- addr "t-i-bll U Leaves the address of user variable containing the starting address of the terminal input buffer. TOGGLE MEMORY addr b --"toggle" Complements the contents of addr by the 8-bit pattern byte. TYPE INPUT/OUTPUT addr n --"type" Transmits n characters beginning at addr to the active output device. No action takes place for n less than one. unl un2 --"u-times" ud ARITHMETIC Performs and unsigned multiplication of unl by un2, leaving the unsigned double number product of two unsigned numbers. U/ ud --u2 "u-divide" III u3 ARITHMETIC Performs the unsigned division of double number ud by ul, leaving the unsigned remainder u2 and unsigned quotient n3 from the unsigned double dividend ud and unsigned divisor ul. unl un2 --- flag "u-less-than" ARITHMETIC Leaves the flag representing the magnitude comparison of unl < un2 where unl and un2 are treated as l6-bit unsigned integers. UABORT --- addr "u-abort" Leaves the address of the user variable containing the code field address of the A80R T word. A-34 PARAMETER U WORD STACK NOTAnON/DEFINITION UC/L addr "u-characters-per-line" --- GROUP ATTR PARAMETER U PARAMETER U PARAMETER U PARAMETER U Leaves the address of the user variable containing the number of characters per line. --- UEMIT addr "u-emit" Leaves the address of the user variable containing the code field address of the EMIT output word. --- UKEY addr "u-key" Leaves the address of the user variable containing code filed address of the KEY input word. UUMIT --- addr "u-limitll Leaves the address of the user variable containing the last address plus one of the data (or mass storage) buffer. UNTIL addr flag --- (run-time) n --- (compile-time) "until" CONTROL Occurs within a colon-definition in the form: BEGIN • a a UNTIL At run-time, if flag is true, the loop is terminated. If flag is false, execution returns to the first word after BEGIN. BEGIN-UNTIL structures may be nested. At compile-time, UNTIL compiles 0i3RANCH and an offset from HERE to addr. n is used for error tests. A-35 WORD STACK NOTATION/DEFINITION USER GROUP ATTR DEFINING n "use...• A defining word used in the form: n USER Which creates a user variable . The parameter field of contains n as a fixed offset relative to the user pointer register UP for this user variable. When is later executed, it places the sum of its offset and the user area base address on the stack as the storage address of that particular variable. DEFINING VARIABLE n --- < name> (compute-time) <;name> --- (run-time) "variable" A defining word executed in the form: n VARIABLE to create a dictionary entry for and allot two bytes for storage in the parameter field. When is later executed, it will place the storage address on the stack. VOC-LIN< addr VOCABULARY "voc-link" Leaves the address of user variable containing the address of a field in the definition of the most recently created vocabulary. All vocabulary names are linked by these fields to allow control for FORGETting through multiple vocabularies. VOCABULARY VOCABULARY "vocabulary" A defining word used in the form: VOCABULARY to create (in the CURRENT vocabulary) a dictionary entry for , which specifies a new ordered list of word definitions. Subsequent exe- A-36 U STACK NOT ATION/DEFINITION WORD GROUP ATTR VOCABULARY (Cont.) cution of will make it the CONTEXT vocabulary. When becomes the CURRENT vocabulary (See DEFINITIONS), new definitions will be created in that list. New vocabularies 'chain' to FORTH. This is, when all of a dictionary search through a vocabulary is exhausted, FOR TH will be searched. VLIST VOCABULARY "v-list" Lists the names of the definitions in the CONTEXT vocabulary. Depression of any key will terminate the listing. WARNING addr "warning" SECURITY U Leaves the address of user variable containing a value controlling messages. If value = 1 mass storage is present and screen 4 of drive 0 is the base location for messages. If value = ~, no disk is present and messages will be presented by number. If value = -1, execute (ABORT) for a user specified procedure. See MESSAGE and ERROR. WHILE addrl nl flag --- (run-time) addrl nl addr2 n2 (compile-time) "while" CONTROL Occurs in a colon-definition in the form: BEGIN WHILE (tp) REPEAT At run-time, WHILE selects conditional execution based on Boolean flag. If flag is true (non-zero), WHILE continues execution of the true part through to REPEAT, which then branches back to BEGIN. If flag is false (zero), execution skips to just after REPEAT, exiting the structure. At compile-time, WHILE emplaces (~BRANCH) and leaves addr2 of the reserved offset. The stack values will be resolved by REPEAT. A-37 WORD STACK NOTATION/DEFINITION WIDTH --- addr "width" GROUP ATTR SECURITY U Leaves the address of user variable containing the maximum number of letters saved in the compilation of a definitions name. It must be 1 through 31, with a default value of 31. The name character count and its natural characters are saved, up to the value in WIDTH. The value may be changed at any time within the above limits. WORD char --- addr "word" COMPILER Receives characters from the input stream until the non-zero delimiting character in the stack is encountered or the input stream is exhausted, ignoring leading delimiters. The characters are stored as a packed string with the character count in the first character position. The actual delimiter encountered (char or null) is stored at the end of the text but not included in the count. If the input stream was exhausted as WORD is called, then a zero length will result. The address of the beginning of this packed string is left on the stack. XOR nl n2 "x-or" nJ ARITHMETIC Leaves the bitwise logical exclusive or of two values. [ COMPILER "left-bracket" Ends the compilation mode. The text from the input stream is subsequently executed. See] • COMPILER [COMPILE] "bracket compile" Used in a colon-definition in form: [COMPILE] Forces compilation of the following word. This allows compilation of an IMMEDIATE word when it would otherwise be executed. A-38 WORD ] STACK NOTATION/DEFINITION GROUP ATTR COMPILER "right bracket" Sets the compilation mode. The text from the input stream is subsequently compiled. See [ • A-39 A-40 APPENDIX B RECOMMENDED READING BRODIE, L. (FORTH, INC.). Jersey 07632. Starting FORTH. Prentice-Hall. Englewood Cliffs, New HARRIS, K. FORTH Extensibility, or How to Write a Compiler in 25 Words or Less. BYTE Magazine. August 1980. pp. 164-184. INTEL CORPORATION. INTEL CORPORATION. Clara, CA 95051. The 8086 Family User's Manual. Santa Clara, CA 95051. The 8086 Family User's Manual Numerics Supplement. JAMES, J. S. What is FORTH? 1980. pp. 100-126. A Tutorial Introduction. BYTE Magazine. Santa August B-1 8-2 APPENDIX C - FT-86C PIN ASSIGNMENTS Pin Assignment of Bus Signals on 796 Bus Board Connector PI PIN Power Supplies (COMPONENT SIDE) MNEMONIC DESCRIPTION 1 3 5 7 9 11 GND Signal GND +5 Vdc +5 Vdc +12 Vdc Reserved, Bussed Signal GND Bus Controls 13 15 17 19 21 23 BCLK* BPRN* BUSY* MRDC* IORC* XACK* Bus Clock Bus Priority In Bus Busy Memory Read Command I/o Read Command XFER Acknowledge Bus Controls and Address 25 27 29 31 33 LOCK* BHEN* CBRQ* CCLK* INTA* Lock Byte High Enable Common Bus Request Constant Clock Intr. Acknowledge Interrupts 35 37 39 41 INT6* INT4* INT2·k INTO* Parallel Interrupt Requests Address 43 45 47 49 51 53 55 57 ADRE* ADRC* ADRA* ADR8* ADR6* ADR4* ADR2* ADRO* 59 61 63 65 67 69 71 73 DATE* DATC* DATA* DAT8* DAT6* DAT4* DAT2* DATO* 75 77 79 81 83 85 GND Data Power Supplies GND +5V +5V +12V -12V +5V +5V GND Address Bus Data Bus Signal GND Reserved, Bussed -12 Vdc +5 Vdc +5 Vdc Signal GND All reserved pins are reserved for future use and should not be used if upwards compatibility is desired. C-l Pin Assignment of Bus Signals on 796 Bus Board Connector PI PIN C-2 (CIRCUIT SIDE) MNEMONIC DESCRIPTION 2 4 6 8 10 12 GND Signal GND +5 Vdc +5 Vdc +12 Vdc Reserved, Bussed Signal GND 14 16 18 20 22 24 INIT* BPRO* BREQ* MWTC* IOWC* INHl* Initialize Bus Priority Out Bus Request Memory Write Command I/O Write Command Inhibit 1 (Disable RAM) 26 28 30 32 34 INH2* ADI0* ADll* AD12* AD13* Inhibit 2 (Disable PROM or ROM) 36 38 40 42 INT7* INT5* INT3* INTl* Parallel Interrupt Request 44 46 48 50 52 54 56 58 ADRF* ADRD* ADRB* ADR9* ADR7* ADR5* ADR3* ADRl* 60 62 64 66 68 70 72 74 DATF* DATD* DATB* DAT9* DAT7* DAT5* DAT3* DATl* 76 78 80 82 84 86 GND GND +5V +5V +12V -12V +5V +5V GND Address Bus Address Bus Data Bus Signal GND Reserved, Bussed -12 Vdc +5 Vdc +5 Vdc Signal GND Jl CONNECTIONS PIN II SIGNAL PIN II SIGNAL 1 2 Ground 26 Spare Ground 27 Spare 3 Spare 28 Spare 4 External Reset 29 Spare 5 Spare 30 Spare 6 Spare 31 Spare 7 Spare 32 Spare 8 Spare 33 Transmit Data Channel "B" 9 Spare 34 Spare 10 Spare 35 Data Terminal Ready Channel "A" 11 Spare 36 Spare 12 Spare 37 Data Terminal Ready Channel "B" 13 Spare 38 Receive Data Channel "B" 14 Spare 39 Request to Send Channel "A" 15 Spare 40 Data Carrier Detect Channel "B" 16 Spare 41 Transmit Data Channel "A" 17 Spare 42 Clear to Send Channel "B" 18 Spare 43 Request to Send Channel "B" 19 Spare 44 Transmit Clock Channel "B" 20 Spare 45 Clear to Send Channel "A" 21 Spare 46 Receive Clock Channel "B" 22 Spare 47 Data Carrier Detect Channel "A" 23 Spare 48 Receive Data Channel "A" 24 Spare 49 Receive Clock Channel "A" 25 Spare 50 Transmit Clock Channel "A" C-3 Pin Assignment of Bus Signals en 796 Bus Board Connector P2 PIN Bussed Bussed Bussed Bussed Bussed Bussed Bussed Bussed Bussed Bussed Bussed Bussed Bussed Bussed Bussed Bussed Bussed Bussed Bussed Bussed 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 Reserved, Reserved, Reserved, Reserved, Reserved, Reserved, Reserved, Reserved, Reserved, 'Reserved, Reserved, Reserved, Reserved, Reserved, Reserved, Reserved, Reserved, Reserved, Reserved, Reserved, Not Nat Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not 42 44 46 48 50 52 54 Reserved, Reserved, Reserved, Reserved, Reserved, Reserved, Reserved, Bussed Bussed Bussed Bussed Bussed Bussed Bussed 56 58 60 C-4 (CIRCUIT SIDE) DESCRIPTION MNEMONIC ADR17* ADRI5* Address Bus Reserved, Bussed Jl CONNECTIONS PIN II SIGNAL PIN II SIGNAL 1 2 Ground 26 Spare Ground 27 Spare 3 Spare Spare 4 5 6 External Reset 28 29 Spare Spare 30 31 Spare 7 8 Spare 32 Spare Spare 33 Transmit Data Channel "B" 9 Spare 34 Spare 10 Spare 35 Data Terminal Ready Channel liB" 11 Spare 36 Spare 12 Spare 37 Data Terminal Ready Channel "A" 13 Spare 38 Receive Data Channel "B" 14 Spare 39 Request to Send Channel "A" 15 16 Spare Data Carrier Detect Channel "B" Spare 40 41 Transmit Data Channel "A" Spare Spare 17 18 Spare 42 Clear to Send Channel "B" Spare 43 Request to Send Channel liB" 19 Spare 44 Transmit Clock Channel "B" 20 Spare Clear to Send Channel "A" 21 Spare 45 56 22 Spare 47 Data Carrier Detect Channel "A" 23 Spare 48 Receive Data Channel "A" 24 25 Spare 49 50 Receive Clock Channel "A" Spare Receive Clock Channel "B" Transmit Clock Channel "A" C-5 C-6
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:09:24 10:45:06-08:00 Modify Date : 2013:09:24 10:46:26-07:00 Metadata Date : 2013:09:24 10:46:26-07:00 Producer : Adobe Acrobat 9.55 Paper Capture Plug-in Format : application/pdf Document ID : uuid:37ad5e6f-7eac-794d-bd26-8282ca35fbf9 Instance ID : uuid:9b7f98f7-a989-6846-9124-ac13c5c937b4 Page Layout : SinglePage Page Mode : UseOutlines Page Count : 92EXIF Metadata provided by EXIF.tools