Download Michael Brett - MacSphere
Transcript
11 'f. .- INTERPROCESSOR COMMUNICATION LINK • AN COMMUNICATION LINK INT~RPROCESSOR FOR DATA GENERAL MillICOMPUTERS By MICHAEL EDWARD BRETT, B. SC. A Project Report Submitted to the School of Graduate Studies • in Partial Fulfilment of the Requirements for the Degree Master of Engineering McMaster University May 1977 MASTER OF ENGINEERING (1977) (Engineering Physics) TITLE: McMASTER UNIVERSITY Hamilton, Ontario. An interprocessor communication link for Data General minicomputers AUTHOR: SUPERVISOR: Michael Edvard Brett, B.Sc. Professor T. J. Kennett NUMBER OF PAGES: iv, 65 • (Brock University) ABSTRACT The ACTR (Asynchronous Communications Transmitter Receiver) is a serial data transfer link for the Data General ·ECLIPSE and NOVA minicomputer lines. The ACTR allows the interconnection of computers in the NOVA and ECLIPSE lines into a multiprocessor system by permitting blocks ot data to be transferred through the computers' program I/O tacitities. Such a small computer multiprocessor system is a powerful, high flexible alternative to a single large computer in many applicat i'.(lllS. The major appli- cation of the ACTR is in systems where the linked processors are either far remote from one another or where the system is so configured that a master/slave environment is practical. This report vill deal with the theory of Operation of the· hardware as well as the software control of the ACTR. A method of handling the ACTR in a multi-tasking environment under the Data General operating systems, RDOS/RTOS, will also be developed • .. i ACKNOWLEDGEMENTS The author would first like to thank my supervisors, Dr. T. J. Kennett, for giving me a sound base in minicomputer theory and operation and the confidence to continue on in this line into the industrial world. I would also like to acknowledge the assis- tance of Gord Cormick and Kenrick Chin vho combined to teach me . . a great deal about the practical side of minicomputers and digital electronics. Special thanks are due to Litton Systems (Canada) Limited for the use of their ECLIPSE S/200 computer system in the development of some of the software presented in this report. Finally, I would like to extend my appreciation to the Engineering Physics Department of McMaster University for both accepting me as a graduate student and providing me vith a very challenging and rewarding course of study. • ii TABLE OF CO~TENTS Page ABSTRACT i ACKNOWLEDGEMENTS ii TABLE OF .CONTENTS iii LIST OF FIGURES iv CHAPTER . l INTRODUCTION 1 2 THEORY OF OPERATION 6 3 PROGRAMMING THE ACTR 19 4 CONCLUSIONS 31 APPENDIX A ACTR MASTER-SLAVE HANDLING ROUTINES 33 APPENDIX B ACTR DIAGNOSTICS 51 BIBLIOGRAPHY 65 . • . iii LIST OF FIQ.URES Figure Page 1. ACTR Transmitter 7 2. ACTR Receiver 8 3. ACTR Device Flags 9 4. Transmitted Pulse 11 5. Transmitter Clocking 13 6. Receiver Clocking 14' 7. Interrupt Timing 17 8. I/O Instruction Format 20 9. ACTR Control Summary 29 ACTR Master-Slave Message Format 34 IO. .. iv CHAPTER 1 INTRODUCTIOli The most rapidly growing use of the world's communicatoin links is for data transmission. The most rapidly growing area in the exploding data processing industry is teleprocessing. The reason is the versatility that the interlinking of computers~ can bring, plus the potential benefits to the individual of having this computing power at his fingertips. The phenomenal growth of the minicomputer industry in the last decade has been highly influential in the expanding field of data transmission. In situations characterized by relatively simple mathematical operations and substantial data communication and formatting requirements, a minicomputer multi-processor is often· less expensive and far more flexible than any single medium to . large scale computers capable of meeting all the job requirements. A minicomputer multi-processor system is usually characterized by a large central computer, complete with mass storage and hard copy devices, which is connected to a number of smaller, remote processors. The remote systems can control or monitor some process or series of processea continually, as the central computer stands ready to assume a remote system function in the event of a failure of a remote CPU. While in this backup mode, the main computer can be employed on lower priority tasks such as data analysis or data collection from the remote processors. ]: 2 In critical real-time situat_ions; this redundancy may give a measure of safety to a total system, assuring continued operation even when a catastrophic failure occurs in a major system component. In order to implement a multi-processor system of apy description, a reliable method of processor-processor communication is needed. In the Data General NOVA and ECLIPSE minicomputer lines, data transfer links can be divided into tvo classes, vith each class characterized by the method of Input/Output that it employs. The first class involves all devices that transfer in- formation through the use of' the data channel facility. A device connected to the data channel can, at its own request, gain direct access to memory, using a minimum of processor time. The second class involves all devices that process data through program I/O (all imput/output through accumulators). Handling data transfers between external devices and memory under program control requires an interrupt plus the execution of several instructions for each word transferred. Data General's Multiprocessor Communications Adapter (MCA) is a data transfer link of the data channel variety. The MCA facilitates the interconnection of up to fifteen computers in the NOVA and ECLIPSE lines into a multiprocessor system by permitting blocks of data to be transferred at high to another. Data rates are channel facilities. primaril~ sp~eds determined from one computer b~ the processor's Typical data rates for a single link range from 70 KHz for a pair of NOVA computers· to 140 KHz.for UOVA line computers with the high speed data channel feature. 3 This report will deal with the implemention ot an asynchronous data link of the program I/O variety :for Data General NOVA and ECLIPSE minicomputers. The Data General Corporation NOVA and ECLIPSE lines of computers are:general purpose~ :four accumulator, stored-program conputers with a word length of 16 bits. The basic instruction set contains instructions that perform :fixed point arithmetic between·accumulators; transfer of operands between accumulators and main storage and logic operations between accumulators. In addition to an assembler and a macroassembler, there are higher-level language processors available which inelude ALGOL, BASIC, FORTRAN IV and 5. There is a wide array of operating systems available for the NOVA/ECLIPSE line ot minicomputers. These range :from the Stand-Alone Operating System (SOS) to the Real-time Disc Operating System (RDOS). The ACTR (Asynchronous Communication Transmitter Receiver) is a self-clocking data transfer unit which consists of .:il];dep·endent transmitter and receiver sub-sections. bit by bit onto a transmission line. A complete word transfer consists of the movement o:f 20 bits: a control (status) bits. Information is clocked 16 b~t data word and 4 Each transmitted bit is accompanied by a clock pulse which is used by the receiver in the other CPU to • indicate the data strobe cycle. No computer intervention is needed in the receiving system until all 2~ bits are received and shifted into place in the receiver buffers. For a cable length of 20 :feet, a full 2,0 bi ts. can be strobed into the receiver buffer in 8.0 micro-seconds. With a minimal ACTR handler (no error checking) 4 in both processors, typical data rates would be approximately 26 kHz for a NOVA 1210 and 37 KHz for a ECLIPSE S/200. The MCA is not required in systems with only modest intercommunication requirements. In such systems, an interconnection of processors using an asynchronous interface is simpler and less expensive. The MCA cannot be used in systems where the linked processors are not contained in the same frame as the transfer distance for a MCA cannot exceed 15 feet. The ACTR has adjustable transfer clocks which allow the respective transmitter and receiver to be tuned to allow for the type and length of transmission line between them. The MCA achieves its much greater transfer rate by employing sufficient lines to move whole words at a time and provide all control signals. The ACTR on the other hand requires only two interconnecting cables and employs line drivers and receivers on each cable to increase the transmission range far beyond the limit of the MCA. Since clock pulses are transmitted with each datum bit, synchronization between the two computer systems is not a problem. As the distance between the processors increases, the greater the chance of reception errors occuring. The four control bits of the ACTR can be used to supply transmission parity checks as well as STX (start of text) and ETX (end of text) capabilities to the user. The m~jor use of the ACTR is for data transmission in systems where time is not a crucial factor or where the interconnected processors are too remote to use the faster MCA. Such a system could consist of a remote processor controlling a Multichannel Analyzer. P~'ri.odically an energy spectrum would be transferred from the remote CPU to a central processor with mass storage capabilities(moving or fixed head disc, magnetic tape, paper tape etc.}. This transfer of data would take place during the times that the remote system was not actively involved in a man. itoring activity.so that no new information is lost. The central. processor could handle a number of such remote systems and provide an economical means of recording in~ormation by eliminating the need for storage facilities on each remote system. Chapter 2 of this report will deal with the hardware aspects of the ACTR by outlining the clocking sequences of the transmitter and the receiver and the interface of the ACTR to the computer I/O hardware, In chapter 3, I will be discussing the software control of the ACTR and the linkage 6~ the ACTR into the Data General Operating Systems, RDOS and RTOS. Chapter 4 serves as a summary of ACTR and its place in data communicatio.n between Data General minicomputers. Appendix A is a handling routine for the ACTR in a master-slave multi-tasking environment and Appendix B is a hardware diagnostic for the ACTR. CHAPTER 2 THEORY OF OPERATION The ACTR is an asynchronous self-clocking data transfer link that conforms to standard Data General interface logic in all but its use of the Busy and Done flags. The ACTR Done flag is used to indicate the state of the receiver section while the Busy flag reflects the current condition of the transmitter. The ACTR is attached to the I/O bus of the computer and is connected to the ACTR of the other computer by dual transmission lines. Although mounted·on a single circuit board, an ACTR con- tains independent receiver and transmitter and receiver subsections. The complete ACTR assembly is shown in Figures 1-3. Each data word is sent under program control. transmission consists of the transfer of (DG word) gram use). ~and 2~ A complete bits; 16 data bits 4 control bits (transmission status bits for pro- After data bits are strobed into the transmitter buffers, the data transfer is initiated by setting the Busy flag. After the transmitter has sent all 20 bits, it clears the Busy flag. The transmitter subsection cannot request an interrupt when it has completed its operation, Accomp~nying each trans- mitted bit is a clock pulse which is used to activate the clocking cycle of the ACTR receiver in the other system. When th~ re- ception of the incoming word is completed, the receiver sets the Done flag. The ACTR receiver is connected to the interrupt system (i.e. the ACTR receiver can generate an interrupt request) 7 De"S&L J)~iA. · . O~TOB Ss;f>~,. ION 2. PUL.~e. ......-....... Hooe. '-s Jn~ <.DlltfR.a\. lo-.... ~_.-------2 ~ DAl~ \2. ~\'l1"P - - lllA~SMt~R n~ L~ • lf 3HIFT !>Alft ~s 2. J> TC.P J)A.T A L.o-.D pc..u...se. (y " DLP ~11 _s I - '° .-------1---------t---t' R ~ ,__,......__ _ _~.... ' S .fl DLP •b '' ". ~ C.LOCIC. . PtU.-6~ DAT~ ..J:... D~\AIS _.3_.7'+'1SA ' 't ti f I>t\t ~ l't- -.... cl , S>A.TA l S - a . t loo f\5 100 t l. .DA1 A;, _ ___,,. D;t __3-17.,.'\SA 7't-l2.?> #2.1 - f2. DAtAJ..--.. OAlA~_..,.s TC.P 1'~ ,lf Tc.P -- (.la-- H> _____<.._. StA.TP D~t~ WtDT+\ . 1' l'UL~E l.SOns . "S 8Jl DLP Stu.,.-r DATA ~ t---'- -..-- t0 7'\•2.~ TC-f +s 1'1'> ~. lo ,fl DLP ~-f .,___ _ _ ' 8.n A t1 ~t~e, TC.P ~ce.s to f l . -¥uc. ...&_ __,. ----.icJ Ot---. " t>A1AC\ DA1Alt. .a 7•P's~· a+ -ttU. lf cl q Tc.P ~1'-tl R '- . --"-t 10 1,'S ..,.____c._;---- l\ft ~p +r; 1Z D • tt z.3 ~...1- - - - - . · 3 Bu~'< DAT All 'f'~ •s -M-17 s CLDCJC. t>ATA D~t"~ --~_.irts~ _,.."_ -.04. COU~TE.~ 2. bu'TGrC>f AiG. 1fl"MsM\~!.toN LI,_.&. A"S2. .,. DAtAl'f- _ __,. itl\ t \ tr T'c.p Ot\rlt ls--...-...~10 IJ . Sl~fP ASYNCHRONOUS COMMUNICATION TRANSMITTER RECEIVER Butt.June 3, 1978 Sheet· 1 of 3 ACTR TRANSMITTER Figure 1 . . 8 .. , Co~1R.Ol woltD (4 ins) J)g~SI •'t tt(f- ,,. )~1115 13 \ l. \?> to <\ J *'tt n 12. 2. ' ' ..n. (lC.f' c.' \\ T~SA lo l -lS- - leCEPl'to~ • b'-'ISEL:tf ) 'DA1'1ft I. ~~ -l'I '~ l~ "*er '° ct :ll<t 3 L3 "' I 1 12. ', et ARCP .a l '3. D~TA II WoftD I~ B11s) \ lc.Q. \3 ra. 10 , #19 13 1 3 +s 2. $ 8 A 7'H2.3 1t-2'l -~ 1 + ,,. .s u • ' ' c\ .rl.rtcr· C\ -.. '~' Il.lCP q 74Q.~ 6 bATA «lct -~ ~s 2. a TllAkSM~lO~ t.lN£ S£e.K.. C.LOC.f( JOO 1 rt. ~ :tfJCOM\N.C. I\~ .fS ,,.,J ~c,P - ~ C.Loc.k sons ~ 1'1- IS Re.c.E.l\JEA_. ., - 1'2fJ, .............. l.. A. " l'f-,SA '- ____ ..f 5 10 ' ~ 5 ct ~ l'f.CfSA. -:I\ IS ' ~ l)OlJe CL. , ... @) ~I'\- .f-S" 1·$.JtS @ . 11 1'lq5A ~ ~'~- (Ho l Ofi\PLcr1ol\l C.Loci<. • . c.\ Jl.~ <\ " 74crs.\ ~ ,___ _ _ _ _ _ _ _ _ _ _ _o!-1 _________________' .___.... ~ #25 • ASYNCHRONOUS COMMUNICATION · TRANSMITTER RECEIVER Desi ACTR RECEIVER Figure 2 ~ Bl\itt.. June 1976 :a. .f.S j Q ~ D 'i %NT'- ~Eo<.· J)f)Nf. .) DcNe: d 1•1 .EL It ..s5Tt."T R,£N8 s n A X MTit.Cj) R ' l!. 't If> 2 DE'JSEL ~5 be~ CLR I C\..R.P a 2. • IU.S'( <-c.oci. A s ). .D l>A.T~8 l2 I> ~ %NT ~ auiY .a I *13 ....,ct__, ~ ' C\it.a R A ' , lb __s_. ,...._ / ~.....--- •3 't..n. ASYNCHRONOUS COMMUNICATION TRANSMITTER RECEIVER ,.. .lNt? ou.T ;~ 81\ltt. June Sheet 3 of a· •' ACTR DEVICE FLAGS Figure - 3 ' and can respond to an INTA instruction by returning its code. de~ice When the processor realizes that a new data word is present in the receiver, the information is strobed into specified ac-. cumulators under program control. To allow the processor to sense the state of the ACTR, it places its Busy and Done flags on the SELB and SELD lines whenever· it recogni~es its device code. The transmitter buffers are loaded from the I/O bus by the DATOA {data word) and DATOB (control bits) signals respect"."' ively. The transmission of data is controlled by 3 "clocks" (retriggerable monostables); the Data Separation pulse, the Transmitter Clock pulse and the Data Width pulse. The Data Separation pulse, as its name suggests, is used to separate the individual data bit transmissions; to provide the receiver hardware time to act on each one. This pulse is initially triggered by the STRT signal from the processor. The STRT signal also sets the Busy flag (which remains high as long as th-e transmission is in progress). It is assumed that when the STRT signal is issued by the processor, the information to be transmitted is already in the transmitter buffer. On the falling edge of the Data Sep- aration, the Transmitter Clock pulse is triggered. This pulse is used to shift the next bit irtto position to be transmitted. The rising edge of the Transmitter Clock generates the Data Width ... pulse. This pulse is ANDed with the datum bit to be sent to produce a pulse of a specified width. This pulse is then com- bined with the clock pulse and placed on the Transmission line. Figure 4 details the actual pulse that is transmitted. · Due to 11 1·1 i.to µs µs bit . 0. bit I clock l ··1 • data I clock data Times shown are characteristic of a co- axial 20 ft .. cable Negative clock pulse is sent for greater noise immunity TRANSMITTgD Figure 4 PULSE 12 the manner in which the incoming information is clocked into the receiver buffer, the Data Width must be at least a factor of two longer than the Transmitter Clock. The falling edge of the data width pulse increments a counter network which is responsible Tor terminating the· clocking cycle at the end of the transmission. 2~, the Busy flag is clocked over to ~. When the counter reaches When Busy is in the B state, the Transmitter Clock pulse cannot be generated on the falling edge of.the Data Separation pulse and the clocking sequence is halted. The counter is zeroed at the start of each transmission by the STRT pulse. The complete sequence for the trans•itter is outlined in Figure 5. The receiver is activated on the falling edge of the incoming datum pulse (the negative of the Transmitter clock). This edge triggers the Data Seek and Reception Completion clocks. The Data Seek pulse must remain high for more than half the length of the Data Width of the transmitting ACTR. The Data Seek is used to indicate when the actual transmitted datum is incoming (i.e. when the clocking signal that begins each transmission is completed). The falling edge of the Data se·eks generates the Receiver Clock Pulse which actually shifts the incoming datum bit into the receiver buffer. The Reception Completion clock is triggered on every incoming transmission. This clock is set to fall in a time that corresponds to approximately (1 bit) transmission. 1~ times the period of a complete Each incoming data transmission will re- trigger this clock (put the clock cycle back to the beginning) 13 START BUSY. DATA SEPARATION ULSE STRETCHER I1 DATA BIT TRANSMITTER Figure CLOCKING 5 14 r-----r------ ' r--------INCOMING ' I ' .I DATA TRAIN RECEPTION COMPLETION DATA SEEK RECEIVER CLOCK Data clocked into buffers on negative edge of RECEIVER CLOCKING Figure 8 receiver clock l5 so that the Reception Completion clock will not fall until the transmission of all 20 bits is completed. The entire clocking sequence of the receiver is illustrated in Figure 6. The clocking times shown in Figures 1 and 2 are representi ti ve of a system with a cable length of 20 feet. These times will vary with the length and type of cable used to connect the two processors. to start tuning However, they do give a base point at which an ACTR pair. When the Completion clock falls, it clocks the DONE over to 1. This condition can be determined by sensing the DONE flag or through the interrupt,standard on the NOVA (ECLIPSE} line~ Since a reception of data can normally occur at any time, the normal operating environment for a system using the ACTR would be with the interrupts enabled, so that the CPU can respond to a data reception whenever it happens. In e¥ery instruction cycle, the processor generates RQENB wh~!h places the interrupt request signal INTR on the bus from ·a given device (i.e. sets its IHT REQ flip flop) if its Done flag is set and its Interrupt Disable flag is clear. Under program control, the processor will generate the MSKO signal to set up the Interrupt Disable flags of all devices according to the information. on the data lines (DATA8 =1 to set the ACTR Interrupt Disable and DATA8 = 0 to clear the ACTR Interrupt Disable, In the ACTR interface, the actual flag is a INT ENABLE but it responds to a generated MSKO instruction as any standard DG interface would). After an interrupt has been recognized by the processor, program control will go.to the interrupt handler speci~ied in memory location 2 of the processor. The interrupt handler can 16 determine which device needs service by sensing Done or it can issue INTA to read the device code of the nearest deyice requesting an interrupt. When an INTA instruction is executed by the processor, the INTP IN signal is generated. The ACTR will receive this signal only if no INT REQ flip flop is set in a device closer to the processor on the bus; the INTP must be terminated at the first device where the INT REQ is set. A second signal, INTA, is gen- erated at a time sufficiently long afterwards to ensure that the INTP signal has been terminated. The INTA signal is used by the device, which terminated the INTP, to clock its device code onto data lines 10-15 of the I/O bus. This data is strobed into the processor at the end of the INTA. The timing of the logic signals that control the interrupt sequence is outlined in Figure 7. Once execution of the INTA instruction is completed, the device code recei~ed can be used to vector control to the appropriate routine to service the interrupt. The interrupt service routine the r.~ceived ~or the ACTR must strobe data into the processor by issu:i,ng a DATI'A (data word) and DATIB (control bits) signal over the I/O Bus. The interrupt handler must clear Done by issuing a CLR signal so that the ACTR will not immediately request anothe~ interrupt for the same reception when the interrupt system is turned on and Interrupt Disable is cleared. Clearing Done also clears INT REQ, disabling INTR. The timing of the various clocks in the ACTR is controlled by res is tor ( trimpot )- c.·apaci tor pairs •. The clocking systems 17 DS0-5 INPUT DATIA, DATIB, OR DATIC BATA0-15 s:;;'.)BE DATA l~V: t.C smr. CLR, OR IOPLS · (IF PRESENT! 050 - 5 ~ 500 Mill ~ATI 150 ..---------. 350 MIN I rmNj _J L FROM MAXIMUM TIME 1100 . . - - - - - - - - - - . LEADING EDGE :] f f i l l . _ - - - - - - - - - - - - - O F STRT,CLR AND 1 150 rwq DS0-5 { SELB,SELO TO STATE . IOPLS CHANGE IN SELB, I 350 MIN I . 350 MIN STRT, CLR, OR IOPLS (IF PRESENT) SKlP TIMING FOR INTA ANO MSKO IS THE SAME AS FOR INPUT ANO OUTPUT RESPECTIVELY 200 MAX GATES DATA ONTO BUS OATA0-15 OATOA, OATOB, 150 OR DATOC _ _...._Q.il fl_M_IN_, OUTPUT L _J SELD AND INTR IS . 250 NS _ 150MAX DS0-5 GATE BUSY, DONE ONTO SELB, SELD LINES PROGRAMMED TRANSFERS (IN-OUT INSTRUCTIONS) '< - - - - 1 5 0 MIN----1 ROENB . DEVICE DONE DEVICE' INT DISABLE INTR INTP IN INTP OUT INTA OATA0-15 DS0-5 r-- --.. .~-------~~-'---------4~ 500 MIN 200 MAX COOEOF THIS --..-------11---------ti--DEVICE -----~--~\--------n-------~ CLR I DEVICE NOT DONENO INTERRUPT REQUESTED I DEVICE SETS DONE ANO REQUESTS INTERRUPT CODE OF THIS DEVICE PROGRAM GETS CODE · 1 PROGRAM CLEARS · OF NEAREST DEVICE DONE AND INT REO . I REQUESTING INTERRUPT PROGRAM INTf~PT TIMtMe. Figure 7 18 in the two connected ACTR interfaces must be tuned to one another by adjusting the appropriate trimpots so as to obtain the maximum data transfer rate possible~ given the characteristics of the connecting transmission lines and the latency of the interface. elements. The next chapter will deal with the software aspects of data transfer with the ACTR. The I/O structure of the NOVA (ECLIPSE) minicomputers will be reviewed with special attention to the program control of ACTR. .. CHAPTER 3 PROGRAMMLHG THE ACTR The software control of the ACTR is very straight forward but to be able to use this device effect{vely, the I/O handling facilities of the NOVA (ECLIPSE) must be well understood. chapter will be devoted to ~ This detailed description of the pro- gramming concepts of the I/O system with specific references to the handling of the ACTR. In order for the processor to perform useful vork for the user 9 there must be some method for the program to transfer information outside the machine. set provides this facility. The Input/Output (I/O) instruction There are eight I/0 instructions which allow the program to communicate with I/O devices, control the I/O interrupt system, control certain processor options and to perform certain processor functions. The NOVA (ECLIPSE) line bas a 6-bit device selection network, corresponding to bits l~-15 in the I/O instruction format. Each device is connected to this network in such a way that it will only respond to commands with its ovn device code. Each device also has two flags, Busy and Done, which control its operation. In conventional DG devices~ when Busy and Done are both zero, the device is idle and cannot perform any operations. To start a device, the program must set Busy to 1 and set Done to 0. When a device has finished its operation, it sets Busy to 0 and Done to 1. The ACTR, being essentially two devices in one 19 20 0 0 I 1 I OP AC I 1 2 3 4 5 I COJ?E 6 7 EONj'ROII 8 9 t INSTRUCl'ION FORMAT Figure 8 I I 10 11 • 1/0 CODE DEVICE 12 I 13 . 14 us 21 {transmitter and receiver), does not confora to the standard DG flag configuration. flag must be set. To begin a transmission, the ACTR Busy When the will clear the Busy flag. is completed, the ACTR t~ansmission When a reception is completed, the ACTR sets its Done flag. The format for the I/O instruction~ is illustrated in Bits ~-2 are p11, bits 3-4 specify the accumulator, Figure 8. bits 5~7 contain the operation code, bits 8-9 control the Busy and Done flags in the device, and bits 10-15 specify the code of the device. The six bits provided for the device code in the I/O format mean that 64 unique device codes are available for use. Some of these device codes, however, are reserved for the CPU and certain processor options. Most of the remaining codes have been assigned to :particular device by De.ta General. device code normally chosen for the ACTR is 4¢°a • The In standard DG hardware, this corresponds to a Synchronous Communication Receiver (SCR), a device which will not be used on a system with· an ACTR. In order to operate the ACTR transmitter, the program must first ensure that the device is not currently performing some operation. % state This is done by testing the Busy flag for a by SKPBZ JMP. -1 ACTR . rs'" BUSY ZERO? ' ;NO ••• CONTINUE CHECKING ;ACTR NOT BUSY Next the control and data words must be loaded into the transmitter buffer. The control bits can be used to inform the receiving 22 computer of the nature or the data transfer. (i.e. start of message, end of message, data a~knowledgement etc.). After loading the data into the interface, a staJ;"t pulse must be sent to the hardware to begin the actual transmission (set Busy to 1). DOA ACS DOB ACD IHOS ' , ACTR ACTR ACTR ., ., LOAD DATA ACTR BUFFER A WITH FROM ACS ; LOAD ACTR BUFFER B WITH ; CONTROL BITS FROM ACD , NO I/O TRANSFER ; -S- SETS BUSY TO 1 TO , BEGIN TRANSMISSION . . Since the start pulse can be issued as soon as the hardware buf'f'ers are loaded, this group of' instructions can be shortened to DOA ACS , ACTR DOBS ACD, ACTR Once the datum has been sent, the transmitter subsection of' t·he ACTR has no way of knowing whether the other computer has received it and strobed the data into the processor (i.e. it is ready to accept more data). It is therefore advisable to have the receiving computer send a data acknowledgement message using its own transmitter. When a transmission is received, the Actr Done is set to 1. The method or ascertaining this condition will be dealt with in some length shortly but f'or now let us assume that we know that a reception has been completed. The A buffer of' the receiver (d~ta word) must be loaded into an accumulator as well as the B buffer (control bits). The Done f'lag to 0 by a clear pulse: ai so 1 must be put 23 DIA ACS, ACTH DIBC ACD, ACTR ;READ DATA WORD INTO ACS ;READ CONTROL BITS INTO ACD ;CLEAR ACTR DONE FLAG Once the ACTR has completed the reception of a word (20 bits), it sets Done to 1. The program can determine this con- dition in one of. two ways. By using the I/O SKP instruction, the program can test the condition of the Done flag. SKPDN ACTR ;IS DONE l? JMP • -1 ;NO ••• CONTINUE TO WAIT ;YES ••• MESSAGE RECEIVED Another way is to utilize the interrupt system that is standard on the NOVA {ECLIPSE) computer. The interrupt system is made up of an interrupt request line to which each I/O device is con~ nected, an Interrupt On flag in the CPU, and a 16-bit interrupt priority mask. The Interrupt On flag controls the status of the interrupt system. If the flag is set to 1, the CPU will respond to and process interrupts. If the flag is set to ¢, the CPU will not respond to any interrupts. An interrupt request is initiated by an I/O device when it completes its operation. When the ACTR completes a message reception, as well as setting Done, it also places an interrupt request on the interrupt request line, provided that the bit in the interrupt priority mask {bit 8) which corresponds to the priority level of the device is the mask bit is 1, the ACTR can set its Done ~o p. If l, but does not place an interrupt request on the interrupt request line. If the Interrupt On .flag is 1 at the time. the processor completes execution of any instruction, the processor honours any requests on the interrupt request line. If the Interrupt On flag is O, the CPU does not look at the interrupt request line, it just continues to the next sequential instruction. The CPU honours an interrupt request by setting the Interrupt On flag to 0 so that no interrupts can interrupt the first part of the interrupt service routine. The CPU then pla.ces the updated program counter into physical memory location 0 and executes a "JMP @l" instruction. It is assumed that physical location 1 contains the address, either direct or indirect, of the interrupt service routine. Once the CPU has transferred control to the interrupt service routine, it is up to that routine to save any accumulators that will be used, save the carry bit if it will be used, determine which device requested the interrupt, and then service the interrupt. The determination of which device needs service can be done by I/O SKP instructions or the routine can use the INTERRUPT ACKNOWLEDGE instruction. The INTERRUPT ACKNOWLEDGE instruction (INTA) returns the 6-bit code of the device requesting the interrupt. If more than one device is requesting service, the code returned is the code of that device requesting an interrupt which is physically closest to the CPU on the I/O bus. After servicing the device, the interrupt routine should restore all saved value~~ .. set the Interrupt On flag to 1 and return to the interrupted program. The instruction that sets the Interrupt On flag to l (Interrupt Enable) allows the processor to execute one more instruction (if the Interrupt Enable instruction changed the condition of the Interrupt On flag) bef'ore the next interrupt can take place .. In orde·r to prevent the interrupt service routine from locking itself inta 25 a loop, this next instruction should be the instruction that returns control to the interrupted program. Since the updated value of the program counter was placed in location I by the CPU before honouring the interrupt, all the interrupt routine has to do, after restoring the AC's and the carry bit, is to execute an INTERRUPT ENABLE instruction and a "JMP @ %" instruction and control will be returned to the interrupted program. If the Interrupt On flag remains O throughout the interrupt service routine, the interrupt routine cannot be interrupted and there is only 1 level of device priority. This level is deter- mined by either the order in which the I/O SKP instructions are issued or (if the INTERRUPT ACKNOWLEDGE is used) by the physical location of the devices on the bus. In systems of videly differing speeds, such as a teletypewriter versus a fixed head disc, the programmer may wish to set up a multiple level interrupt scheme. Hardware and instructions are available on the NOVA (ECLIPSE) computers to allow the implementation of priority interrupts.· Each of the I/O devices is connected to a bit in the 16 bit priority mask. Devices which operate at roughly the same apeed are connected to the same bit in the mask. standard~mask Even though bit assignments have }ligher number bits assigned to low speed devices, no implicit ordering is intended. ~ The manner in which these priority levels are ordered is completely up to the programmer. The condition of the priority mask is altered by the MASK OUT instruction. Ir a bit in the priority mask is set to 1, then all devices in the priority level corresponding to that r bit will be prevented from requesting on interrupt when they complete. aa operation. from devices in t~at In addition all pending interrupt requests priority level are disabled. The priority mask bit for the ACTR is bit 8. If the receiving computer has many calculations to perform, it cannot handle an incoming ACTR transmission by continually testing the state of the Done. It is necessary then to use the interrupt system to allow the processor to do other computing between interrupts and only reference the ACTR when it has received a complete transmission. This scheme also allows the processor to recognize data transmission as soon as it is received rather than periodically checking the ACTR for a new mess.age. Use is made of the priority level interrupt scheme in operating systems such as Data General RDOS (Real Time Disc <'~ Operating System) and RTOS (Real Time Operating System). These· systems supply a multi-priority level interrupt handler. Devices are included in this handler either at system gederation or during run-time. When an··,'interrupt is detected by. the. hardware, the currently executing program interrupt dispatch program. i~ suspended and control goes to an This routine. directs contr·o1 to the correct servicing routine by using the devi~e code (obtained by an INTA instruction) as an index into an interrupt branch table. The entry in this table is the address of a device control table (DCT) associated with the device servic~ routine. This table contains the service mask that is to be ORed with.the current 27 interrupt mask while control is in the device service routine. This mask establishes whick devices if any will be allowed to interrupt the currently interrupting device. Since interrupts are enabled when control is passed to a device service routine, the interrupt service mask must contain the mask bit for the device being serviced. The handling of the ACTR through the facilities of RDOS/ RTOS relieves the programmer of the responsi bili ti es ·o:r maint ainig program continuity during interrupts and implementing a multile~el interrupt handler. RDOS/RTOS is very useful in handling two pr6blems which arise as a result of design constraints of the ACTR. IN a multi-tasking environment, there will be competition for system resources (the ACTR among many others). A task currently using the ACTR must be assured that no other routine will also attempt to initiate a data transfer. The RDOS/RTOS facility of sync words in a multi-tasking environment allows a routine to gain exclusive control of the ACTR hardware and software and maintain control until it has finished its transmission and any accompanying receptions. ACTR control would always be allocated on a priority basis and any requests for the ACTR, th~~ are issued while it is in use, would be queued until the ACTR became free • • When using the ACTR, the transmitting computer must await an acknowledgement of reception before sending more data. If both systems in the ACTR begin to transmit simultaneously, data could easily be lost when the ACTR receiver routines mistake incoming data for an acknowledgement of the data it has sent. 28 The user must design the ACTR handlers to be able to accommodate an occur.ence of this kind or so design the system configuration to eliminate the possibility of the two CPU's attempting to transmit simultaneousJ.y. In a master-slave environment, the competition for the AC'.l'R hardware between systems can never occur. In this mode, the master computer would always initiate communication between the two processors. The slave system would only transmit ·to fulfill requests from the master. The task facilities of RDOS/RTOS allows one task to be dedicated to servicing the ACTR in the slave CPU. This task would gain CPU control only when the ACTR receiver generates an interrupt. Once the message reception is completed, this task would determine what further action has to be taken. Appendix A of this report will deal with the implementation of a softvarechandler for the ACTR in a multi-tasking environment for a master/slave system. • 29 ACTR COMMAND DIA DIB DOA DOB NIO SKP t <r> <r> <r> (f) (f > (t) ac, ac, ac, ac, ACTR ACTR ACTR ACTR ACTR ACTR read receiver control bits read receiver data word send data word to transmitter send control bits to transmitter no I/O transfer skip if(t)is true BN tests tests tests tests BZ DN DZ f c for for for for Busy Busy Done Done = = = = 1 0 1 0 will clear Done and clear ACTR interrupt request will set Busy and begin transmission s CENTRAL PROCESSOR FUNCTIONS INTA ac vill return 4~ to specified accumulator if the ACTR is the nearest device to the processor requesting an interrupt MSKO ac will prevent the ACTR from generating an interrupt if bit 8 is set in the specified accumulator. IORST will clear the Done and Busy of the ACTR and the Interrupt Disable ~lag {equivalent of a MSKO with 8--= 11). The I_nterrupt Request of the ACTR will al.so be cleared. ACTR CONTROL SUMMARY Figure 9 30 In summary, the control logic for the ACTR arises quite logically out of the DG I/O structure. A small number Of I/o commands allow complete control of the ACTR and its link into the interrupt structure and the general control store of the central processor. instructions that Figure 9 contains a brief resume or· the dedicated ~ontrol the ACTR and the central processor that influence the ACTR as part of their general operation. fun~tions CHAPTER 4 CONCLUSIONS The transfer of usable information betveen any computer systems is always a complex undertaking: the information must be put into a format that the other processor can accept and act on, the integrity of the transferred information must be ensured, synchronization of the systems must be accomplished so that data is not lost betveen the systems and data must be moved between the machines as quickly as possible. The ACTR can fulfill the above requirements vhen used in the proper operating environment. The ACTR master/slave handler will transmit messages formatted by the user and perform parity checking on all received information. Since data is completely assembled in the ACTR receiver before it is read in and data ~ acknowledgements are necessary, processor-processor synchronization is not a problem. The slower speed of the ACTR, when compared with the MCA is out-weighed in many applications by its increased range and error checking capabilities. The reliability of the ACTR hardwate is such that its transfer rate can be safely increased by the ~limination of all error checking. (~he user. should however, use the ACTR diagnostic in APPENDIX B to ensure that the hardware transfer clocks are not marginally adjusted.) Minicomputer multiprocessor systems, such aa those based on Data General lIOVA and ECLIPSE processors, represent one of the most rapidly growing areas in computer development. 31 Their 32 inherent versatility and sizable computer pover make them an ideal medium for real-time instrumentation control and simulation systems. With the reliance these systems place on shared processor resources~ data transfer devices such as the ACTR will continue to be an important system compound. APPEMDIX A ACTR MASTER-SLAVE HANDLING ROUTINES An important function of any real time operating system is the efficient handling of input-output operations. Optimum usage of machine devices and central processor time in the ac. complishment of tasks is the real reason for designing and implementing a multi-tasking system. The responsibility of RDOS/RTOS I/O control is to react during normal program execution to the quests, making assignment~of structurin~ of I/O re- requests to machine devices when they are idle, and queuing requests for devices which are-busy. Through the queuing facility, RDOS/RTOS makes it possible to achieve maximum and continuous overlap of multi-tasks without direct intervention by the tasks themselves. The handler tor the ACTR in the master-slave environment conforms to these requirements, enabling tasks to access the ACTR with minimal pre-processing. The handler for the ACTR is composed of three sections: a transmission routine (SENDM)~ a reception routine (RECM) and. an identification and interrupt routine {IDACTR). These routines exist, with only minor differences, in both the master and slave processor. The call to the routine SENDM is similar in structure to a RDOS/RTOS SYSTEM call as it incorporates both an error and normal return. Control of SENDM is allocated on a priority basis to calling tasks through use of the RDOS/RTOS facility of sync 33 34 f1 DESTINATION WORD COUNT MESSAGE # (ACTUAL MES.SAGE) ACTR MASTER-SLAVE MESSAGE FORMAT ·Figure 1¢ 35 words. Once a task gains control of SENDM through a sync word, it maintains exclusive control until all data transmissions requested by that task are completed. A calling task passed SENDM the address of the message to be transmitted. This message must be constructed in accord with the format illustrated in Figure IO. The actual message transmitted begins with the word count; the first two words are for the use of SENDM only and are not included in the word count. The control bits, which accompany eac~ transmitted data word, are used to indicate the start of a transmission, erid of transmission and the parity of the transmitted data. The control bits are generated by SENDM and are not passed beyond the ACTR routines. After each data.word is transmitted, the SENDM routine goes into task suspension aw.aiting the reception of the data acknowledgement from the receiving computer. Once the reception acknowledgement is received, it is checked for a data error message. If a data.error is confirmed, the transmission is terminated, ACTR control is released and the error return is taken from SENDM. If a task in the master CPU, that calls SENDM expects a return message from the slave CPU, the DESTINATION word in the message that it passes to SENDM must contain the address for the reception of the incoming data. word must be set to -1. When If no return is expected, this SE~D~ has completed transmitting its message, the DESTINATION is checked for a valid address. If it is found, control is passed. to RECM, the reception handler, otherwise the control of SENDM is released to the.system and the normal return is taken back to the calling task. The reception routine, RECM, is not directly accessible to the user. It is called by SENDM in the master CPU if a return message is expected from the slave CPU. In the slave CPU, RECM is part of the reception task (ACTR} which is r.esponsible for all receptions and transmission in that processor. RECM awaits each i_ncoming data transmission by a REC to a sync word. This sync word is activated by an IXMT from the ACTR interrupt handler upon the reception of data into the re- . ceiver buffers. Once RECM is unsuspended, a parity check is performed on the incoming data. If a parity error is detected in the received words, an error message is returned to the transmitting compu~er in tl1:e data acknowledgement. If no ·error is detected, the received data is stored, and a successful reception is signalled. In the master CPU, the core area for the reception of data from the slave is contained in the DESTINATION word of the message that initiated the response from the slave. Once the entire message is received, control of the ACTR is returned to the system and the normal return is taken from SEDDM. In the event of a re-c'eption error, ACTR control is relinquished and the error return is taken. The slave CPU ~ses RECM as part of the ACTR service task. The system initializer is responsible for tasking off this monitoring task {entry point ACTR}. is allowed any access to the ACTR. No other task in the slave CPU The slav• uses the received message number to determine the core area that is to be used to 37 store the incoming transmission. This message number also de- termines which subroutine is to be called to handle the message after it has been completely assembled in the core. After control is returned from this post-reception processing, the ACTR task awaits the next message. The message handling routines called from RECM in the slave CPU may call SENDM to return a message to the master com• puter or introduce changes in the control functions of the slave CPU. The action taken by these called handlers is left completely up to the user. For the ACTR handlers, RECM and SENDM, to operate properly, it is necessary that an interrupt handler for the ACTR be included in the interrupt dispatch table of RTOS/RDOS. This can be done either at SYSGEN or during the execution program. Any device that issues an interrupt that:'.1s not included in the dispatch table will have its interrupt cleared with a resulting loss of information. The routine IDACTR links the ACTR interrupt handler (IACTR) ·into the RTOS/RDOS interrupt structure through use of a run-time system. call. to the system. It then releases control of the SENDM sync word By locking out SENDM until the device identification is completed, the users of the ACTR are assur.,ed that no information will be lost during system initialization. As was mentioned before, SENDM and RECM vary slightly between the master and slave computers. Through use·or the cap- abilities of the DG MACRO Assembler, one source file can be made to include both the master and slave versions. The assembly of 38 the respective relocatable binary files is controlled by an equate switch (MASTER). When the switch MASTER= 1, the master CPU version is assembled and when MASTER erated. = 0, the slave code is gen- This switch must be defined in an equate :file which proceeds the ACTR handler source :file (INTERLINK) in the ~AC string. .The version of the ACTR handler presented in this is that •ppropriate to the slave CPU. Appendi~ Those parts o:f the source :file that appl.ied only to the master computer are.'.listed but have not generated any code. 0001 LINK 01 02 09:21:06 02/27/77 MACRO REV 04.00 39 03 04 05 06 07 08 09 10 11 12 13 15 16 17 18 19 20 21 22 23 ' .·****************************************************** ' ; 01 TITLE .TITL LINK ; ACTR. HANDLER .' .,·********.*********************************************: ' ; 02 IDENTIFICATION .' . .'' NAME: INTERLINK.SR· . PURPOSE: 24 ' 25 .;' .,,• ., ., ., AUTHOR: 26 27 28 29 30 31 32 33 ,.. THIS PROGRAM SUPPLIES TRANSMISSION ANO RECEPTION ROUTINES FOR THE ACTR MICHAEL BRETT OR:{:GINAL ISSUE DATE: ISSUE: 1/2/77 1 DATE OF ISSUE: 1/2/77 ,·******************************************************~ • !0002 LINK 40 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18. . 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 . 34 35 36 37 38 39 40 41 42 43 44 45 46 .,, .,; ·******************************************************~ 03 DESCRIPTION .,; NARRATIVE: ., . ., .;, .., ., ., .., .,, .., , .;, ., ., ., ., . ., . ., ., .,; . ., ., . ., THIS ROUTINE IS A SOFTWARE INTERFACE TO THE ACTR. IT OPERATES IN A MASTER/SLAVE ENVIROMENT WITH THE MASTER CPU INITIATING ALL DATA TRANSFERS • MESSAGE FORMAT IS I I I I I I 0 DESTINATION ·WORD COUNT MESSAGE f (ACTUAL MESSAGE) WORD COUNT DOES NOT INCLUDE LEADING 0 OR DESTINATION. MESSAGE # CORRESPONDS TO A TABLE ENTRY IN SLAVE CPU, IGNORED IN RECEPTION IN MODEL • DESTINATION IN MODEL IS -1 IF NO RETURN MESSAGE IS EXPECTED; CONTAINS RECEPTION ADDRESS IF RETURN IS EXPECTED; IGNORED IN THE SLAVE • FIRST 2 WORDS OF MESSAGE ARE NOT TRANSMITTED. WHEN SENDM IS CALLED, AC2 MUST CONTAIN A POINTER TO THE START OF THE MESSAGE. AN STX IS SENT WITH THE WORD COUNT AND AN ETX WITH THE LAST WORD. THE RECEIVING. COMPUTER WILL PERFORM A PARITY CHECK ON THE INCOMING DATA. IF AN ERROR IS DETECTED, IT WILL SEND AN ERROR MESSAGE IN THE DATA ACKNOWLEDGEMENT. IF SENDM RECEIVES AN ERROR MESSAGE NO FURTHER TRANSFERS WILL BE ATTEMPTED AND THE ERROR EXIT WILL BE TAKEN • IDACTR WILL IDEF THE ACTR TO RTOS/RDOS AND RELEASE THE SENDM SYNC WORD SO THAT SENDM CAN BE ACCESSED. THE SLAVE CPU RECEPTION TASK (.ACTR) WILL USE THE MESSAGE # TO FIND THE RECEPTION AREA FROM AN EXTERNAL TABLE (TABLE) AND TO FIND THE HANDLING ROUTINE FOR THE MESSAGE FROM ANOTHER EXTERNAL TABLE (H~DLR) • • ACTR MUST BE TASKED OFF DURING SYSTEM INITIALIZATION • ,·******************************************************* .41 !0003 LINK 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ,·******************************************************* . ,. ; 04 CALLING SEQUENCE .., ; .,, .,; ., ..' ., , ' """""""'SENDM"" ........ AC2: START OF MESSAGE HEADER CALL: JSR @.tl SENDM ERROR RETURN NORMAL RETURN RETURN: NONE ALL ACCUMULATORS AND CARRY DESTROYED .; .., .,' ., "'""""IDACTR ........ NO ACCUMULATORS PASSED CALL: JSR @.+l IDACTR RETURN: NONE ALL ACCUMULATORS AND CARRY DESTROYED ; ; ; ........... ACTR""'"'"' CREATED AS ACTR RECEPTION TASK IN SLAVE CPU I ., ,·******************************************************* !0004 LINK 01 02 03 04 05 06 07 08 09 10 11 12 13 42 ·****************************************************** I 05 SUBROUTINES ; ; ; ; ; THE LINK STRING MUST INCLUDE A FILE WHICH DEFINES THE PARAMETER MASTER. MASTER=l FOR A MASTER CPU COMPILE AND MASTER=0 FOR A SLAVE CPU COMPILE. THIS EQUATE MUST APPEAR FIRST IN MAC STRING ., 14 , ·****************************************************** 15 ; 16 17 18 19 20 21 22 23 24 25 .; 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 06 EXTERNAL DATA I .EXTN .IXMT .EXTN .XMT .EXTN .REC .EXTN .UIEX 000001 .IFE MASTER .EXTD HNDLR .EXTD TABLE .ENDC ; ; ; ; ; ; ; RDOS/RTOS TASK CALL RDOS/RTOS TASK CALL RDOS/RTOS TASK CALL RDOS/RTOS TASK CALL SLAVE COMPUTER LOCATION OF HANDLER TABLE LOCATION OF RECEPTION . .,,·***************************************************** . I .; 07 PROGRAM I ; 000040 .DUSR ACTR=40 006401 .DEUR EJSR=6401 . I .ENT IDACTR .ENT SENDM 000001 .IFE MASTER .ENT .ACTR .ENDC .' .NREL ; PAGE 1 RELOCATABLE IACTR: ., ., ...,, STA 2,AC2 STA 3,AC3 DIA l,ACTR: STA l,RCONT DIBC l,ACTR STA l,RDATA ADC 1,1 • IXMT HALT LOA 2,AC2 ·LOA 3,AC3 .UIEX 0 0 AREA 377 IAC'I'R • BLK 8. .,, ., ., .;, .. ., I ; .,, ., ; ?\C.,2 STORAGE AC3 STORAGE ., COMPATIBILTITY WITH RTOS INTERRUPT SERVICE MASK , INTERRUPT SERVICE POINTER RTOS SAVE.AREA .. ; I !0006 LINK 01 02 03 04 05 06 07 08 ; 44 ; AC2: MESSAGE ADDRESS ;CALL: JSR @.+l ; SENDM ; (ERROR RETURN) ; (NORMAL RETURN) ;RETURN:NO MESSAGES RETURNED ; ALL ACCUMULATORS AND CARRY ; DESTROYED 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41. 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 ,,...., ACTR TRANSMISSION ROUTINE SENDM: 00047'055000 00050'020465 00051'077777 00052'050460 00053'151400 00054"151400 00055'050464 00056'025000 00057'044466 00060'014465 00061'030456 STA 3, 0, 2· LOA 0,SSEND .REC STA 2,HEAD INC 2,2 INC 2,2 STA 2,DATPTR LOA 1,0,2 STA l,WC DSZ WC LOA 2,STX 00062'034457 LOOP: 00063'035400 00064'076040 LOA 3,DATPTR LOA 3,0,3 DOB 3,ACTR 00065'102400 00066'151004 00067 'HH400 SUB 0,0 MOV 2,2,SZR INC 0,0 00070'175122 00071"101400 00072'175004 00073'000775 00074'024453 00075 'HH222 00076'133000 MOVZL 3,3,SZC INC 0,0 MOV 3,3,SZR JMP .-3 LOA 1,.14 MOVZR 0,0,SZC ADD 1,2 00077'071140 DOAS 2,ACTR 00100'020433 LOA 0,TRANSM 00101'000051' .REC LOA l,RCONT 00102'024441 00103'125004 MOV 1,1,SZR 00104'000422 JMP FLOP LOA l,ETX 00105'024433 00106'147414 AND# 2,1,SZR 000000 .IFN MASTER J~1P IFBACK .ENDC 000001 .IFE MASTER 00107'000407 JMP NEXIT ; ; ; ; ., SAVE RETURN ADDRESS IN HEADER SENDM SYNC ADDRESS CAPTURE ACTR CONTROL SAVE ADDRESS OF MESSAGE ; ; ; ; POINT AC2 PAST HEADER WORDS STORE IN TRANSMISSION POINTER GET WORD COUNT SAVE IT REALLY NEED WC-1 ; GET START CONTROL BITS ; ; ; ; GET GET PUT NOW DATA ADDRESS ACTUAL DATA IN TRANSMITTER BUFFER DETERMINE PARITY ; ; ; ; ; ; ; ; ; ; ; ; ; ; IS CONTROL WORD NON-ZERO ? YES ••• INC PARITY COUNTER NOW DO DATA WORD IS SHIFTED BIT SET ? YES •• INC PARITY COUNTER FINISHED DATA WORD ? NO •• CONTINUE IN LOOP GET PARITY ON BITS ODD # OF BITS SET ? YES ••• PUT ODD PARITY BITS INTO CONTROL WORD PUT IN TRANSMITTER BUFFER START TRANSMISSION WAIT. FOR AC~NOWLEDGEMENT ; ; ; ; ; ; ; ; GET CONTROL BITS IS IT NON-ZERO ? YES ••• TRANSMISSION ERROR GET END OF TRANSMISION BITS WAS END OF MESSAGE SENT ? MASTER CPU YES ••. CHECK IF MESSAGE IS TO RETURNED ; ; ; ; SLAVE CPU TAKE NORMAL EXIT NO RETURN MESSAGES IN SLAVE CPU .. !0007 LINK 01 02 03 00110'152400 SUB 2,2 04 00111'014434 DSZ WC 05 00112'000402 JMP .+2 06 00113'030425 LDA 2,ETX 07 00114'010425 ISZ DATPTR 08 00115'000745 JMP LOOP 09 10 11 12 13 000000 .IFN MASTER 14 IFBACK: LOA 2,HEAD 15 16 LOA 2,1,2 COMi 2,2SNR 17 18 JMP NEXIT 19 JMP RECM 20 21 .ENDC 22 23 24 25 45 DIDN'T SEND LAST WORD NORMAL CONTROL BITS ; DECREMENT WORD COUNT ; NOT AT ZERO ; AT ZERO •• GET ETX BITS INCREMENT STORAGE POINTER SEND NEXT WORD ; ; ; ; ; ; ; ; MASTER CPU MESSAGE RETURN CHECK GET START OF MESSAGE GET DESTINATION ADDRESS IS IT -1 ? YES •• NO RETURN EXPECTED NO •• RECEIVE MESSAGE AC2=RECEPTION AREA 00116'024426 NEXIT:· LDA 1,.3 00117'032413 LDA 2,@HEAD 00120'133000 ADD 1,2 ; ; ; ; SETUP FOR NORMAL RETURN AC3=3 GET RETURN ADDRESS BUMP BY 3 FOR NORMAL RETURN 00121'020414 EXIT: 00122'126000 00123'000010' 00124'063077 00125'001000 LOA 0,SSEND ADC 1,1 .XMT HALT JMP 0,2 ; ; : ; ; ; SENDM EXIT GET ADDRESS OF SENDM SYNC MAKE ACl NON-ZERO RELEASE SENDM CONTROL SYSTEM ERROR!!! RETURN TO CALL 00126'032404 FLOP: 00127'151400 00130'151400 00131'000770 LOA INC INC JMP 26 27 28 29 30 31 32 33 34 35 36 37 38 35) 40 41 42 43 44 45 46 \ 2,@HEAD 2,2 2,2 EXIT ~ SETUP FOR ERROR EXIT ; GET MESSAGE ADDRESS ; BUMP BY 2 FOR ERROR RETURN ., ; LEAVE SENDM 46 !0008 LINK 01 02 03 04 05 06 07 CONTROL WORDS FOR ACTR ROUTINES 08 09 10 11 12 13 14 15 16 17 18 00132'000000 HEAD: 00133'000134'TRANS: 00134'000000 00135'000136'SSEND: 00136'000000 0 .+l 0 .+1 0 00137'000001 STX: 1 00140'000002 ETX: 2 00141"000000 DATPTR: 0 19 20 21 22 23 24 25 26 27 28 29 \ \ .' START OF MESSAGE .' TRANSMISSION COMPLETED .' SENDM CONTROL SYNC ..' STX CONTROL BIT ETX CONTROL BIT ' ; MESSAGE POINTER . 00142'000000 RDATA: 00143'000000 RCONT: 0 0 .'' RECEIVED RECEIVED 00144'000003 . 3: 00145'000000 WC: 3 .' WORD 00146'000040 .40: 00147'000014 .14: ACTR 14 0 DATA WORD CONTROL WORD COUNT DEV CODE OF ACTR PARITY INDICATORS SYNC 47 !0009 LINK 01 02 03 04 000001 .!FE MASTER 05 06 00150'006401 .ACTR: EJSR IDACTR 000000· 07 08 AC~R ~O I I 09 .ENDC 10 11 12 13 14 LDA 0,TRANS 15 00152'020761 RECM: 16 00153'000101· .REC JSR PARITY 17 00154'004451 LDA 0,STX 18 00155'020762 LDA l,RCONT 19 00156'024765 20 00157'107415 AND# 0,1,SNR 21 00160'000422 JMP AHEAD 000000 .IFN MASTER 22 LDA 1, RDATA' 23 24 STA 1,WC 25 .ENDC 26 000001 .IFE MASTER 27 28 29 LOA 2,RDATA 30 00161'030761 ADCZL 3,3 31 00162'176120 ADD 3,2 32 00163'173000 STA 2,WC 33 00164'050761 34 35 LOA 0,TRANS 36 00165'020746 37 00166'000153' .REC JSR Pl\RITY 38 00167'004436 39 LOA 3,RDATA 40 00170'034752 41 00171'030002$ LOA 2,TABLE ADD 3,2 42 00172'173000 LOA 2,0,2 43 00173'031000 44 LOA l,HNDLR 45 00174'024001$ 00175'137000 ADD 1,3 46 00176"035400 47 LOA 3,0,3· STA 3,. HNOLR 48 00177'054402 JMP RECM 49 00200'000752 50 51 00201'000000 .HNDLR: 52 .ENDC " '\ RECEIVER TASK . SLAVE IDENTIFY SYSTEM . NOW AWAIT RECEPTION IN ; ROUTINE RECM RECEPTION ROUTINE RECEIVER WAIT SYNC WAIT FOR RECEPTION I DO PARITY CHECK NOW CHECK FOR STX I GET CONTROL BITS , WAS STX SENT ? NO. • JMP AROUND I , MASTER CPU , GET WC , WC=FIRST WORD RECEIVED STORE IT IN we I . . . . . . . . . SLAVE ; I CPU ; GET RECEPTION AREA FOR SLAVE ..,. RDATA CONTAINS WC AC3=-2 .., SUBTRACT 2 FROM WORD COUNT . TAKES CARE OF we AND I I I MESSAGE i . GET RECEPTION SYNC ., WAIT FOR RECEPTION I . I CHECK PARITY . GET MESSAGE ff ., START OF RECEPTION ., GeT RECEPTION AREA I ., GET ., GET TABLE POINTER RECEPTION AREA START OP TABLE ., GET HANDLER ADDRESS . IN POINTER ., STORE RECEIVE NEXT WORD . HANDLING ROUTINE POINTER I I ' \. !0010 LINK 01 02 03 00202'034740 04 00203"055000 05 00204'014741 06 00205'000402 07 00206'000405 08 00207'102400 09 00210'061140 10 00211'151400 11 00212'000740 12 13 14 15 0021.3'020725 16 00214'107415 17 00215'000405 18 00216'102400 19 00217"061140 20 000000 21 22 23 24 000001 25 00220'006761 26 00221'000731 27 28 29 30 31 32 00222'126000 33 00223'065140 34 000000 35 36 37 38 000001 39 40 00224'000726 41 48 AHEAD: LDA 3,RDATA STA 3,0,2 DSZ WC . JMP .+2 JMP FINISH SUB 0,0 DOAS 0,ACTR INC 2,2 JMP RECM FINISH: LOA 0,ETX AND# 0,1,SNR J.MP ERROR SUB 0,0 DOAS 0,ACTR .IFN MASTER JMP NEXIT RECEIVED DATA . GET STORE IT . DECREMENT WC ., NOT AT 0 ••• CONTINUE I I CHECK FOR ETX AC0=0 SEND DATA OK MESSAGE INCREMENT POINTER , GET NEXT RECEPTION ; ; . ., GET ETX BITS ETX RECEIVED ...,, WAS NO ••• ERROR •• PUT AC0=0 ., YES SEND DATA OK MESSAGE I ., MASTER CPU RECM . COMPLETED TAKE NORMAL EXIT I .ENDC .IFE MASTER JSR @.HNDLR JMP RECM . SLAVE CPU TO ROUTINE ... JUMP AWAIT NEXT MESSAGE , TO HANDLE RECEPTION I I I .ENDC ., ERROR: ADC 1,1 DOAS l,ACTR ERROR EXIT FROM ; RECM ;. ACl=-1 SEND DATA ERROR MESSAGE , MASTER CPU TAKE ERROR EXIT I FROM SENDM .. .. . . SLAVE I I . IFN MASTER JMP FLOP I .ENDC .IFE MASTER JMP RECM .ENDC CPU •I AWAIT NEXT MESSAGE I . !0011 LINK 01 02 03 04 00225'102400 PARITY: SUB 0,0 05 00226'024715 LDA l,RCONT 06 00227'125122 MOVZL 1,1,SZC 07 00230'101400 INC 0,0 08 00231'125004 MOV 1,1,SZR 09 00232'000775 JMP .-3 10 00233'024707 LOA l,RDATA 11 00234'125122 MOVZL 1,1,SZC 12 00235'101400 INC 0,0 13 00236'125004 MOV 1,1,SZR 14 00237'000775 JMP .-3 15 16 17 00240'024703 LOA l,RCONT 18 00241'101212 MOVRi 0,0,SZC 19 00242'000405 JMP ODD 20 21 22 00243'020704 LOA 0,.14 23 00244'107405 AND 0,1,SNR 24 00245'001400 JMP 0,3 25 00246'000754 JMP ERROR 26 27 00247'~20700 ODD: LOA 0, .14 28 00250'107400 AND 0,1 29 00251'106405 SUB 0,1,SNR JMP 0,3 30 00252 001400 31 00253'000747 JMP ERROR 32 33 34 .END 35 1 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; RECEPTION PARITY CHECK ZERO PARITY COUNTER GET CONTROL BITS BIT SET ? YES .• INC PARITY COUNTER FINISHED WORD ? NO .•. CONTINUE IN LOOP GET DATA WORD BIT SET IN DATA WORD ? YES •• INC PARITY COUNTER FINISHED DATA WORD ? NO •• CONTINUE IN LOOP PARITY COUNT LOOP COMPLETED GET CONTROL BITS EVEN t OF BITS SET NO ••• CHECK THAT ODD PARITY BITS ARE SET FOR EVEN NONE ARE SET GET PARITY MASK ARE PARITY BITS SET ? NO •• TAKE NORMAL RETURN YES •• TAKE ERROR EXIT ; ; ; ; ; GET PARITY ASK AND CONTROL TO PARITY ARE BOTH BITS SET ? YES •• TAKE NORMAL RETURN NO •• TAKE ERROR EXIT ; ; **00000 TOTAL ERRORS, 00000 PASS 1 ERRORS 0012 LINK 50 000032~ AC2 000033' AC3 AHEAD 000202· AREA 000037' AYOCT 000034' DAT PT 000141' ERROR 000222' 000140' ETX EXIT 000121· FINIS 000213' FLOP 000126' HEAD 000132' HNDLR 000001$ XO IACTR 000016' IDACT 000000· EN LOOP 000062' MAS TE 000000 NEXIT ODD PARIT RC ONT RDATA RECM SENDM SS END STX TABLE TRANS WC .14 .3 .40 • AC'rR .AYDC .HNDL .IXMT .REC .RTRN .UIEX .XMT 000116' 000247' 000225' 000143' 000142' 000152' 000047' 000135' 000137, 000002$ 000133' 000145' 000147' 000144' 000146' 000150' 000014' 000201' 000025' 000166' 000015' 000031' 000123' EN XD EN XN XN XN XN 5/31 5/32 9/21 5/48 5/26 6/18 10/17 6/47 7/33 10/07 6/46 6/15 4/23 5/31 . 4/35 6/24 4/22 9/27 6/54 11/19 9/17 5/34 5/37 7/19 4/36 5/18 6/22 4/24 6/42 6/20 6/36 7/28 5/13 4/38 5/14 9/48 4/18 4/20 5/12 4/21 4/19 5/41 5/42 10/03 5/51 5/48 6/24 10/30 7/06 7/44 10/15 7/41. 7/15 9/45 5/50 5/11 7/08 4/37 10/20 7/18 11/27 9/38 6/44 8/20 9/15 6/11 6/13 8/16 9/41 8/11 6/21 8/27 8/23 8/26 9/06 5/26 9/51 5/39 6/14 5/225/43 5/20· 5/45 5/46 7/07 11/25 8/17 8/18 11/31 10/15 10/36 7/29 7/41 8/10 6/49 10/24 7/28 6/53 10/35 10/21 7/13 10/39 9/05 9/2 11/04 8/21 9/23 9/49 9/19 9/30 10/11 11/05 9/40 10/26 11/17 10/03 10/40 11/l 9/33 10/' 9/06 7/33 9/18 ·8/13 9/15 7/04 11/22 9/36 8/24 11/27 9/25 9/16 9/37 10/25 6/43 5/27 7/35 APPENDIX B ACTR DIAGNOSTICS 51 52 000 l 01 02 ACTR 10:49:23 01/08/77 MACRO REV 04.00 ;******************************************************* _; 03 04 J 05 06 07 08 09 j 10 1I 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 - J NAME: ACTR.SR ASYNCHROUS COMUNICATION TRANSMITTER RECEIVER DIAGNOSTICS AUTHOR: MICHAEL BRETT j 1 ; ; REVISION HISTORY: REV DATE 00 AUG 1/76 J ; NARRATIVE: ; THIS PROGRAM WILL FIRST DISABLE ROOS. THE F'LAGS AND ; INTERRUPTS OF' THE ACTR WILL THEN BE TESTED. NEXT ; TRANSMISSION TESTS WILL BE CARRIED OUT. APPROPRIATE 1 ERROR MESSAGES WILL BE OUTPUTTED. EXECUTION OF' THE _; PROGRAM WILL BE TERMINATED WHEN AN INTERRUPT OR ; FLAG ERROR IS DETECTED. THE ERROR OUTPUT PROM THE J THE .TRANSMISSION PHASE CAN BE TERMINATED BY TYPING J CONTROL C. ERROR STATISTICS WILL STILL BE OUTPUTTED. ; AT THE TEST TERMINATION, CONTROL IS RETURNED TO ROOS. j OPERATION: CONNECT RECEIVER INPUT TO TRANSMITTER OUTPUT AND START PROGRAM ; THIS IS A STAND ALONE TEST OF' A SINGLE ACTR BOARD J ANO REQUIRES USE OF' THE RTC. J J J J J NOTE: ; TH IS PROGRA1'V1 CAN BE USED TO TEST THE INTERPROCESSOR J LINK BY RUNNING THIS PROGRAM IN THE MASTER CPU AND J USING THE SLAVE CPU TO REFLECT THE DATA. J }******************************************************* !0002 ACTR 01 03 04 05 06 07 08 09 10 .TITL ACTR J ACTR DIAGNOSTIC .ENT START ; START Or DIAGNOSTIC J GET SYSTEM RTC FREQUENCY J J J J J J J INCREMENT IT BY 1 STORE 1T DISABLE INTERRUPT GET RDOS INTERRUPT POINTER SAVE IT GET ADDRESS OF. SERV. ROUTINE STORE IT IN LOCATION 1 J CLEAR INT MASK J 53 000401 .NREL .DUSR ACTR=40 000040 1l 12 13 .SYSTM 14 00000'006017 START: .GHRZ 15 0000 1 '02 1000 JMP .+1 16 00002'000401 INC 0.,0 17 0000 3' 101400 STA 0.,TIME 18 00004'04003419 00005'060277 INTDS 20 00006 '020001 LDA 0.tl 21 00007'040035STA 0.,SAVE 22 00010'020022LDA 0.,INTPtR 23 000 l l '040001 STA 0.t I 24 00012' 102400 SUB 0.,0 25 0 0 0 l 3 0 6 20 7 7 DOB 0.tCPU 26 00014 00600121JSR @RITER 27 00015'000446' MESSA 28 000 l 6 06 3511 SKPBZ TTO 29 00017'000777 JMP • - t 30 00020 0626 77 ·IORST 31 00021 06344121 SKPBN ACTR 32 00022 000404 JMP .+4 33 00023'01216000JSR @RITER 34 00024 '!2100520 MESI 35 00025'002001JMP @END 36 00026 '063640 SKPDN ACTR 37 00027 '000404 JMP .+4 38 00030'006000JSR @RITER 39 00031 '000544' MES2 40 00032. 002001JMP @END 41 00033'102400 SUB 0.,0 42 00034. 040005STA 0.tTAG 43 00035' 101400 INC 0.,0 44 00036'040002STA 0.tTAGt 45 00037'040003STA 0.tTAG2 46 00040 040004STA 0.tTAG3 47 00041 '061014 DOA 0.tRTC 48 49 00042'060177 INTEN 50 00043'060114 NIOS RTC 51 00044 000401 JMP • + 1 52 00045'000777 · JMP .- t 53 54 55 56 57 00046'126440 CLOCK: SUBO l .t 1 58 0004 7. 044002STA J.,TAGI 59 000 50 t 125400 I NC t _, 1 60 000 51 • 044005STA I • TAr. I I I J WRITE TITLES WAIT FOR TTO TO FINISH I J J J J J J J J J J J J J CLEAR ALL FLAGS SK IP Ir BUSY= 1 OK FLAG 0 ERROR!!!!! BUSY SHOULD EQUAL 0 TERMINAL ERROR SKIP Ir DONE = 1 OK FLAG 0 ERROR!!!!! DONE SHOULD EQUAL 0 TERMINAL ERROR SET UP INTERRUPT FLAGS .TAG = 0 I I I I t J J J TAGl=I TAG2=1 TAG3= I ; SET~CLOCK ; ; ENABLE INTERRUPT START CLOCK PERFORM NO-OP TO WAIT FOR INTERRUPT J J J PREVIOUS SECTION USED TO STABILIZE RTC FOR ACTR INTERRUPT TESTS J TAG! =0 I T ll.n:::: 1 J J FREQUENCY TO 10HZ 0003 ACTR 01 00052'04400302 00053'04400403 00054. 060114 04 05 00055'060140 06 00056'060177 07 00057'000401 08 00060'000777 09 10 STA 1,TAG2 STA 1,TAG3 NI OS RTC NIOS ACTR I NTEN JMP .+1 JM? ·-1 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 00061'063740 BACK: 00062'000404 00063'00600000064'000572' 00065'00200100066'060240 00067'063440 00070'00040'4 00071 '00600000072'000616' 00073'00200100074'063640 00075'000404 00076'00600000077'000642' 00100'00200100101. 126400 00102'0440030010 3. 125400 00104'04400500105'0440023~ 00106'04400434 '110107'060114 35 00110'060177 36 00111 • 000401 37. 00112. 000777 38 39 40 41 42 43 44 45 46 47 48 00113'024006-MASK: 49 00114'06607.7 50 00 115. 1264Ll0 51 00116'04400452 00117'125400 53 00120'04Ll00254 00121. 04400555 00122'04400356 00123 '060114 57 00124'060140 58 00125'060177 59 00126'000401 60 00127'000777 SKPDZ ACTR JMP .+4 JSR @RITER MES21 JMP @END NIOC ACTR SKPBN ACTR JMP .+4 JSR @RITER MES22 JMP @END SKPDN ACTR JMP .+4 JSR @RITER MES23 JMP @END SUB t,1 STA 1,TAG2 I NC 1, 1 STA 1.. TAG STA 1,,TAGl STA 1,TAG3 NIOS RTC NIOS CPU JMP • + 1 JMP .-1 LDA 1.-.200 MSKO 1 SlJBO 1, 1 STA 1,TAG3 I NC 1,, 1 STA 1,,TAGl STA 1.-TAG STA 1,TAG2 NIOS RTC NIOS ACTR I NTEN JMP • + 1 JMP ·-1 J J J 1 J J J J J J J J TAG2= 1 TAG3= 1 START RTC RTC STABILIZED AT 10 HZ START TRANSMITTER ENABLE INTERRUPT. WAIT FOR INTERRUPT CLEAR FLAG TEST SKIP Ir DONE=0 OK DONE IS 1 ERROR PRINT ERROR MESSAGE J J J J J CLEAR DONE AND BUSY IS BUSY 0 YES OK NO,, ERROR!!!!! WRITE ERROR MESSAGE TERMINAL ERROR IS DONE 0 YES OK NO,, ERROR! ! ! ! ! WRITE ERROR MESSAGE TERMINAL ERROR J TAG2=0 J J J J J TAG=1 TAG1=1 TAG3=1 START RTC ENABLE INTERRUPT J WAIT FOR INTERRUPT J J J PRECEDING TESTS.IP NIOC WILL CLEAR INTERRUPT REQUEST OF' ACTR J J J TEST FOR ACTR MASK OUT ACTR MASK MASK OUT ACTR INTERRUPT J TAG3=0 J J J J J J J TAG1=1 TAG= 1 TAG2=1 START RTC START TRANSMITTER ENABLE INTERRUPT NO-OP F'OR INTERRUPT J J J J J J J 54 0004 ACTR 01 02 03 04 05 06 07 08 09 00130'006000-CONT: 10 00131 '001220' 11 00132'02002712 00133'04001213 00 1 34. 102400 14 00135°04000715 00136'04001016 00137'04001317 18 00140'022012-LOOP: 19 00 141 '0140 l 220 00142. 000402 21 00143'000445 22 00144'02601223 00145'01401224 00146'000402 25 00 14 7. 000441 26 0 0 1 5 0 • 0 3 0 0 1 4 27 00 1 51 • 14 7 400 28 00 152.061240 29 00153'066140 3eJ 00 154.06 3640 31 00155'000777 32 00156'070440 33 00157'075640 34 35 00 1 60 '0400 l 536 00161 '04401637 00162'05001738 00163.05402039 00 1 64. 14241 5 40 00165. 000403 41 00166'004541 42 00167'01000743 00170°02401644 00 1 71 '0440 1 545 00172'03402046 001 73 '05401 747 00174'136415 48 0 0 1 7 5 • 0 0 0 7 4 3 49 50 00176'01001051 00177'01401352 00200 '000402 53 00201 '000403 54 00202. 024021. 55 00203'004462 56 00204°01001357 00205. 000401 58 00206. 004521 59 00207'000731 60 00210'006000-rlNISH: 55 JSR @RITER MES31 LDA 0,NO ST A 0, ST RP TR SUB 0,0 STA 0,CTI STA 0,CT2 STA 0,STOP LDA 0,@STRPTR DSZ STRPTR JMP .+2 JMP rlNISH LDA 1 , @ST RP TR DSZ STRPTR JMP .+2 JMP rlNISH LDA 2,. l 7 AND 2,1 DOAC 0,ACTR DOBS t, ACTR SKPDN ACTR JMP • - 1 DIA 2,ACTR DIBC 3,ACTR STA 0, TEM0 . STA 1, TEM 1 STA 2, TEM2 STA 3,TEM3 SUB# 2,0,SNR JMP .+3 JSR TRANS lSZ CTI LDA t, TEM 1 STA 1, TEM0 LDA 3, TEM3 STA 3, TEM2 SUB# 1, 3, SNR JMP LOOP ISZ DSZ JMP JMP LDA JSR ISZ JMP JSR JMP JSR CT2 STOP .+2 ; IF EXECUTION REACHES HERE ; FLAG TESTS COMPLETED ; ALL FLAGS AND INTERRUPTS ARE ; OPERATIONAL ; NOW PROCEEDING WITH ; TRANSMISSION TESTS ; WRITE TEST DESCRIPTIONS ; NO. OF WORDS TO BE TRANSMITTED ; LOOP COUNTER rOR TRANSMISSION ; ZERO ERROR COUNTER #1 ; ZERO ERROR COUNTER #2 ; STOP IS rOR PRINT SUPPRESS ; ; ; ; ; ; ; ; ; ; ; ; J J ; ; ; ; LOAD DATA WORD LOOP COMPLETED ? NO YES, WRITE OUT TRANS. STATS LOAD CONTROL WORD LOOP C~~PLETtD ? NO YES, WRITE OUT TRANS. STATS. 11 IS A 4 BIT MASK CONTROL WORD IS 4 BITS LONG OUTPUT DATA WORD TO BUFFER OUTPUT CONTROL WORD TO BUFrER HAS DATA BEEN RECEIVED NO READ DATA WORD rROM RECEIVER READ CONTROL BITS FROM RECEIVER SAVE ; ALL ; THE ACCUMULATORS ; DOES REC. = TRANS. DATA ; YES J NO, ERROR! ! ! ! ! ! ; INCREMENT ERROR COUNTER J ; ; TEM0=TEM1 ; TEM2=TEM3 J DOES REC. = TRAN. CONTROL BITS ; YES ; NO ERROR!!!!!!! ; . INCREMENT ERROR COUNTER ; STOP=l FOR PRINT SUPPRESS .+3 t,STAR OUTPT STOP GET ASCII FOR STAR OUTPUT IT ; RESTORE STOP J J .+J TRANS LOOP @RITER ; OUTPUT ERROR INFORMATION ; WR I TE I NrORMAT ION 0005 ACTR 01 00211 '001037' 02 00212'02401003 00213'004456 04 00214'00600005 00215'001054' 06 00216'02400707 00217'004452 08 00220'00600009 0 0 2 2 1 ' 0 0 1 10 1 • 10 00222'006000-ENDUP: 11 00223. 00 l 125. 12 00224. 063511 13 00225'000777 14 00226. 0240 3515 00227'044001 16 00230'062677 17 00231 '01403418 00232'000402 19 00233. 000406 2QJ 00234'02003721 00235 02403422 00236 106415 23 24 00237. 126400 25 26 00240'065114 27 00241 '060177 AHEAD: 2g 00242'006017 29 00243. 004400 1 1 Mt::S40 LDA 1,CT2 JSR CODE JSR@ RITER \YJES4 l LOA 1 .. CT 1 JSR CODE JSR @RITER MES42 JSR@ RITER MES43 SKPB~ TTO JMP .-1 LDA t .. SAVE STA l , 1 IORST DSZ TIME JMP .+2 JMP AHEAD LDA 0,.4 LDA t .. TIME SUB# 0 .. I, SNR SUB 1 .. 1 DOAS 1, RTC INTEN • SYSTM .RTN ; ON # OF INCORRECT CONTROL ; WORDS TRANSFERRED ; WR I TE INFORMATION ON # ; OF INCORRECT DATA ; WORDS TRANSFERRED ; TERMINATION OF PROGRAM J WR I TE MESSAGE J WAIT FOR TTO TO FINISH ; GET ADDRESS OF RDOS INT. HAND. J PUT IT IN LOCATION 1 J CLEAR ALL FLAGS J IS THERE A SYSTEM CLOCK ; YES J NO J AC0=4 ; SYSTEM FREQUENCY ; IS IT 4 J 4 = 60 HZ J AC1=!2l FOR ; SETTING CLOCK TO 60 HZ J SET FREQ AND START CLOCK ; ENABLE INTERRUPT J RETURN CONTROL TO CLI 30 31 32 33 34 00244'054417 WRITE: 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 STA 3,RETURN. LDA l .. @RETURN STA l,.PT lSZ RETURN LDA 0,.377 LDA t,@.PT AND# 0 .. t .. SNR JMP @RETURN JSR OUTPT MOVS t .. 1 AND# 0,J,SNR JMP @RETURN JSR OUTPT ISZ .PT JMP ERRJ RETURN: 0 •PT: 00245'026416 00246'044416 00247'010414 00250'02001100251 '026413 ERRl: 00252'107415 00253'002410 00254'004411 00255'125300 00256'1~7415 00257'002404 00260'004405 00261 '010403 00262'000767 00263'000000 50 00264 '000000 51 52 00265'063511 OUTPT: 53 00266°000777 54 00267 '065111 55 00270'001400 56 SKPBZ TTO J WRITE MESSAGE ROUTINE J J J J LOCATION OF MESS. POINTER LOCATION OF MESSAGE STORE IN ACl INCREMENT RETURN ADDRESS J J J CHECK FOR 0 IS·THE TERMINATOR OUTPUT THE CHARACTER J CHECK FOR 0 J J J CHARACTER INCREMENT POINTER FETCH 2 MORE CHARACTERS J SKIP IF TTO NOT BUSY J J OUTPUT ACl TO TELETYPE RETURN TO MAIN PROGRAM 0 OUTP~T J;vip •- 1 DOAS 1 .. TTO J\YJP 0, 3 51 !<?.HiHl)6 ACTR 01 02 03 04 05 06 07 08 09 10 It 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 00271 '054431 CODE: 00272'034431 00273'05403600274'125100 00275'044427 00276'024427 0027 7 t 125002 00 300. 125400 00301t004764 00302'024422 00303' 125100 00304'044420 00305'024417 CODE l: 00306' 125100 00 30 7 t 125100 00310 t 125100 00311'044413 0 0 3 J 2 0 30 4 l 4 00313'147400 00314'03041 l 00315'147000 00316'QJ04747 00317'01403600320'000765 00321 '002401 00322'000000 MORE: 00323'000005 .s: 00324'000000 TEMP: 00325'000060 • 60: 00326'000007 • 1: I STA 3,,MORE LDA 3,,. 5 STA 3,,LOAP MOVL J ,, 1 STA t ,,TEMP LDA l,,. 60 MOV J,, J,, szc lNC l ,, 1 JSR OUT PT LDA J,, TEMP MOVL 1 ,, 1 STA 1,, TEMP LDA t,, TEMP MOVL 1 ,, 1 MOVL I ,, 1 MOVL l ,, J STA l,, TEIYJP LDA 2,,. 7 AND 2,, 1 LDA 2,,.60 ADD 2,, 1 JSR OUTPT DSZ: LOAP JMP CODEl JM? @MORE 0 5 0 60 7 J J THIS SUBROUTINE PRINTS OUT ACl lN OCTAL J STORE RETURN ADDRESS J J J ; J ; INIT. LOOP COUNTER. ROTATE BIT 0 TO CARRY STORE CODE ASCII CODE FOR 0 WAS OLD BIT 0 A ZERO MAKE ACl CODE F'OR 1 OUTPUT CODE TO TTO GET CODE INTO PROPER POSITION RESTORE CODE ROTATE ACl 3 LEFT STORE CODE ; MASK OUT TO 3 BITS J J J J J J J J ; MAKE CODE ASC ( I OUPUT CODE TO TTO J FINISHED YET? J NOT FINISHED ; RETURN TO CALl,.+l ; j !002J7 ACTR 01 02 03 04 00327"054433 TRANS: 05 00330°01401306 00331 '000403 07 00332'01001308 09 00333°002427 10 00334'063610 11 00335°000412 12 00336'030425 13 00337°064610 14 00340' 147400 15 0til341 '030423 16 00342°146414 17 00343'000404 18 19 00344' 126520 20 00 345. 04401321 00346'002414 22 23 24 25 00347'102400 OUT: 26 00350°04001327 0:11351 '02401528 00352°004717 29 00353'00600030 00354'001135' 31 00355°02401732 00356'004713 33 00357'00600034 00360'001150' 35 0 0 3 6 1 • 0 0 2 4 0 1 36 00362'000000 LEAVE: 37 00363'000177 .111: 38 00364'000003 .3: 39 58 STA DSZ J\VIP ISZ 3,,LEAVE STOP .+3 STOP JMP @LEAVE SKPDN TTI JMP OUT LDA 2,,.177 DI AC 1,, TT I AND 2,,1 LDA 2,,.3 SUB# 2,,1,,SZR JMP OUT SUBZL 1,, I STA J,, STOP JMP @LEAVE SUB STA LDA JSR JSR PTI LDA JSR JSR PT2 JMP 0 177 J OUTPUT TRAN,,RECEPTION ERRORS J J J STORE RETURN ADDRESS STOP=l IS PRINT SUPPRESS NO PRINT SUPPRESS YES SUPPRESS OUTPUT PUT STOP=l AGAIN RETURN TO MAIN~INE HAS KEYBOARD BEEN STRUCK NO OUTPUT CODES YES KEYBOARD TO ACJ,,CLEAR FLAG MASK OUT TO 1 BITS J J J J J J IS IT CONTROL P NO,, INVALID,, CONTINUE OUTPUT YES CONTROL P TERMINATE PRINTING ERRORS STOP=l RETURN TO MAINLINE J NOW STOP HAS BEEN PUT TO -1 J NOW STOP=0 WHICH IS CORRECT FOR NON SUPPRESSION J J J J J J J J 0,,0 0,,STOP J,, TEM0 CODE @RITER J J OUTPUT TRANSMITTED WORD PRINT MESSAGE 1,, TEM2 CODE @Rl.TER J J OUTPUT RECEIVED WORD PRINT MESSAGE @LEAVE J RETURN TO MAINLINE J J 3 • 59 !0008 ACTR 01 J INTERRUPT SERVICE ROUTINE DI B 1, CPU J LOA 2,.14 J GET DEVICE CODE CAUSING INT. 14 = CODE OF RTC 02 03 04 00365'065477 INT: 05 00366'03002406 00367'146415 07 00370'000416. 08 00 3 71 • 03002509 00372' 146415 10 00373'000434 11 00374'04402612 00375'00600013 00376'000666' 14 00377'02402615 00400'00602316 00401 '063640 17 00402'000403 . 18 00403'00600019 00404'000706' 20 00405'002001- SUB# 2, 1, SNR JMP SERVI LOA 2,.40 SUB# 2, J, SNR JMP SERV2 STA 1,HOLD JSR @RITER MES9 LOA J J RTC CAUSED INTERRUPT 40 CODE OF ACTR = ACTR CAUSED INTERRUPT UNKNOWN INTERRUPT ; WRITE ERROR MESSAGE J J t,HOLD JSR @CODER SKPDN ACTR JMP .+3 JSR @RITER MESJ0 JMP @END J J OUTPUT DEVICE CODE I S ACTR DONE= I NO WR I TE MESSAGE J GO TO ENDUP J J CLOCK INTERRUPT SERVICE J J 21 22 23 24 25 26 27 28 00406'014005-SERVJ: 29 30 31 32 33 34 35 36 37 00 40 7 • 0020 32- J.MP DSZ TAG @TICK J OK CLOCK STABILIZED 00410'0140030041 l '002033- DSZ TAG2 JMP @MASKD J OK INTERRUPT CLEARED 00412'014004004(3'002031- DSZ TAG3 JMP @CONTD J OK ACTR MASK OP ER AT I ONAL · J J TO REACH HERE, ACTR INTERRUPT HAS FAILED JSR @RITER J MESS J J J J PRINT INTERRUPT ERROR MESSAGE DID TRANSMISSION TERM l NATE NO NO PRINT MESSAGE ,; J J DID .,RECEPTION OCCUR YES NO PRINT \YI ES SAGE J TERMINAL ERROR! J ! ! ! ! ! ! 38 39 40 41 42 43 44 45 46 47 48 49 50 51 ROUTINE 00414'00600000415'000743' 00416'063640 00417'000403 00420'00600000421 '000763' 00422'063640 00423'000403 00424'00600000425'001011. 00426'002001- SKPDN ACTR JMP .+3 JSR @RITER MES6 SKPDN ACTR JMP .+3 JSR @RITER MES20 JM? @END !0009 ACTR 01 !212 60 J ACTR INTERRUPT. SERVICE ROUTINE J OK ACTR INTERRUPT GENERATED 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 00427'014002-SERV2: 00430 '002030- DSl TAGt JMP @BACKD 00431 t 01400500432'000404 00433'00600000434 '001160 t 00435'002001- DSZ TAG JMP .+4 JSR @RITER MES7 JMP @END 00436'01400300437'000404 00440'0060000044 t t 000 720 t 00442'00201211- DSZ TAG2 JMP .+4 JSR @RITER MESI 3 JM? @END 18 19 20 21 00443'00600022 00444'001204' 23 00445'00200124 25 ; INTERRUPT DURING CLOCK STAB.? NO ; YES WRITE ERROR MESSAGES .J .J TERMINAL ERROR .J J .J INTERRUPT APTER NIOC? NO YES WRITE ERROR MESSAGES .J TERMINAL ERROR INTERRUPT HAD TO BE GENERATED DURING MASK OUT TESTS ; WRITE ERROR MESSAGES .J .J JSR @RITER MES8 JMP @END ; TERMINAL ERROR !0010 ACTR 01 02 03 04 00446'005015 05 00464'020040 06 00515'006411 07 00520'052502 08 00542. 00641 l 09 00544'047504 10 00566 '006411 11 00572'041$01 12 00614. 006411 13 00616'052502 14 00637'004440 15 00642'047504 16 00663'004440 17 00666'047125 18 00706'005015 19 00720'041501 20 00741 '006411 21 00743'041501 22 00763'047516 23 01007'006411 24 0 1 0 1 1 • 0 4 7 5 1 0 25 01035 '006411 26 01037'020040 27 01054'041440 28 0 107 7 • 00 6 41 1 29 01 10 1 • 042040 30 01122'004531 31 01125'042440 32 01135'053440 33 01150'053440 34. 0 1 1 60 • 04 150.1 35 0 1 2 0 1 • 0 0 4 5 2 4 36 01204. 041501 37 01220'046106 38 01237'020114 39 01267'020123 40 01316'006411 41 01326'020103 42 000000 61. MESSA: MESI: MES2: MES21: MES22: MES23: MES9: MES HiJ: MES 13: MESS: MES6: MES20: MES40: MES41 : 1'11ES42: MES43: PT1: PT2: MES7: MESS: MES31: J TITLES AND ERROR MESSAGES .TXT *<15><12> ACTR DIAGNOSTICS <15><12> <12>flRST FLAGS AND INTERRUPTS WILL BE TESTED <15><12><12>* .TXT *BUSY FLAG DOES NOT RESPOND TO IORST <15><12>* .TXT *DONE rLAG DOES NOT RESPOND TO IORST <15>>12>* .TXT *ACTR INTERRUPT GENERATED WHEN DONE=0 <15><12>* .TXT *BUSY FLAG DOES NOT RESPOND TO NIOC <15><12>* .TXT *DONE FLAG DOES NOT RESPOND TO NIOC <15><f2>* .TXT *UNKNOWN INTERRUPT ,DEV. CODE = .TXT *<15><12>AND ACTR DONE=l<l5><12>* .TXT *ACTR INTERRUPT NOT CLEARED BY NIOC <15><12>* .TXT *ACTR INTERRUPT NOT GENERATED<15><12>* .TXT *NON-TERMINATION OF TRANSMISSION CBUSY=I> <15><12>* .TXT *HOWEVER TRANSMISSION TERMINATED CDONE=l> <15><12>* .TXT * TRANSFER INFORMATION<l5><12>* .~XT * CONTROL WORDS TRANSFERRED INCORRECTLY <15><12>* .TXT * DATA WORDS TRANSFERRED INCORRECTLY <15><12>* .TXT END OF TEST<15><12>* .TXT * WAS TRANSMITTED AND * .TXT WAS RECEIVED<15><12>* .TXT *ACTR INTERRUPT NOT CLEARED BY IORST <15><12>* .TXT *ACTR MASK OUT rAILURE<l5><12>* .TXT *FLAGS AND INTERRUPT OPERATIONAL <15><12>NOW P~OCEEDING WITH TRANSMISSION TESTS <15><12>TO TERMINATE LISTING Of ERROR WORDS <15><12>TYPE CONTROL C <15><12><12>* .NOLOC 0 * * * !0011 ACTR 01 02 .ZREL 03 04 05 00000-000244'RITER: WRITE 06 00001-000222'END: ENDUP 07 00002-000000 TAGt: 0 08 00003-000000 TAG2: 0 09 00004-000000 TAG3: 0 10 00005-000000 TAG: 0 11 00006-000200 .200: 200 12 00007-000000 CTt: 0 13 00010-000000 CT2: 0 14 00011-000377 .377: 377 15 00012-000000 STRPTR: 0 16 00013-000000 STOP: 0 17 00014-000017 .11: 17 18 00015-000000 TEM0: 0 19 00016-000000 TEMl: 0 20 00017-000000 TEM2: 0 21 00020-000000 TEM3: 0 22 00021-000052 STAR: 52 23 00022-000365'1NTPTR: INT 24 00023-000271 ·coDER: CODE 25 00024-000014 .14: 14 26 00025-000040 .40: 40 27 00026-000000 HOLD: 0 28 00027-077777 NO: 77777 29 00030-00006l'BACKD: BACK 30 0003l-000130'CONTD: CONT 31 00032-000046'TICK: CLOCK 32 00033-000113'MASKD: MASK 33 00034-000000 TIME: 0 34 00035-00~000 SAVE: 0 35 00036-000000 LOAP: 0 36 00037-000004 .4: 4 37 62 J 38 39 .END START **00000 TOTAL ERRORS, 00000 PASS 1 ERRORS PAGE 0 CONSTANT STORAGE 0012 ACTR AKE AD BACK BACKD CLOCK CODE CODE! CODER CONT CONTD CT 1 CT2 END 000241. 000061 • 000030000046' 000271' 0210 305. 0000230Vl0 1 30. !?1000310121000 7000010en.10001- ENDIJP 000222' 000251 • 000210'. 000026000365' 000022000362' 000036000140' 000113' 000033000520' 000706' 000720' 000544. 001011. 000572' 000616' 000642' 001220· 001037' 001054' 00 1 10 1 • 001125' 000743' 000763' 001160' 001204' 00121666' 000446' 000322' NO 000027OUT 000347' OUTPT 000265' PTl 00 1 1 35' PT2 00 1 1 50. RETUR 000263' RITER 000000ERRl rlNIS HOLD INT INTPT LEAVE LOAP LOOP MASK MASKD MESI MES10 MES13 MES2 MES20 MES21 MES22 MES23 MES31 MES40 MES41 MES42 MES43 MESS MES6 MES7 MESS MES9 MESSA MORE SAVE SERVI SERV2 STAR START 000035000406' 000427' 000021000000' EN 5/19 3/12 9/05 2151 5/03 6/18 8/15 4/09 8/35 4/14 4/15 2/35 9 It l 5/10 5/39 4/21 8111 8/04 2/22 7/04 6/08 4/18 3/48 8/32 2/34 8/19 9/16 2/39 8/49 3/15 3/21 3/26 4/10 5/01 5/05 5/09 5/ 1 I 8/41 8/45 9/10 9/22 8/13 2/27 6/06 4/ 11 7 /I 1 4/55 7/30 7/34 5/34 2/26 4/60 8/18 l 1 /05 2/21 8/07 8/10 4/54 2/04 5121 1 t /29 Jl/29 t 1I3 t 5/07 6/29 11 /24 1lI30 1II30 4/42 4/50 2/40 9/17 11 /06 5/48 4/25 8/14 11 /23 11 /23 7/09 6/28 4/48 11 /32 11 /32 10/07 10/18 10/19 10/09 10/24 10/11 10/13 10/15 10/37 10/26 10/27 10/29 10/31 1012·1 l C~/22 10/34 10/36 10/17 10/04 6/30 11 /28 7/17 5/42 10/32 10/33 5/35 2/33 5/04 8/40 5/14 8/28 9/04 11 /22 2/14 63 6/06 7/28 7/32 11 /24 5/06 5/02 3/16 9/23 1 1I1 2 l 1I l 3 3/22 11 /06 3/27 8/20 7/35 7/36 5/52 6/14 6/27 5/45 3/20 7/29 9/09 5/49 3/25 7/33 9/15 8/50 4/60 1 I /27 7/21 11 /35 4/59 6/31 7/25 5/46 "' 5/37 2/38 5/08 8/44 1 1 /34 I I/ 39 5/41 3/14 5/10 8/48 4/09 8/12 9/2 l 0013 ACTR STOP STRPT TAG TAGl TAG2 TAG3 TASK TEM0 TEMl TEM2 TEM3 TEMP TICK TIME 0000 1 3- 00001200000 5000002000003000004000401 NC 000015000016000017000020000324' 000032000034TRANS 000327' WRITE 000244' •t4 000024•l7 000014.1 77 000363' .200 000006.3 000364' .377 00001 t .4 000037.40 000025.5 000323' .60 000325' .1 000326' .PT 000264' 64 4/16 1 1I1 6 4/12 2/42 2/44 2/45 2/46 2/06 4/35 4/36 4/37 4/38 6/10 8/29 2/18 4/41 5/34 8/05 4/26 7/12 3/48 7//15 5/38 5/20 8/08 6/07 6/ 1 l 6/23 5/36 4/51 4/56 7/05 7/07 7/20 4/18 2/60 2/58 3/01 3/02 4/19 3/31 3/32 3/29 3/33 4/22 3/54 3/53 3/55 3/51 4/23 8/28 9/04 8/31 8/34 11I15 9/07 l l /Ql 1 9/13 l l /09 4/44 4/43 4/46 4/45 6/15 1 l I 31 5/17 4/58 11 /05 11 /25 l lI l7 7/37 l lI l I 7/38 11/14 11 /36 11 /26 6/32 6/25 6/35 5/39 1121 11/19 7/31 11 /21 6/17 11/18 6/22 6/33 5/21 7/04 11 /20 6/18 11 /33 6/34 5/47 5/50 R . 7/26 l lI l 0 11/08 -BIBLIOGRAPHY ECLIPSE- Line Real Time Operating System User's Manual Southboro Mass.: Data General Corporation, i975. Re~ ag. ECLIPSE- Line Real Time Disc Operating System User's Manual Rev.%1. Southboro Mass.: Data General Corporation, 1975. How to Use Nova Computers Rev. Corporation, 1974. S9. Southboro Mass.: Data General Introduction to ECLIPSE'."" Line Real Time Operating System Rev • .£).f). Southboro Mass.: Data General Corporation, 1975. Introduction to ECLIPSE- Line Real Time Disc Operating System Rev • .f),O'. Southboro Mass.: Data General Corporation, 1975. User's Manual ECLIPSE Macro Assembler Rev. JfJf. Data General Corporation, 1975. Southboro Mass.: Programmer's Reference Manual, ECLIPSE Line Computers Rev • .fi4. Southboro Mass.: Data General Corporation, 1975. 65