home *** CD-ROM | disk | FTP | other *** search
-
- ==Phrack Inc.==
-
- Volume Three, Issue 26, File 6 of 11
-
- +-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
-
- Basic Concepts of Translation
-
- Brought to you by
-
- The Dead Lord
- and
- The Chief Executive Officers
-
- February 17, 1989
-
- +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-+
-
- This tutorial is meant for the hardcore hackers who have entered the world of
- ESS switches. The information here is useful and valuable, although not
- invaluable. You can easily reap the benefits of access to a switch even if you
- only know RC:LINE, but to really learn the system in and out, the concepts
- about translation are ones that need to be mastered.
-
- In electromechanical switches, switching was directly controlled by whatever
- the customer dialed. If a 5 were dialed, the selector moved across 5
- positions, and so on. There were no digit storing devices like registers and
- senders. As the network grew larger, this became inefficient and switching
- systems using digit storage and decoding devices were put into use. In this
- type of setup, the customer dials a number, which is stored in a register, or
- sender. The sender then uses a decoder and gives the contents of the register
- as input. The decoder translates the input into a format that can be used to
- complete the call, and sends this translation back to the digit storage device.
- This is a simplified example of translation, since the only input was dialed
- digits and the only output was routable information, but it shows what
- translation is: The changing of information from one form to another.
-
- When 1 ESS was first tested in Morris, Illinois in 1960, it introduced a
- switching method called Stored Program Control. Instead of switching and logic
- functions being handled by hardware, it was done through computer programs.
- This greatly expanded the translation function. Because calls are handled by
- many programs, information must be provided for each program. For example,
- when a customer picks up a phone, the switch needs to know if outgoing service
- is being denied, if the line is being observed, line class, special equipment
- features, etc. The line equipment number is given to the translation program
- as input. The translator translates the LEN and produces the answers to these
- and other pertinent questions in a coded form that can be used by the central
- processor of the switch.
-
- If the call is an interoffice call, the first three dialed digits are given to
- a translator as input and they translate into a route index and, possibly,
- other information. The route index, in turn, is given as input to another
- translator, which translates into: Which trunk to use (trunk identity),
- transmitter identity, the alternate route, etc. So actually, in early systems,
- translation was a single shot thing, and in Stored Program Control Systems
- (SPCS), the translation function is used many many times.
-
- In the 1 ESS, translation data is stored on magnetic memory cards in the
- program store. However, since translation data is constantly being changed,
- there is a provision made to store the changes in an area of the call store
- memory. The area of call store is called the recent change (RC) area. The
- changes are eventually transcribed from the call store into the program store
- by a memory card writer.
-
- In the 1A ESS, translation data is stored in the unduplicated call store, with
- backup in the form of disk memory called file store. Additionally, magnetic
- tapes are made of the translation area of call store. When a change in
- translation is made, the change is entered in a duplicated copy of call store.
- After checks are made as to the validity of the change (format and everything),
- the change is then placed in the unduplicated copy of call store. After that,
- the change is also written to a set of disk files in file store. Before the
- new data is written, the old data is written to a part of the disk file called
- "rollback."
-
- |------------|-------------|-------------|
- | DATA | 1 ESS | 1A ESS |
- |------------|-------------|-------------|
- | Transient | Duplicated | Duplicated |
- |Information | Call Store | Call Store |
- |------------|-------------|-------------|
- | Generic | Duplicated |Program Store|
- | Program |Program Store| |
- |------------|-------------|-------------|
- | Parameter | Duplicated |Unduplicated |
- | Table |Program Store| Call Store |
- |------------|-------------|-------------|
- |Translation | Duplicated |Unduplicated |
- |Information |Call Store + | Call Store |
- | |Program Store| |
- |------------|-------------|-------------|
-
-
- Transient Information: Telephone calls or data messages in progress; present
- state of all lines, junctors, and trunks in the
- office.
-
- Generic Program: The operating intelligence of the system. It
- controls actions like line and trunk scanning,
- setting up and taking down connections, etc.
-
- Parameter Table: Informs the generic program of the size and makeup of
- the office. This information includes equipment
- items (frames and units), call store allocation (call
- registers, hoppers, queues, etc.) and office options
- (days AMA tapes will be switched, etc.).
-
- Translation Information: Day to day changeable info which is accessed by
- translator programs. Also includes form tables,
- lists called "translators" which are linked in an
- hierarchical pattern.
-
- This is a quote from Engineering and Operations in the Bell System, pages
- 415-416:
-
- "The 1 ESS includes a fully duplicated No. 1 Central Processor Unit
- (Central Control includes the generic program), program store bus,
- call store bus, program stores, and call stores. The 1 ESS uses
- permanent magnet twister program store modules as basic memory
- elements. These provide a memory that is fundamentally read only,
- and have a cycle time of 5.5 microseconds. The call store provides
- "scratch pad," or temporary duplicated memory.
-
- As with the 1 ESS, the 1A CPU has a CPU, prog store bus, and call
- store bus that are fully duplicated. However, the 1A processor uses
- readable and writable memory for both prog and call stores, and has
- a cycle time of 700 nanoseconds. However, the program stores aren't
- fully duplicated, but 2 spare stores are provided for reliability.
- A portion of the call store is duplicated, but only one copy of
- certain fault recognition programs, parameter information, and
- translation data is provided. An extra copy of the unduplicated
- prog and call store is provided for in file store."
-
- The program store translation area in the 1 ESS and the unduplicated call store
- translation area in the 1A ESS contain all the info that can change from day to
- day for that office. Here is a list of things that are stored in the
- translation area:
- + Line Equipment Number (LEN), Directory Number (DN), trunk assignments (all
- explained later).
- + Office codes.
- + Rate and route information.
- + Traffic measurement information.
- + Associated miscellaneous info for call processing and charging.
-
- Call store can be thought of as RAM; it is filled as long as the ESS is
- powered.
-
- Program store is like ROM; it is physically written onto magnetic cards. File
- store is simply information stored on magnetic tapes (or disk drives). All
- data that's changeable (rate and route, customers' features, trunk selection,
- alternate paths, etc.) is called translation data and is stored in the
- translation area.
-
- Changes in translation are called recent changes and are stored in an area
- called the recent change area.
-
- Once again, I stress that this article is sort of a "masters" file for hackers
- who are interested in ESS. If the concepts are too difficult, don't panic.
- Knowledge comes with time. Don't feel bad if you don't catch on right away.
-
- Translation data is stored in the form of tables or lists. Each table is
- linked in a hierarchical pattern. Tables high in the hierarchy contain
- pointers (addresses) to the lower tables. Tables low in the hierarchy contain
- the actual data.
-
- Most translators are broken down into subtranslators, which are linked by a
- Head Table, or "HT". The HT points to the different ST's stored in memory, in
- the same way that a table of contents in a book points to the pages of each
- chapter. This way, when a new feature is added, it's just a matter of adding a
- new entry in the HT, and having the entry point to a newly stored ST.
-
- Translation input is divided into 2 parts: the selector and the index. The
- selector determines which ST to access, and the index determines which item
- (word number) in that particular ST to access. In some cases, the translation
- information may not fit into the space allotted to an ST, so pointers to
- auxiliary blocks and/or expansion tables may have to be given. You can think
- of a BASIC program, where a GOSUB points to a subroutine at location 4000.
- Now, if the subroutine is 100 bytes long, but you only have room for 75,
- another GOSUB must be issued to point to the rest of the subroutine. So a full
- translator is quite a large unit -- it can have a head table, subtranslators,
- auxiliary blocks, abbreviated codes, lists, subauxiliary blocks and expansion
- tables. The example below shows a custom calling feature that exists on 5 ESS:
- Dog Control Frequency, "DCF". In the e below diagram, DCF represents the Head
- Table, and has a list of pointers that identify the location of subtranslators
- "A" through "D". The data field "2" in subtranslator "D" is too small to store
- the entire subroutine, so an expansion table "2A" was produced to house the
- entire program.
-
- * D.C.F. * head table
- |
- |
- |------|-----------|--------|
- | | | |
- A B C D subtranslators
- |
- ---1 data: tables
- |or
- ---2 ---->| lists
- | |
- ---3 |
- | |
- etc % / expansion
- 2-Atable
-
- ESS programs access translators by locating their octal address in the Master
- Head Table, which is also called the Base Translator.
-
- 1 ESS MHT
- %%%%%%%%%
- The 1 ESS has 2 copies of the MHT: One in program store, and one in call
- store. The copy in call store is the one that's used normally, since call
- store memory has a faster cycle time. The one in program store is there for
- backup. The MHT is 338 bytes long (23 bit bytes), and as we mentioned, is used
- as a sort of directory for locating translators. The MHT can point to starting
- addresses of Head Tables (which point to translators), or to tables and lists.
- Head Tables point to subtranslators. Subtranslators can point to auxiliary and
- expansion blocks, lists, or tables.
-
- There is another Master Head Table called the Auxiliary Master Head Table,
- which points to other translators. There are 2 copies of the AMHT, one in
- program and one in call store. The AMHT is found by accessing the MHT, and for
- those interested, the address of the AMHT is located in the 28th byte of the
- MHT. The MHT is fixed; meaning that the first byte will ALWAYS be the address
- of the DN translator. The last byte will ALWAYS be the address to the JNNL to
- JNNT/JCN Head Table (explained later). ESS needs a table to read this table.
- Otherwise, how would it know what byte leads where? There is a "T-reading
- octal program" located at (octal address) 1105615 in the parameter area in the
- program store.This address is stored in the generic program and is used to read
- the Master Head Table.
-
- 1A ESS
- %%%%%%
- A 1A ESS switch call store byte contains 26 bits, named 0 through 25, which is
- a lot more than I can say about an Apple... Bits 24 and 25 are used for parity,
- and are not used for data. This leads to what is known as a K-code. No, a
- K-code is not used by lowly software K-rad pirates, but it is used by us ESS
- hackers. Each call store K-code contains 65,536 bytes, and can be thought of
- as a "page" of memory.
-
- Anyway, translation data is stored in the unduplicated call store. Remember,
- we're still talking about 1A ESS. In generic 1AE6 and earlier, unduplicated
- call store starts at K-code 17, and as more translation data is fed into the
- system, it pushes down into K-code 16, 15, 14, etc. In generic 7 and above,
- call store has been increased by a great deal, because of a huge memory
- expansion unit. On the early generics, the entire call store and program store
- had to fit in 38 K-codes. In the later generics, there are 38 K-codes assigned
- to call store (that's split between duplicated and unduplicated), and another
- 38 K-codes for program store.
-
- Not all K-codes may be used, so it's not really a full 38 K-codes, but hey, you
- can't have all your memory and use it too. Anyhow, because generics 1A E7 and
- higher have such huge call store memories, it's convenient to divide call store
- into 3 parts: The "duplicated call store" (DCS), which is located at the very
- top of the memory map, the "low unduplicated call store," (LUCS), which is
- located in the middle of call store, and the "high unduplicated call store,"
- (HUCS). The LUCS area starts at K-code 17 and goes down as it fills up (being
- very watchful about not going into the DCS area. The HUCS area starts at
- K-code 37 and goes down as it fills up to K-code 20, being mindful not to step
- on LUCS's toes. Translators are classified as being either HUCS or LUCS
- translators, (but not both).
-
- LUCS translators aren't fixed; they can exist anywhere in the area as long as
- they're identified by the MHT. HUCS translators can either be fixed or not
- fixed. Note that in generics 1AE6 and earlier, there is no such distinction,
- because there's not enough memory to make such a distinction feasible. As for
- the location of the MHT, in generic 1AE6 and earlier, it's located in K-code 17
- at octal address 3724000, and is 1376 bytes long. The later MHT's were moved
- to K-code 37 at octal address 7720000, and is 3424 bytes long.
-
- Translator Types
- %%%%%%%%%%%%%%%%
- As I said, translators take data as input and change it into another form for
- output. All translators exist in the form of hierarchical lists and tables.
- They reside in call store on 1A's and program store on 1's. The higher data in
- a translator points to the location of the lower data. The lower data contains
- the actual information. The different translators are located by the Master
- Head Table, which contains pointers to all the translators in the system. The
- kind of data that needs to be translated is changeable data.
-
- For example:
-
- o line equipment number
- o directory number
- o 3/6 digit codes
- o trunk network number to trunk group number
- o trunk network number to peripheral equipment number
-
- Now, there are two types of translators: Multilevel and expansion. The
- multilevel translators contain a maximum of six levels of information in the
- form of linked hierarchical tables:
-
- 1- Head Table
- 2- Subtranslator
- 3- Primary translator word
- 4- Auxiliary block or expansion table
- 5- List
- 6- Subauxiliary block
-
- (1) Head Table: The HT is the "directory" for the translator. It contains
- addresses or pointers to each subtranslator.
-
- (2) Subtranslator: The ST's are the main subdivisions, so as an office grows
- larger, or as more features are added, the number of ST's grows larger.
- For example, there is a translator for every 1,000 directory numbers, so if
- an office grows from 3,000 to 8,000 lines, an extra 5 subtranslators must
- be added. Input for translation must contain 2 things: A selector and an
- index. The selector contains the information as to which subtranslator to
- use (in the case of DCF, the selector would either be an A, B, C, or D).
- The index shows which item or word in that particular subtranslator to
- access. In the DCF example, if the selector were "D", the index could be
- 1, 2, 3, etc.
-
- (3) Primary Translation Word (PTW): Each index points to a PTW, which is a
- byte of information. Often, all you need is 1 byte of information
- (remember that each byte is 23 bits!). If the data isn't stored in the
- PTW, an address will be there to point to an auxiliary block or expansion
- table, where the data will be found. The ESS can recognize whether the
- byte contains data or an address by:
-
- 1 ESS) The 3 most significant bits will be 0.
- 1A ESS) The 4 most significant bits will be 0.
-
- So, if all the 3 (or 4 for 1A) most significant bits contain 0's, the word
- will be interpreted as an address. (Anyone want to throw the ESS switch
- into an endless loop????)
- (4) Auxiliary Block: The first byte in the AB contains the length of the
- block. This byte is called the word number (WRDN), and is used by the ESS
- so it knows where the auxiliary block ends. Remember that when the ESS
- reads data, all it sees is:
-
- 110001011000101010100100101110010010101000101010100100101111
-
- So, in order to stop at the end of the block, the WRDN number must be
- present.
-
- (5) List: The list is used when additional information other than the standard
- found in the auxiliary block is needed. The list, like the ST, has an
- associated index. The address of the list is found in the AB and the index
- shows which item of data in the list should be looked at. A good example
- of what kind of information is found in the list would be a speed calling
- list.
-
- (6) Subauxiliary Block: The list is only large enough to hold a 7 digit phone
- number, and if more information has to be stored (like a 10 digit phone
- number or a trunk identity), an address is stored in the list that points
- to an SB, which acts very much like an AB.
-
- Expansion Translator
- %%%%%%%%%%%%%%%%%%%%
- The expansion translator has one table (called an expansion table). This type
- of translator gets only an index as input, since this type of translator is
- only a bunch of words. It could have auxiliary blocks, if the space allocated
- to a word is too small.
-
- RECENT CHANGE AREA OF CALL STORE (1 ESS)
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- The recent change area consists of:
-
- + primary recent change area
- + auxiliary recent change area
- + customer originated recent change (CORC)
-
- The starting and ending addresses for these rc areas are stored in the MHT.
- The primary recent change area is used to store changes affecting primary
- translation words. Each change is stored in a primary RC register, which
- consists of two 23 bit bytes. These two bytes contain status bits, primary
- translation address in the program store, and the primary translation word
- (PTW) address in call store. The first byte in the register is the "address
- word" (AW) and the second is the new primary translation word. When looking
- through the AW, bits 22 and 21 can tell you what kind of recent change is being
- implemented:
-
- 11: temporary (not to be put into PS)
- 10: permanent (to be put into PS)
- 01: delayed (not active yet)
- 00: deleted (this space is available)
-
- The PTW (abbreviations make things SO much easier) contains the translation
- data or the address of the auxiliary RC (TAG). You can tell whether the data
- is an RC or an address by looking at bits 22 to 18. If they are 0, then this
- byte contains an address, which is stored in bits 17 to 0.
-
- _______________________________________________________________________________
-