Design of assembly level language for horizontal encoded microprogrammed control unit
Authors: R. H. Evans, L. H. Moffett, R. E. Merwin
Venue: Conference record of the 7th annual workshop on Microprogramming (1974)

Microprogramming in its most elementary form involves determination of the required bit patterns for a set of control words which express some desired computer instruction. The bit patterns, stored as words in a control word memory, selectively and in time sequence activate the control lines of a computing element. In its simplest form, each control line for the computing element corresponds to a bit in the control word. In addition the control word may contain bit fields to determine the sequence of execution of control words. The first proposals for microprogrammed control systems [1,2,3] were essentially of this type. Specification of these bit patterns was exceedingly tedious since the number of control lines runs to over one hundred for a typical computing element and several hundreds of control words must be specified. The first step to alleviate this situation was the development of encoded [4] control where groups of control lines which are never activated simultaneously, e.g., the controls to an adder/subtractor unit, are encoded where k bits in the control word selectively activate one of up to 2Kcontrol lines. While this reduces the number of bits that must be specified for each control word, it doesn't reduce the number of control words that must be generated and microprogramming is still an error prone procedure. Because of this situation, microprogramming is considered by most programmers to be analogous to or worse than machine language programming. The development of assemblers and compilers to simplify the process of coding microprograms has proceeded slowly in contrast to the situation for conventional application programming. Available design systems [5,6] for microprogrammers feature simple languages composed of orders or operations which are associated with specific encoded control word bit patterns. There are three principal causes for this situation. First, most microprogrammers have a design engineering background and are not familiar with assemblers and compilers and do not request such facilities from the design automation developers. Second, logic design of digital systems involves largely register to register transfers and bit manipulations with associated timing constraints which are not efficiently expressed in terms of programming languages like FORTRAN. Third, user microprogrammable computers have not been widely available until recently, therefore fewer people have been concerned about the situation. To address the problem of designing a language to simplify the specification of microprograms for horizontally encoded control units, an assembly level language, HALL (HYRMAN Assembly Level Language), was designed. A brief description of the language and a two pass translator is presented with special emphasis on the design of the control sequence technique. As background, the major features of the HYRMAN [7] simulator are presented along with a sample case of simulation to illustrate the usage of HALL. The paper concludes with some comparisons of this approach to other attempts [8,9,10,11] of a similar nature.