Basic telecommunications access method
Basic Telecommunications Access Method (BTAM) was a low-level programming interface specified by IBM for use on the IBM System/360 for start-stop and binary synchronous telecommunications terminals. Later, IBM specified higher-level interfaces QTAM and TCAM.
BTAM requires the application program or transaction processing system to handle almost every detail of the protocol. This is harder than using a higher-layer protocol, but it permits interfacing to non-standard devices in non-standard ways. BTAM continued to be supported in later iterations of the system architecture. IBM finally withdrew support for BTAM in 2000.
An access method for terminals 
BTAM was an access method for interactively communicating with remote terminals, usually connected through a front end processor such as a 270x, although support for local 3270 terminals was included. BTAM dynamically built CCW's for reading, writing and "polling" terminals and dealt with specific responses from those terminals, according to the success or failure of the communication channel.
Key role in Transaction processing systems 
BTAM was a key component in IBM's early transaction processing systems such as MTCS, CICS and IMS and underpinned the rise of online transaction processing for many large commercial banks and insurance companies. It was not unusual for BTAM and later developed access methods (such as VTAM) to co-exist, supporting different devices simultaneously under the same transaction processing system.
Material in this section taken from IBM System/360 Operating System Basic Telecommunications Access Method; GC30-2004-6.
BTAM programming required detailed knowledge of the characteristics of the specific terminals to be used.
THE DCB macro was used to define a communications line group:
dcbname DCB DSORG=CX...
DEVD=BS could be coded to specify a Bisync line. Many other operands specified unique characteristics of the attached terminals.
A terminal list, specified by the
DFTRMLST macro, identified the terminals attached to the line. This macro specified the line characteristics—start-stop, bisync, point-to-point, multipoint, leased line or dial — and the type of polling required— wrap around or open. The polling characters or telephone number used to identify each specific remote device on the line was coded. The
CHGNTRY macro could be used to modify information for a specific device in the list during execution. A wrap-around polling list would cause each device in the list to be polled sequentially by the channel until a response was received, This reduced the load on the CPU for continuous polling.
The programmer could specify a buffer pool, a data structure used to hold messages transmitted to or from the terminals. BTAM could construct the pool automatically or the programmer could construct the pool in various ways. The BUILD macro would format the pool in static or dynamic storage previously acquired, or the
GETPOOL macro would acquire and format storage automatically. For read operations BTAM would automatically obtain one or more buffers from the pool and store the received message. For a write operation the programmer needed to code
REQBUF to obtain the number of buffers necessary to build the output message. In either case the
RELBUF was used to free the buffers on completion of the read or write.
TRNSLATE included translation tables and translated to and from non EBCDIC data.
The standard OS/360
CLOSE macros were used to initiate and terminate processing of a BTAM line. The
LOPEN macro could reinitialize a line that, for whatever reason, failed to open successfully.
BTAM provided a large number of options for the
WRITE macros, depending on the line and terminal types and the current status. These were such operations as "read initial with reset", "read conversational", "read repeat", "write initial", "write break", and "write continue transparent". These were specified by codes, such as
READ decbaddr,TI,... for a "read initial." The read or write operation was executed asynchronously by the channel. Following a read or write, a
TWAIT macro was required to wait for completion and retrieve ending status.
RESETPL macro canceled an outstanding read and/or stopped polling on a line.
Supported devices 
Amongst many other devices supported, BTAM handled:
- IBM 1050 terminals
- IBM 2740 terminals
- IBM 2741 terminals
- Teletype terminals
- IBM 2260 visual display unit terminals
- IBM 3270 visual display unit terminals
- IBM 2780 terminals used for remote job entry