Text preview for : 24820A(IE488).pdf part of Keithley 24820A(IE488) Keithley Misc 24820A(IE488).pdf
Back to : 24820A(IE488).pdf | Home
I E-488
Keithley MetraByte Corporation
*****
IE-488 Manual
Part Number: 24820
Revision A
Last Edit: June, 1984
Copyright @ 1984
KEITHLEY METAASYTEIASYSTIDAC
440 Myles Standish Boulevard
Taunton. Massachusetts 02780
Telephone 508/880-3000
FAX 508/880-0179
WARRANTY INFORMATION
All products manufactured by Keithley MetraByte are warranted against defective materials
and worksmanship for a period of one year from the date of delivery to the original
purchaser. Any product that is found to be defective wlthin the warranty period will. at the
option of Keithley MetraByte, be repaired or replaced. This warranty does not apply to
products damaged by improper use.
WARNING
Keithley MetraByte assumes no liability for damages consequent to the
u8e of this product. This product is not designed with components of a
level of reliability suitable for use in life support or crltical applications.
Information furnished by Keithley MetraEiyte is believed to be accurate and reliable.
However, the Keithley MetraByte Corporation assumes no responsibility for the use of such
information nor for any infringements of patents or other rights of third parties that may
result from its use. No license is granted by implication or otherwise under any patent
rights of Keithley MetraByte Corporation.
Keithley MetraByte/Asyst/DAC is also referred to here-in as Keith& MetmByte.
BasicTM is a trademark of Dartmouth College.
IBM@ is a registered trademark of International Business Machines Corporation.
PC, XT. AT, PS/2. and Micro Channel Architecture@ (MCA) are trademarks of
International Business Machines Corporation.
Microsoft@ is a registered trademark of Microsoft Corporation.
Turbo C@ is a registered trademark of Borland International.
TABLE OF CONTENTS
CHAPTER 1
1.0 IEEE-488 GENERAL DESCRIPTION 3
1.1 IEEE-488 SYSTEM BUS OPERATIONS 4
CHAPTER 2
2.0 HARDWAREINSTALLATION
CHAPTER 3
3.0 MODES OF OPERATION 9
3.1 IMAGE SPECIFIERS 11
3.2 IMAGE TERMINATORS 12
3.3 FLAG RETURN CODES 13
CHAPTER 4
4.0 USER COMMANDS 14
ABORT 15
CLEAR 16
CONFIG 17
ENTER 18
EOI 19
LOCAL 20
LOCKOUT 21
OUTPUT 22
PARPOL 23
PASCTL 24
PPCONF 25
PPUNCF 26
REMOTE 27
REQUEST 28
RXCTL 29
STATUS 30
SYSCON 31
TRIGGER 32
Page 1
TABLE OF CONTENTS
CHAPTER 5
5.0 8086/8088 ASSEMBLY LANGUAGE CALL FORMAT 33
5.1 ROM/RAM MEMORYMAP 35
5.2 STACK SEGMENT MAP 35
5.3 RETURN FLAG CODES 35
APPENDIX A DMA (Direct Memory Access) DATA TRANSFERS 36
APPENDIX B RUNNING COMPILED PROGRAMS 38
APPENDIX C MAIN IEEE488 (GPIB) BUS CONNECTIONS 40
APPENDIX D C88-01 CONNECTORCABLE 41
APPENDIX E INSTALLING IE-488 BOARD # 2 42
APPENDIX F EXAMPLE OF PROGRAMMING 43
REFERENCES 46
Page 2
GPIB IEEE488 MANUAL
1.0 GPIB IEEE488 INTERFACE CARD GENERAL DESCRIPTION
MetraByte's IE-488 General Interface (GPIB) I/O expansion board
for the IBM-PC computer is designed to plug directly into one I/O
slot inside the IBM-PC.The IE-488 has a built in 12 KbyteROM
interpreter which handles all the required initialization and
protocol functions required to use the IEEE488 Interface. No disk
files with driver routines are needed and the interpreter allows
all commands to be programmed in conventional high level IEEE488
command syntax e.g. REMOTE, ENTER etc. The IE-488 complies with
the IEEE November 1978 standard. The Interpreter is a relocatable
16 Kbyte block of code which may be entered via a BASIC CALL
statement or via DOS interrupt commands using assembly language
programming. All commands are string coded for ease of use. The
GPIB will handle up to 14 other talker/listener devices. The
controller maybe the IBM or any other of the 14 devices, any one
of which control may also be transferred to or from. The IE488
interpreter includes a group of subroutines which may be used to
to condition the data before data transfer when using assembly
language programs. The IE488 interpreter is capable of
implementing all twelve of the interface messages which are as
follows:-
1. The Data Message ---------------- The actual data information
sent from the talker device
to one or more listening
devices on the GPIB.
2. The Trigger Message ------------- This messaoe causes the
listener device(s) to
perform a device dependent
action when addressed.
3. TheClear Message --------------- This message causes the
addressed device or all the
devices on the GBIB to
return to their predefined
state.
4. The Remote Message -------------- Causes the addressed device
or devices to switch from
front panel to remote prog-
ram control.
5. The Local Message --------------- Causes the Remote Message
to be cleared from the
addressed device(s).
6. The Local Lockout Message ------- Prevents an operator from
manually returning to local
via front panel controls.
Page 3
GPIB IEEE488 MANUAL GENERAL
7. Clear Lockout (Local Message) --- Clears all devices on the
GPIB and sets in local mode.
8. Service Request Message - - - - - - - - - Any device may send this at
any time to request service
from the controller. This
is cleared by sending the
device's Status Byte Msg.
if the device no longer
requires service.
9. Status Byte Message ------------- A data byte that represents
the status of one device
on the bus. Bit 6 is set if
the device sent a Service
Request Message, and the
remaining bits are unique,
to the selected device.
10. The Status Bit Message --------- A byte which represents the
operational conditions of a
group of devices on the
bus. Each bit represents a
device on the bus. This is
typical response to a Para-
llel Poll operation.
11. The Pass Control Message ------- This allows transfer of the
bus management duties to
another device on the bus.
12. The Abort Message -------------- The System controller takes
unconditional control of
the bus from the active
controller. The message
terminates communications
with the bus and sends a
Clear All message.
********* IEEE488 GPIB FUNCTION CLASSIFICATION TABLE ************
T6 -- Basic Talker, Serial Poll, Unaddressed if MLA
TEO -- No extended talker function
II4 -- Basic Listener, Unaddressed if MTA
LEO -- No extended listener function
SHl -- Complete Source Handshake capability
AH1 -- Complete Acceptor Handshake capability
SRl -- Complete Service Request capability
PPl -- Parallel Poll Remote configuration capability
RLl -- Complete Remote / Local capability
DC1 -- Complete Device Clear capability
DTl -- Complete Device Trigger capability
Cl,C2,C3,C4,CS - CONTROLLER states
Page 4
GPIB IEEE488 MANUAL
1.1 IEEE488 SYSTEM BUS OPERATIONS
The sequence of actions for all data transfer commands on the bus
is as follows:
OUTPUT INPUT
1. IBM-PC Talk Address 1. Device Talk Address
2. UNLISTEN 2. UNLISTEN
3. Device Listen Address 3. IBM-PC Listen Address
After the transfer of data is complete the bus remains in the
last programmed condition.
SECONDARY COHMANDS
When communicating to/from devices which use secondary
addressing, the devices extended address is specified by
separating the primary address with a ".11 (period). The use of
extended addressing or secondary commands (maximum level of five)
complies with the 1978 IEEE488 standard. The bus sequence for
secondary or extended addressing is as follows:
1. IBM-PC Talk Address
2. Unlisten
3. Device Primary Address
4. Secondary Commands/Address
5. Data
NOT IN CONTROL ADDRESSING
When the IBM-PC is not the active controller on the bus, no other
devices may be addressed by the IBM-PC (all controller commands).
The IBM-PC may still transfer data as a talker/listener if setup
by the controller in charge. During an ENTER command the IBM-PC
waits until the active talker transmits the data if the IBM-PC
was addressed by the talker/listener. If the address codes are
not satisfied, ah9000 will be returned in the FLG% variable. This
allows the user to perform a program wait loop for maximum
efficiency in error handling. The OUTPUT statement waits until
the controller addresses the IBM-PC to talk and the ENTER command
waits until the controller addresses the IBM-PC to listen. The
IBM-PC may assume control if the controller in charge sends the
Take Control Message after it programs the IBM-PC as a Talker.
During a DMA transfer the IBM will wait until addressed before
data is transferred. A time out code is returned if the data is
not accepted by the talker/listener. The programmer may use this
return code for a time out loop also.
Page 5
GPIB IEEE488 MANUAL GENERAL
2.0 HARDWARE INSTALLATION
TheIE488 board requires one slot in the IBM-PC and 16
consecutive address locations in I/O space. The board also
requires a free 16 K-byte block of memory for the on board 12K-
byte ROM interpreter and 4K-byte Static Ram. Some I/O address
locations will be occupied by internal I/O and your other
peripheral cards, so to provide flexibility in avoiding conflict
with thesedevices the IE488 I/O address can be set by the Base
Address D.I.P. switch to be on any 16 bit boundary in the IBM -
PC decoded I/O space. This also makes possible the use of a
second IE488 interface board in the same computer. The I/O map
for IBM's standard Internal/External peripherals is listed on
page 2-23 of the "IBM Technical Reference Manual".
Usually, a good choice is to put the IE488 at base address
&H300 or &H310 (Decimal 768,784). (Note if you are using the IBM
prototype interface board, it uses the hex 300 -3lF address space
and would be in conflict).
There are three groups of switches on the IE488 interface card.
The Base Address switch is located on the top left corner and
marked BASE ADDRESS. The switch settings are listed as follows:
DEVICE I/O ADDRESS BITS
(msb) (lsb)
A9 AS A7 A6 A5 A4 Example shows
address bits 11 0 0 0 0 ADDRESS = &H300
switch pos. dn dn up up up up
A switch in the up (on) position corresponds to a ZERO (0) in the
address bit. Similarly, a ONE (1) is set in the address bit when
the switch is in the down (off) position. The example switch
setting above shows the address switch selecting &H300 (768
decimal) for the Base I/O Address.
NO CRECK IS MADE ON THE BASE ADDRESS WHEN INITIALIZED, BE SURE
THAT THE BASE ADDRESS SELECTED DOES NOT CONFLICT WITH ANY OTHER
PERIPHERALS.
The next switch is the MEMORY ADDRESS switch. This switch selects
the 16 Kbyte block of memory on an even 16 Kbyte boundary. The
addressing of the switches corresponds to the absolute20bit
address location in 16 Kbyte increments. The MEMORY ADDRESS
switch is located above the gold edge connector.
MEMORYADDRESS BIT s
(msb) (lsb)
A19 A18 Al7 Al6 Al5 Al4 Example for
address bits 1 1 0 0 0 0 MEMORY ADDRESS
Page 6
GPIB IEEE488 MANUAL INSTALLATION
switch settings dn dn up up up up = &HCOOOO
Refer to Section 2 of the IBM Technical Reference Manual for a
complete system memory map layout. The address chosen in the
above diagram is COO00 hex which is in the 192 Kbyte expansion
area after the display buffers. This is usually a clear area on
most IBM P.C.'s. Make a note of the MEMORY ADDRESS and the BASE
ADDRESS of the boards for initialization.
*****************et WARNING *******t*t****ttt*tt
NO CHECK IS MADE ON THE MEMORY ADDRESS, MAKE SURE THERE IS NO
OTHER MEMORY ASSIGNED TO THE SELECTED ADDRESS.
The next switch setting is for the interrupt vectors and DMA
channel selection. The IBM-PC has eight (8) interrupt vector
levels and two levels (0 & 1) are not accessible since they are
used by the operating system. The remaining 6 vectors are
available to the user. The IBM-PC interrupt vector map is as
shown below with the standard assignments of function made by
IBM.
VECTOR LEVEL
0 ---------------[TIMER - SYSTEM ONLY)
FUNCTION
---------------[KEYBOARD - SYSTEM ONLY)
1
-----------____ OR LPT2:
---------------COMM2: ADAPTER
USER
3"---------------
4 COMMl: ADAPTER
5 --------------- FIXED DISK OR LPT3:
6 --------------- FLOPPY DISKETTE DRIVES
7 --------------- PRINTER #l (LPTl:)
The INTERRUPT LEVEL & DMA selector switch is located in the
bottom center of the board. The switch is marked INT (1 2 4) and
is set as follows:-
INTERRUPT LEVEL SW(2)-1 SW(3)-2 SW(4)-4
0 UP up RESERVED
1 2 UP RESERVED
2 :: UP
3 2 dn UP
4 up dn
5 :: dn
6 a": dn
7 d": dn dn
The standard switch setting is vector level 5 and is shown in
bold print. It is the users responsibility to select an interrupt
level that does not conflict with the operating system hardware.
If the system is using a spooler for the printer then Interrupt
Level 7 will be in use. Note that the interrupts are only used
during DMAtransfers, therefore if DMA is notusedthe setting is
irrelevant.
Page 7
GPIB IEEE488 MANUAL INSTALLATION
The last switch setting is the selected DMA channel. The switch
is part of the bank of four switches used for the interrupts. The
switch is marked DMA (1 - 3), up is Channel 3, down is channel 1.
In IBM-PC's equipped with floppy disk(s) only, DMA level 3 should
be used. Hard disk equipped machines (XT models) force the user
to utilize DMA level 1. This is somewhat restrictive, since due
to the hardware design of the IBM-PC, DMA level 1 page register
is the same as DMA level 0 (memory refresh). For more information
see Appendix A.
The board is shipped with the following switch settings.
MEMORYADDRESS = COO00 hex
BASE ADDRESS = 300 hex
INTERRUPT # = 5
DMA CHANNEL = 3
Having made the switch settings, you can now install the IE-488
board. First remove the board from its protective eIectrostatic
packaging. It is a good precaution to discharge any electrostatic
charge you may have accumulated by touching the metal frame of
your computer (you should have it grounded for safety). Next, if
you have not already done so, TURNOPPTHEPOWERonyour computer
and take off the case (see IBM "Guide to Operations" for
reference). Remove a vacant back plate by undoing the screw at
the top and press the card guide supplied with the IE-488 board
on the opposite side of the case (some models may not require
this). Slip the IE-488 board in and secure the backplate. That
completes the hardware installation.
One more precaution concerning storage and handling of the
IE-488 interface board. MetraByte recommends that you retain the
special electrostatically shielded package and use it for
protective storage of the board if for any reason it is removed
from your computer.
Page 8
GPIB IEEE488 MANUAL COMMAND FORMAT
3.0 MODES OF OPERATION
In the interests of conciseness for the more experienced
programmer and user, this section has been written as a reference
and initially may be difficult to understand. If this is the
case, refer to Appendix F where a step by step real programming
example read together with this section provides an easier
introduction.
All modes of operation are determined by an ASCII
STRING in a command (COMMANDS or CMD$) referenced within a CALL
statement. The CALL statement format is:
XXX CALL IE488 ( COMMAND$, varf$I(%), FLAG%, BASADR% 1
where:
COWHANDS - is the COMMAND including device addresses or
secondary commands and [ image terminators 1. This
is always a STRINGandisdecodedbythe CommandLine
Interpreter in the IE-488 firmware (ROM). The
COMMAND is separated from the operands (devices etc.)
by one or more SPACES, any other delimiters will
cause a SYNTAX error in command line. The separator
for devices is always the comma "," andsecondary
address is always a period ".". The IMAGE string is
identified by brackets "[I". The Command Line
Interpreter is relatively tolerant of syntax error
identification and will send back the appropriate
error code to isolate the error. The format is:-
CMD$ = "COMMAND devl, dev2, . . . ..devn [image]"
The [image] specifier allows the user to specify the
variable field operations for the beginning and end
of the data transfer variable. The variable may be a
variable name, array identifier, numeric data value
or a string. The user must match the image to the
data type or an error will be generated in the data
transfer. No check is made in the match of the image
to the variable type, this is the responsibility of
the user. The [image] codings are explained in
section 3.1 (IMAGE SPECIFIERS).
varC$l(%) - isthe data variable OUTPUT/INPUT to be transferred
from/to. Datais transferred as specified by the
image terminator/specifier. If the image specifier
is not used the data is treated as an integer. The
data may be of String or Integer type.
FLAG% --- is the transfer status of the CALL statement. If an
error occurs FLAG% will contain a HEX number
representing the error condition. A set of error and
Page 9
GPIB IEEE488 MANUAL COMMANDFORMAT
transfer message codes are generated at the
completion of each CALL.
BASADR% -- is the address of the interface board being used.
BASADR% may be 0 or 1, or actual base address e.g. 768.
Page 10
GPIB IEEE488 MANUAL COMMANDFORMAT
3.1 IMAGE SPECIFIER
[S(p) (xl .m.zl - Input/Output the number of Bytes to/from the
variable string starting at position m and
ending at position z, with parity p (E=even,
O=odd, none). If m, z and p are omitted the
entire string will be output as in the string
variable$ as specified by the image terminator
(x) without parity. If no terminator is used
then the string will end with EOI.
[B(H/L) (x),m,zl- Input/Output the specified H/L number of Bytes
to or from the the specified integer variable
array starting at (m) array location and ending
at the (z) position. The data transferred will
not change the the other half of the 16 bit
integer, only the byte specified is changed on
an ENTER command. There is no change to the data
with the OUTPUT command. [BL#,2,101 will
transfer the low byte of position 2 thru
position 10 of the integer variable array. Note,
the number of bytes transferred is nine,
position two and ten are included. Transfer
termination is specified by the image
terminator. It is the user's responsibility to
insure that the array size and the type of array
are correct. No check is made on data types. The
values of m and z may be reversed which will
transfer data in the reverse order. If m and z
arethe same then only one word is transferred.
If mand z are omittedthenthe integer variable
is not considered an array and the variable is
transferred with or without an EOI depending on
the image terminator (x).
[M(x).m,sl - Input / Output the specified number of 16 bit
words to / from the specified integer variable
(array) starting with position (m) and ending
with position (2). The number of words
transferred is defined as [z - m + 13.
Termination is specified by the image
terminator. It is the user's responsibility to
insure that the array size and type of array are
correct. No check is made on data types. The
values of m and z may be reversed which will
transfer data in the reverse order. If m and z
are the same then only one word istransferred.
Ifm and s are omitted then the integer variable
is not considered an array and the variable is
transferredwith or without an EOI depending on
the image terminator (x).
Page 11
GPIB IEEE488 MANUAL COMMAND FORMAT
3.2 IMAGE TERMINATORS
%(t-1 The % image terminator cancels both the line
feed and EOI terminators during an OUTPUT command
execution. During an INPUT command the entry will
terminate when the array size or the input count
is reached (m + count = z) or EOI. The line feed
is entered as part of the array.
t(t) The # image terminator cancels the line feed
only. The data is terminated by an EOI during the
INPUT or OUTPUT command. The ENTER also
terminates if the last item in data list is
entered which sets the FLAG% variable with an
error code of &H0020.
+(t1 The + image terminator cancels the line feedand
EOI during an OUTPUT command only. The INPUT
command is in the default mode (INPUT terminates
with EOI or last entry). If carriage return
and line feed are part of the data being
transferred they will be sent as normal data.
(t) The transfer terminator t determines the type
of transfer the GPIB is to perform. The following
transfer codes are available. If this specifier
is not used the data transfer is under program
control.
D = Direct Memory Access (DMA) to the specified
array. The m and z specifiers must be used
with this type of transfer. Structure
programming must be used when this mode is
active. All variables must be assigned before
theCALLis executed and no new variables are
allowed to be introduced after the execution
of the CALL statement.See APPENDIX A for
details on DMA transfers.
Page 12
GPIB IEEE488 MANUAL COMMAND FORMAT
3.3 FLAG RETURN CODES
The following codes are returned in the FLAG% variable
upon completion of the CALL statement. The flag return codes are
grouped into 3 categories.
&HO000 = TRANSFERRED OK
&HO020 = NO INPUT EOI or LINE FEED
&HO030 = DEVICE TIME OUT
&HO040 = RESERVED
&HO050 = DMA CHANNEL BUSY
&HO060 = GPIB BUSY
&HO100 = HARDWAREFAILURE
&HO200 = TIME OUT ON DATA TRANSFER
&HO300 = DEVICE NOT ACTIVE CONTROLLER
&HO400 = IBM-PC ACTIVE CONTROLLER
&HO500 = SYSTEM NOT INITIALIZED
&HO600 = CONFIGURATION ERROR
&HlOOO UNDEFINED COMMAND
&HllOO SYNTAX ERROR IN COMMANDLINE
&H2000 UNDEFINED IMAGE
&H3000 DEVICE RANGE ERROR
&H3100 TOO MANY DEVICES
&H3200 TALKER/LISTENER CONFLICT
&H4000 COMMAND/DATA OUT OF RANGE
&HSOOO COMMANDREQUIRES DEVICE
&H6000 UNDEFINED DEVICE CODE
&H7000 INPUT ARRAY NOT INITIALIZED
&H9000 IBM MUST BE TALKER or LISTENER
Page 13
GPIB IEEE488 MANUAL USER COMMANDS
4.0 USER COMMANDS
The following user commands are available. The string
variable COHHAND$ is the same string format as described in the
IBM-PC BASIC manual. A typical command string would be as
follows. Please note that all commands must be assigned in string
form before using the CALL statement.
COMMAND$= "OUTPUT 03.13.20,05[WD#,2,201"
This command string would output integer words (16 bit) two thru
and including word 20 to device primary address 03 with secondary
addresses 13 and 20 and also to device primary address 05. The
data transfer uses the DMA (SEE APPENDIX A) mode for fast
access. The device codes must be in decimal within the range of
00 to 30. This allows the user a maximum of 31 device addresses
to choose from. However the maximum number of devices which may
physically be connected to the bus is 15.
The transfer of String data is limited to single element arrays
and must be initialized. The Maximum string size is 255 bytes as
defined in the IBM-PC Basic manual. The user may transfer a
string inside of an array such as VAR$(2,3), which would transfer
the string data contents of array element (2,3). An error code of
&H7000 will be returned in the FLAG% variable if the stringarray
element is not initialized.
EXAMPLES OF LEGAL STRING DATA TRANSFER:
xxx10 COMMANDS= "OUTPUT ll.Ol[$E+,9,22]"
xxx20 VAR$(2,8) ="THIS IS ARRAY ELEMENT 2,8"
xxx30 CALL IE488 (COMMANDS, VAR$(~,~), FLG%, BRD%)
This command will output the bytes "ARRAY ELEMENT" then return to
the user program.
xx100 VAR$(l) = "This is a single array element"
xx110 CALL IE488 (COMMANDS, VAR$(l), FLG%, BRD%)
This command will output the bytes ' single ar" then return to
the user program.
xx200 COMMANDS= "OUTPUT ll.Ol[$E,22,9]"
xx210 VAR$ = "THIS IS ALSO A SINGLE ARRAY TEST"
xx220 CALL IE488 (COMMANDS, VAR$, FLG%, BRD%)
This example will output the bytes "NIS A OSLA" i.e backwards,
then return to the user program.
Page 14
GPIB IEEE488 MANUAL USER COMMANDS
ABORT - Terminate the current command issued by the IBM. The
command executes an IFC and resets the IBM board
addressed. DMA and Interrupts are disabled. The
IBM-PC is assumed to be the main system controller
and unconditionally takes control of the bus and
remains the controller in charge until PASCTL
command is executedNo device is necessary.
COMMANDSFORMAT:
"ABORT"
EXAMPLE:
xxx10 CMD$ ="ABORT" 'command format
xxx20 DEF SEG = &HCOOO 'driver subroutine
xxx30 CALL 1~488 (CMD$, VAR%, FLG%, BRD%) 'execute command
xxx40 IF NOT FLG% THEN 100 'test for errors ?
xxx50 PRINT "ERROR *';HEx$(FLG%);" IN LINE 70"
xxx60 END
xx100 . . . . . . user program continues .........
Note: The VAR% is used as a dummy variable and no change occurs
to the contents of VAR%. This variable may be first declared
inside the CALL statement at execution for convenience.
Page 15
GPIB IEEE488 MANUAL USER COMMANDS
CLEAR - Clear or Reset the selected devices or all devices. If
no device is given the GPIB is cleared. The IBM PC
must be the active controller or an error message will
be generated.
COMMANDSFORMAT:
"CLEAR devl,dev2 , . . . . . . devN"
EXAMPLE:
xx200 CMDS = "CLEAR 10,12,14" 'command format
xx210 BRD% = 0 'board #
xx220 CALL IE488 (CMDS, VAR%, FLG%, BRD%) 'execute command
xx230 IF NOT FLG% THEN 300 'test for errors ?
xx240 PRINT "ERROR ";HEX$(FLG%);" IN LINE 220"
xx250 END
xx300 . . . . . . users program continues .......
Page 16
GPIB IEEE488 MANUAL USER COMMANDS
CONFIG - Configure the GPIB to the devices specified in the
command string. The GPIB will remain in this state
until reconfigured by issuing an ENTER or OUTPUT
command. The VAR% variable is not changed in this
command. If the TALK = devl is omitted the IBM-PC is
assumed to be the controller only. The user may enter
MTA to make the IBM-PC the talker or enter the actual
device number using the TALK variable name. The IBM-PC
may be addressed as a listener by using the name MLA
as the last device in the COMMAND string. The FLAG%
variable will contain the error code if any conflicts
occur.
COMMANDSFORMAT:
"CONPIG (TALK=devl /MTA,)LISTEN=devZ,dev3,...,(MLA)"
EXAMPLE:
Xx10 BRD% = 0
xx20 CMD$ = "CONFIG MTA,LISTEN = 10,12.34,5,7"
xx30 CALL IE488 (CMDS, VAR%, FLAG%, BRDB)
xx40 IF NOT FLAG% THEN 100
xx50 PRINT "ERROR ";HEX$(FLAG%);" IN LINE 30"
xx60 END
Xl00 . . . . . . . . program continues here if no errors ..........
The above program sets the IBM-PC as a talker and devices
10, 12.34, 5 and 7 as listeners. The MTA variable is internally
interpreted as the MAD set in the initialization of the GPIB
using the SYSCON command.
xx20 CMD$ = "CONFIG TALK=6,LISTEN=12,14,5,MLA"
This CONFIG command sets device address 6 as a talker and devices
12, 14, 5 and IBM-PC as listeners. The string MTA is internally
interpreted as MAD set in the initialization of the GPIB using
the SYSCON command.
Page 17
GPIB IEEE488 MANUAL USER COHHANDS
ENTER - Input GPIB data from selected talker to specified
string array. The string array must have been
previously dimensioned. The FLAG% will contain error
codes if an error occurs. The IBM - PC must have
been previously programmed as a listener.If the IBM -
PC is not the controller then the ENTER command will
return error code 9000H to inform the caller that the
IBM is not in the listen mode. The command may be
re-entered until the controller in charge programs
the IBM to listen. Only one device is allowed with
this command.
COMMANDSFORMAT:
"ENTER dev.secad [image]"
EXAMPLE:
xxx10 DVM$ = SPACES(25) 'Dimension array
xxx20 CMD$ = "ENTER 12[$,0,181" 'Command String
xxx30 CALL IE488 (CMD$, DVM$, FLG%, BRD%)
xxx40 IF NOT FLG% THEN 140 'test for errors ?
xxx50 PRINT "ERROR ";HEX$(FLG%);" IN LINE 30"
xxx60 END
xx140 . . . . . . . . user program continues ........
The above program will fill DVM$ array elements 0 to 18, If all
is successful the FLG% variable will contain 0. If an error
should occur the FLG% would be coded according to the error. The
data in DVM$ will be incomplete with error codes > = 100 hex.
DMA is ONLY allowed for WORD integer arrays less than 32767, (64
k bytes). See APPENDIX A for DMA DATA TRANSFERS.
Page 18
GPIB IEEE488 MANUAL USER COMMANDS
EOI - Sends a data byte on the selected device with EOI
asserted. The bus must have been programmed to talk
before the command is executed. The variable contains
the data to be transferred. It is the users
responsibility to insure the data and type match. If a
string variable is used the entire string is
transferred ending with an EOI. If Integer mode is
used only one transfer (byte) or two (word) will be
executed. The limit parameters are ignored. Only one
device is allowed. No device is generally required if
the Talker (IBM-PC) has been previously programmed to
talk bythecontroller incharge. If the IBM-PCis not
the controller in charge and not programmed as a
talker then an error code &h9000 will be returned
until the controller in charge programs the IBM-PC as
a talker before data is transferred.
COMMANDSFORMAT:
"EOI dev [image] n
EXAMPLE:
xx100 VAR$ = "THIS IS A STRING" 'define last byte to transfer
xx110 CMD$ = "EOI 12[$1" 'define command
xx120 CALL IE488 (CMDS, VAR$, FLG%, BRD%)
xx130 IF NOT FLG% THEN 200
xx140 PRINT "ERROR ";HEx$(FLG%);" IN LINE 120"
xx150 END
xx200 . . . . . . . . . continue users program ...........
This routine will transfer the STRING in the VAR$ variable and
issue an EOI command with the last byte of the STRING to signal
the receiver on the bus that the data transfer will end.
The image specifiers for the removal of the line feeds and
carriage returns are ignored during the command, no parity is
used.
Page 19
GPIB,IEEE488 MANUAL USER COMMANDS
LOCAL - Set selected device(s) to the local state. If no device
is specified then all devices on the bus are set to
local. The IBM-PC must be the active controller or an
error message will be generated.
COMMANDSFORMAT:
"LOCAL devl,dev2 ,......devN"
EXAMPLE:
xx100 CMD$ = "LOCAL 10,11,12,14" 'define command
xx120 CALL IE488 (CMD$, VAR%, FLG%, BRD%) 'execute command
xx130 IF NOT FLG% THEN 200 'test for errors
xx140 PRINT "ERROR ";HEX$(FLG%);" IN LINE 120"
xx150 END
xx200 . . . . . . . continue users program ........
The above program sets devices 10,11,12,14 to the local state and
returns to the user's program. The LOCKOUT command is very
similar in structure to the LOCAL command except the LOCKOUT does
not allow the user to manually select the device to local.
Page 20
GPIB IEEE488 MANUAL USER COMMANDS
LOCKOUT - Local Lockout the specified device. If no device is
given all devices on the bus will be set to local
lockout. The IBM-PC must be the active controller or
an error message will be generated. The devices cannot
be set to local except by the GPIB controller. The
FLG% variable contain the error code.
COMMANDSFORMAT:
"LOCKOUT devl,dev2 ,.....devN"
This command is the same as the LOCAL command except the user is
NOT allowed to manually select the device to local.
Page 21
GPIB IEEE488 MANUAL USER COMMANDS
OUTPUT - Output selected string to selected listener(s) on
GPIB. The variable will contain the data to be
transferred. The image specifier will contain the data
type and terminators. The FLAG% will contain the error
codes if an error occurs. Up to 14 devices may be
accessed in the list. If the IBM-PC is not the
controller in charge, the IBM-PC must be programmed by
the controller in charge before data is transferred.
COMMANDSFORMAT:
"OUTPUT devl.secad,dev2...[image]"
EXAMPLE:
xx100 VAR$ = "THIS IS A TEST" 'define bytes to transfer
xx110 CMD$ = "OUTPUT 12,11[$El" 'define command
xx120 CALL IE488 (CMD$, VAR$, FLG%, BRD%)
xx130 IF NOT FLG% THEN 200
Xx140 PRINT "ERROR '. ,HEX$(FLG%);" IN LINE 120" : END
'This command line will output the entire string "THIS IS A TEST"
'using even parity and ending with a EOI code to show the end of
'the string. The FLG% variable will have any error transfer codes
'if an error was detected during transfer.
xx200 . . . . . . . . . continue users program ...........
xx400 DIM MYDATA%(2,400) 'my integer data array
xx410 CMD$ = "OUTPUT 12,11[BL,0,1001" 'setup image
' output data in 2,0 from element 0 to 100 low byte only
xx420 CALL IE488 (CMD$, MYDATA%(2,0), FLG%, BRD%)
xx430IFNOT FLG% THEN 500
xx440 PRINT~~ERROR ";HEx$(FLG%);" IN 420" : END
. . . . . . continue users program.......
xx500 'setup for DMA transfer
xx510 CMD$ = "OUTPUT 12,10,15[WD,0,81921" 'DECIMAL ONLY
xx520 DIM DMAPTR%(2)
xx530 DMAPTR%(O) = DATASEGMENT% 'setup data segment
xx540 MDAPTR%(l) = DATAOFFSET% 'setup data offset
' transfer data in DMA mode
xx550 CALL IE488 (CMD$, DMAPTR%(O), FLG%, BRD% )
xx560 IF NOT FLG% THEN 600
xx570 PRINT "ERROR ";HEX$(FLG%) ;" IN LINE 550 ' : END
'If error code in DMA is not &H50 or 0 then issue an ABORT
command to clear interface device.
600 . . . . . . . . user program continues ......
Page 22
GPIB IEEE488 MANUAL USER COMMANDS
PARPOL - Reads the 8 Status Bit messages for the devices on the
GPIB which have been set for parallel poll
configuration. The VAR$ (string) will contain the 8
bit message. The IBM-PC must be the active controller
or an error will occur.
COMMANDSFORMAT:
"PARPOL"
PROGRAMMINGEXAMPLE:
100 VAR$ = CHR$(&HO) 'Parallel Poll return byte initialized
110 CMD$ = "PARPOL"
120 CALL IE488 (CMD$, VAR$, FLG%, BRD%)
130 IF NOT FLG% THEN 200
'if error, the flag is printed out.
140 PRINT "ERROR ";HEX$(FLG%);" IN LINE 120" : END
200 'process parallel poll return byte code in VAR$
..........
..........
This command responds as programmed in the parallel configuration
command. The VAR$ will contain the eight bit poll response. See
the Parallel Poll Configure command (PPCONF) for the details of
the bit pattern.
Page 23
GPIB IEEE488 MANUAL USER COHHANDS
PASCTL - The Active control of the GPIB is transferred to the
specified device address and the IBM-PC becomes the
standard listener/talker but not controller. The IBM -
PC must be the active controller or an error will
occur. The IBM-PC is not allowed to Talk until
programmed by the controller in charge.
COMMANDSFORMAT:
"PASCTL dev"
EXAMPLE:
100 CMD$ = "PASCTL 6"
110 CALL IEE488 (CMD$, X%, FLG%, BRD%)
120 IF NOT FLG% THEN 200
130 PRINT "ERROR ";HEX$(FLG%);" IN LINE 110" : END
xx200 . . . . . . . . . . . . . . . continue users program ..................
The IBM-PC is inactive at this point and no
controller commands are allowed. To receive control
back the command RXCTL must be used as follows.
xx300 CMD$ = "RXCTL" 'define command
xx310VAR%= 0 'set VAR$ to false
xx320 WHILE NOT VAR% 'control test loop
xx330 CALL IE488 (CMD$, VAR%, FLG%, BRD%) 'test for control
xx340 IF NOT FLG% THEN 360
~~350 PRINT "ERROR ";HEx$(FLG%);" IN LINE 330" : END
xx360 ..... user continues program ......
......
......
xx500 WEND 'Last test
xx510 . . . . . WHEN IBM IS IN CONTROL PROGRAMCONTINUES HERE . . . .
xxxx ......
Note: It is the responsibility of the controller in charge to
program the IBM-PC to the talk mode before the transfer of
control is executed.
Page 24
GPIB IEEE488 MANUAL USER COMMANDS
PPCONF - Sets up the desired parallel poll bus configuration
for the user. The VAR$ (string) contains the poll
sequence (00-FF). IBM-PC must be the active controller
or an error will occur.
COMMANDSFORMAT:
"PPCONP dev"
The PARALLEL POLL function provides a means of sending
one bit of status information if the controller is
requesting the response. Unlike SERIAL POLL, which is
initiated by the device, the parallel poll is
initiated by the controller in charge. There are two
methods to configure a device for parallel poll,
remote and local configurations. In remote
configuration (PPI), he controller uses the following
bit codes to configure the device addressed.
Were Pn = the device bit code 0 to 7 for PPRl to PPR8
and S is the Send of the Parallel Poll Response, S =
response. Adevice may be configured so that it never
responds to a parallel poll. PPD (&H70) is the
parallel poll disable command, which places the device
in the parallel poll idle state (PPIS). The value of
the individual status (IST) can be set by bit B4 in
the VAR$ byte.
B4 = 0 IST = Parallel Poll Flag
B4 = 1 IST = SRQS
EXAMPLE:
110 BRD% = 0
120 A$ = CHR$(&HA) 'parallel configure bit code for dev 14
130 CMD$ = "PPCONF 14"
140 CALL IE488 (CMD$, A$, FLG%, BRD%)
150 IF NOT FLG% THEN 170
160 PRINT "ERROR ";HEX$ (FLG~);~' IN LINE 140" : END
170 . . . . . . continue program ..........
In the local configuration (PP2), the specifications
are made from the device. Writing 0 11 U S P3 P2 Pl to
the VAR$ configures the controller for a Parallel Poll
Response-When U = 0, this command is the LPE (local
poll enable) local message. When U = 1, the TLC does
not respond to the poll. The TLC is configured in the
S bit. The PPRn will be sent true onlyifthe Parallel
Poll Flag (IST individual status local message)
matches this bit. During normal operation, The value
of VAR$ on entrywill set or clear PPF (IST if B4 = 0)
according to the device's need for service.
Page 25
GPIB IEEE488 MANUAL USER COMMANDS
PPUNCF - Resets the parallel poll type configuration of the
selected device. The IBM-PC must be the active
controller or an error will occur. The specified
device will not respond to a parallel poll command.
COMMANDSFORMAT:
"PPUNCF dev"
PROGRAMMINGEXAMPLE:
100 BRD% = 0
110 A$ = CHR$(LHA)
120 CMD$ = "PPUNCF 14"
130 CALL IE488 ( CMD$, A$, FLG%, BRD% )
140 IF NOT FLG% THEN 300
' error is processed here
150 PRINT "ERROR ";HEX$(FLG%);" IN LINE 130"
160 END
300 'program continues here if ok
310 .....................
...................
This routine will only disable device 14 to respond to a Parallel
Poll command. If no device code is used the entire bus is
disabled.
Page 26
GPIB IEEE488 MANUAL USER COMMANDS
REMOTE - Sets the selected devices or device on the GPIB to go
into the remote position. The IBM must be theactive
controller or an error will occur. If an erroroccurs
the FLAG% will contain the error code.
COMMANDSFORMAT:
"REMOTE devl,dev2,.......devN"
EXAMPLE:
xx100 VAR% = 0 'dummy variable not used
xx120 BRD% = 0 'define board number
xx130 CMD$ = "REMOTE 10,12,14" 'define command
xx140 CALL IE488 (CMD$, VARS, FLG%, BRD%)
xx150 IF NOT FLG% THEN 200
xx160 PRINT "ERROR ";HEX$(FLG%) i" IN LINE 140"
xx170 END
xx200 . . . . . . . . . continue users program ...........
This command is the counterpart to the LOCAL command. Devices
10,12,14 are set in the remote state and ready for a command
sequence. The error flag FLG% will contain any error codes if an
error was detected.
Page 27
GPIB IEEE488 UANUAL USER COMMANDS
REQUEST - The GPIB may request service from the active
controller on the bus by executing the "REQUEST n"
command. This command has two modes. the first when
'In" is omitted which may be executed any time to
monitor the status of the IBM interface board. The
VAR% (INTEGER) contains the status bits for the GPIB
board addressed, [Hi Byte I = on board hardware
registers, [Lo Byte] contains the IBM GPIB serial poll
register status byte. The second mode when n is any
number (O-31). This allows the user to set a serial
poll status word to the controller in charge. The Low
byte of the variable will contain the STATUS byte to
be transferred to the controller.
msb GPIB ON BOARD SERIAL POLL REGISTER lsb
__-_______------_