526 IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. SE-4, NO. 6, NOVEMBER 1978

ASSIST-V: An Environment Simulator for IBM 360 Systems Software Development

CHARLES E. HUGHES, MEMBER, IEEE, AND CHARLES P. PFLEEGER

Abstract-This paper describes ASSIST-V, a software tool designed their own operating systems without significantly degrading for use in the teaching of operating systems, fie management, and ma- performance for other users ofthe machine. However, VM/370 chine architecture courses. ASSIST-V is a program that provides an en- and are not student oriented. Although this situation vironment for the implementation, testing, and evaluation of systems CP/67 software for the IBM 360 series machines. This capability is achieved is "real-life," we feel it is too harsh for the beginning student by simulating all relevant aspects of the machine's architecture. In of operating systems. particular, ASSIST-V simulates interrupts, I/O channels, and I/O devices, A number of software aids have been developed to provide as well as all IBM 360 machine instructions. In addition, ASSIST-V students the opportunity to write and test provides extensive debugging and statistics-gathering aids. modules. These simulators may be divided into three groups. Index Terms-Educational software, IBM 360/370, interrupt handling, Programs in the first group, exemplified by Donovan [21 I/O channel programming, operating systems, simulation, systems and Hughes and Walker [7] simulate the environment for software. some one or more operating system modules. A user writes the appropriate modules, links these with the simulator, and 1. 0 BJECTIVES executes the resultant program. For example, an environment A LTHOUGH much can be learned through the reading of might be provided for a main memory allocation routine. In appropriate textbooks, programming experience is still this case, the user's routine would be given commands to necessary to complete the education of a systems programmer. allocate and to deallocate varying amounts of memory. Experi- For example, it is common practice to include the program- ments might then be formulated to compare first-fit to best-fit ming of several of the components of a in a course on allocation using two separate user modules. Systems in this compiler construction. Unfortunately, a similar experience is class have the advantages of being easy to learn and of allowing rarely afforded in operating systems courses. the use of a high-level language, usually PL/I or Fortran. Their Clearly, students should have the opportunity to write a main shortcoming is that they shield the user from the problems small operating system. It is therefore important to develop resulting from the occurrence of asynchronous events. In student-oriented packages on which operating systems can be addition, users of these systems are not provided the opportu- written. To be useful, any such package must present the stu- nity to program I/O channels, nor to control the allocation of dent with an environment that includes all the relevant aspects space on direct-access devices. of a computer's architecture. The characteristics ofthe machine The second group of systems is exemplified by Czarnick etal. and its I/O devices should closely resemble, or be the same as [1] . Here a parallel processing language is used to simulate a those of some widely available computer system. I/O devices hypothetical computer system. Hardware components of the that must be controlled by the student's system should include computer, e.g., the program counter and main memory, are direct access as well as unit-record equipment. The package represented by variables and arrays. Students are given the must be easy to use. It should provide debugging and perfor- assignment of writing operating system modules that administer mance evaluation aids. Finally, and of primary importance, it the allocation of these mock hardware resources. The student should be economical to use. modules are written in the parallel processing language and, therefore, may be executed simultaneously. For this reason, II. RELATED WORK the variables and arrays representing hardware must be treated IBM's VM/370 and CP/67 operating systems (see Goldberg as critical resources. Thus the potential for synchronization [3]) provide each user of a S/370 and S/360-67, respectively, problems arises in the use of systems in this second group. with an environment that gives the appearance of a dedicated However, there are still two drawbacks to the use of such machine (with the exception of imprecise values in the interval systems. First, the use of a hypothetical computer gives many timer). In an installation where VM/370 or CP/67 is the chosen students the feeling that the work being carried out is not operating system, it is possible for students to write and test applicable to real machines. Second, and more important, the isolation of operating systems modules from user modules Manuscript received October 3, 1977; revised April 10, 1978. This obviates the need of the operating system to protect itself work was supported by the National Science Foundation under Grant from users. This omits an important consideration in the design SER 76-14494. The authors are with the Department of Computer Science, University of operating systems. of Tennessee, Knoxville, TN 37916. The third group of student-oriented systems includes one

0098-5589/78/1 100-0526$00.75 X 1978 IEEE HUGHES AND PFLEEGER: ENVIRONMENT SIMULATOR 527 that was written at M.I T. (McCray [12] ,Madnick and Donovan III. IMPLEMENTATION ENVIRONMENT [81, [91, and Donovan [21), another developed at The Uni- The ASSIST-V simulator was written as a major extension versity of Tennessee (Stiles [14]), and ASSIST-V (Hughes and to an existing program called ASSIST. ASSIST is a student- Pfleeger [4] -[6]), the simulator being described here. Each of oriented assembler/ for IBM 360-370 machines. It these simulates the IBM 360 machine instructions, interrupt was designed and implemented by Dr. J. R. Mashey, Dr. G. M. structure, and, in all but the Stiles system, a set of I/O channels Campbell, and Dr. C. P. Forney, all of The Pennsylvania State and devices. University (Mashey et al. [101, Mashey [11], and Overbeek The M.I.T. simulator is written in PL/I and requires input of and Singletary [13]). The present version, maintained by the a single-object module. The use of PL/I as the simulator's im- authors and distributed by The Pennsylvania State Uniyersity,1 plementation language makes the code easy to read and main- is in use at over 200 universities in the United States and tain, but results in slow execution times and a large memory abroad. requirement (about 170K bytes plus user area). The input ASSIST is small (full-option version is about 68K bytes plus object module must be produced by some standard language user area), and fast (300-statements/s assembly, 7300/state- processor (usually Waterloo's Assembler G). Assembly or ments/s execution on an IBM 360 model 65). It assembles all compilation times for these standard (nonstudent-oriented) IBM 360 instructions and interprets the execution of all non- processors are often substantially greater than the times for privileged instructions. It allows both user-written and system student-oriented ones. Moreover, the error messages pro- macros, as well as conditional assembly statements in the open duced by standard processors are signiflcantly inferior to code. It includes a number of student-oriented features, such those generated by student systems. Since cost effectiveness as pseudooperations to read a card, print a line, and display and ease of use are among our primary objectives, we view the the contents of registers or storage; monitoring oftime and out- two features just mentioned as drawbacks. In addition, the put; an extensive dump at program termination; techniques M.I.T. system has two deficiencies that we wished to overcome for conserving paper; and a selective, user-controlled cross- in our project. These are the fact that it does not interpret all reference listing. IBM 360 commands (omitted instructions include ED, EDMK, ASSIST-V is an extension to ASSIST. The assembler was TRT, and the decimal and floating-point commands) and the preserved virtually intact, and extensive additions were made fact that it does not simulate direct-access devices. to the interpreter. Since the assembler was unchanged, no The Stiles simulator is written in S/360 assembler language change to assembly speed has occurred; execution speed is and requires input of a load module. As with the M.I.T. sys- approximately 4300 instructions/s on an IBM 360 model 65. tem, the student's operating system must be assembled (com- A typical version of ASSIST-V (one card reader, one line piled) by some standard language processor. Use of a load printer, one disk, one drum) requires 74K bytes of storage module, instead of an object module, provides for additional plus user area. flexibility since students can write parts of their systems in one language and other parts in another language. Thus, for IV. IBM 360 ARCHITECTURE OVERVIEW example, the kernel of a system might be written in assembler An operating system for the IBM 360 series machines language, and all other parts in Pascal or PL/I. The primary establishes a nucleus of information in certain fixed storage shortcomings of the Stiles simulator are the fact that it does locations. These locations are accessed by both hardware and not interpret all IBM 360 commands (omitted are the translate software in order to handle exceptional conditions. and edit commands) and, more importantly, it does not An interuption is generated by hardware to note the oc- simulate I/O channels nor I/O devices. currence of an event. There are five classes of interrupts; they ASSIST-V, the simulator described in this paper, is written are program (irregularity sensed with current instruction); in S/360 assembler language and requires input of a S/360 supervisor (execution of supervisor call-svc-instruction); assembler language program that represents the student's external (timer expiration or operator intervention demanded); operating system. ASSIST-V is thus an assembler and a I/O (exceptional condition in channel program execution, e.g., simulator. Its assembler (to be discussed in more detail in the channel program end); or machine check (machine malfunc- next section) is student oriented. As a result, the student is tion sensed). For each of the five types of interrupts, there are never required to use a standard language translator. All IBM two storage locations reserved forprogram status words (PSW's). 360 commands, including the privileged operations, are inter- (The PSW specifies the address of the next instruction to be preted by ASSIST-V. Direct-access devices (fixed and movable executed and the status of the central processing unit (CPU) head), in addition to unit-record devices (card readers and line during this execution.) In one of these, called the old PSW for printers), are simulated. Extensive debugging and statistics- the interrupt, the current PSW is stored and a code is placed gathering facilities are provided. And, finally, I/O pseudocom- there to identify the source ofthe interrupt. The other reserved mands are available so that input and output can be performed storage location is called the new PSW for the interrupt; at the without the need to know channel programming, if such a time of interrupt, the contents of this location are made the simplification is desired. Channel level I/O is, of course, current PSW. available, and both channel level I/O and pseudocommands may be used in the same program. (A use of this latter case 1Additional information on obtaining ASSIST is available from Pro- might be the printing of trace messages via pseudocommands gram Librarian, The Pennsylvania Sate University, 214 Computer Build- in order to debug a set of channel-level programs.) ing, University Park, PA 16802. 528 IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. SE-4, NO. 6, NOVEMBER 1978

I/O activities are initiated by execution of the start I/O (SIO) Address Length Purpose privileged instruction. Upon execution of an SIO, the address 0 doubleword initial program PSW 8 2 doublewords unused (IPL CCW's) of the channel program is taken from a fixed memory location, 24 doubleword external old PSW called the channel address word (CA W). At one or more times 32 doubleword supervisor call old PSW 40 doubleword program exception old PSW during execution of that program, the channel signals an I/O 48 doubleword unused (machine check old PSW) in 56 doubleword input/output old PSW interrupt and stores the status of the program's execution 64 doubleword channel status word another fixed location called the channel status word (CSW). 72 word channel address word 76 word unused One word of storage (called the interval timer) is reserved for 80 word interval timer The the contents 84 word unused timing. hardware automatically decrements 88 doubleword external new PSW of this location by 1 every 13.020833. . . ,us (1/76800 s). When- 96 doubleword supervisor call new PSW 104 doubleword program exception new PSW ever the contents of the interval timer goes from zero to 112 doubleword unused (machine check new PSW) negative, an external interrupt occurs. 120 doubleword input/output new PSW During the loading of an operating system into an IBM 360, Fig. 1. ASSIST-V fixed memory location assignments. one storage location (at address 0) is reserved for the initial PSW. This identifies the address at which execution of the Fig. 2 presents a sample program and the output produced operating system is to begin and the initial status of the CPU. when this program is assembled and executed by ASSIST-V. This location is called the initial program load PSW (IPL The program consists of an initialization and user section, PSW). along with an SVC, timer (external) and program interrupt handler. V. ASSIST-V USING In addition to program, SVC, and external interrupts, ASSIST- A. An Overview V simulates I/O interrupts. These arise from the simulation of In order to use ASSIST-V, a person writes an operating channel program executions. A detailed description of this system to be tested. ASSIST-V assembles the program into an activity follows. area of memory allocated for the simulated machine. The first 128 bytes of the user's program must contain data to initialize B. I/O Device Simulation the fixed machine locations described in Fig. 1. The remainder As noted before, one design constraint on ASSIST-V was of the user's program initializes the rest of the simulated that it simulate a variety of I/O devices of both unit-record machine's memory; the memory size of the simulated machine and direct-access types. The current set of simulated devices is the smallest multiple of 2K bytes greater than or equal to is a card reader, a printer, a movable-head disk, and a fixed- the size of the user's program. Protection keys are allocated head storage device. The device handling is all table driven, for each 2K block; both store andfetch protection are simulated. so that a device can be added or deleted with a change of Execution of an operating system under ASSIST-V com- only three source statements; similarly, a change in the charac- mences with the IPL PSW being used to define the initial value teristics of a device (e.g., size or speed) can be done easily. of the current PSW. As ASSIST-V sequences through instruc- Students should appreciate the disparity in speeds between tions, it checks for any program interruptions (e.g., address the CPU and I/O devices. Students used to running in a spooled, out of range, protection violation, illegal opcode). If any of multiprogrammed environment tend to think of the reading these occurs, ASSIST-V simulates a program interupt by storing of a card or the printing of a line as instantaneous. Timing of the current PSW at the program old PSW (location 40) and operations on the simulated reader and printer have been using the contents of the program new PSW (location 104) as selected to match those of typical real devices. the current PSW. Similarly, the execution of an SVC results in It is also valuable for students to experience the problems the PSW being placed at location 32, with the contents of loca- normally encountered only when dealing with large amounts tion 96 becoming the current PSW. of data or long running times. For example, one crucial ASSIST-V presents a fault-free machine to the user, since problem in writing a file access system is to select a placement hardware error diagnosis is outside the usual scope of operat- of data on the physical device so as to minimize the time ing systems study. For this reason, the machine-check old required to move from one piece of data to a related one. Be- and new PSW's are unused. cause of the size of devices, a student working on a real system An interval timer is maintained in bytes 80-83. At the com- is faced with this problem only when testing data sets of many pletion of execution of each instruction or I/O activity, the items. This is so because small sets can be recorded in such timer value is decremented by an amount representing the close proximity on large devices that little or no physical move- time of that execution. For the machine instructions, timings ment is needed to access different items. In ASSIST-V the are used that approximate execution speed of an IBM 360 sizes and transfer rates of simulated devices have been reduced model 65. (Different timings may be achieved by modifying substantially from similar real devices, so that the student en- a single table within ASSIST-V.) For the I/O instructions, counters this needed head movement with a relatively small times have been calculated for the reading of a card, printing amount of data (see Fig. 3). of a line, seeking of a direct-access track, searching for a record on a track, and reading or writing a record on a direct-access VI. PROGRAM AIDS device. A timer (external) interrupt is generated each time the ASSIST-V retains all of the program aids provided by the interval timer goes from zero to negative. (Normally, a user's conventional ASSIST processor. At assembly time, these in- operating system initializes the initial interval timer to -1 so clude an optional program listing that may be compressed that timer interrupts do not occur except as intended.) (two statements per line) in order to conserve paper, an op- HUGHES AND PFLEEGER: ENVIRONMENT SIMULATOR 529

LOC OBJECT CODE ADDRI ADOR2 STMT SOURCE STATEMENT 2 ***** * * * * * * * * * * * * * * * * * * ***6*6* * * * * * * * 3 * PROGRAM TO ILLUSTRATE USE OF ASSIST-V FOR HANDLING INTERRUPTS * 4 * THREE DIFFERENT INTERRUPTS ARE CAUSED: * 5 * SUPERVISOR - FROM EXECUTION OF SUPERVISOR CALL INSTRUCTION * 6 * EXTERNAL - FROM EXPIRATION OF VALUE IN INTERVAL TIMER * 7 * PROGRAM - FROM PROTECTION EXCEPTION *

10 * THE FOLLOWING CONSTANTS INITIALIZE THE FIXED MEMORY LOCATIONS 11 * AS DESCRIBED IN FIGURE 1. 000000 12 FIGURE2 START 0 000000 13 USING *,0 000000 00000000000000810 14 IPLPSW DC X'00000000',A(INITIAL) BEGIN MACHINE RUN AT "INITIAL + SUPER. MODE, PERMIT EXT. INTS. 000008 15 DS 2D UNUSED (IPL CCWS) 000018 16 EXTOLD DS 0 FOR EXTERNAL OLD PSW 000020 17 SYCOLD DS D FOR SUPERVISOR OLD PSW 000028 18 PGMOLD DS 0 FOR PROGRAM OLD PSW 000030 19 DS D UNUSED (MACHINE CHECK OLD PSWI 000038 20 DS D UNUSED 11/0 OLD PSW 000040 21 DS 20 UNUSED (CSW, CAW) 000050 FFFFFFFF 22 TIMER DC F'-1' INTERVAL TIHER 000054 23 DS F UNUSED 000058 0000000000000B10 24 EXTNEW DC XOOOOOOOO',A(EXTHANDLI EXTERNAL INT. HANDLER NEW PSW 000060 OOOOOOOOOOOOOOA 86 25 SVCNEW DC X900000000',A(SVCHANOL) SUPERVISOR INT. HANDLER NEW PSW 000068 OOOOOOOOOOOOOOC :0 26 PGMNEW DC X00000000',A(PGMHANDLI PROGRAM INT. HANDLER NEW PSW 00007 27 DS D UNUSED (MACHINE CHECK NEW PSWI 000078 28 DS D UNUSED (I/O NEW PSWI

30 * ****** * * * 31 * INITIALIZATION SECTION * 32 * SET STORAGE PROTECTION * 33 * REQUEST TRACING OF PSW SWAPS * 34 * TURN CONTROL TO USER PROGRAM AT LABEL USERN * 35 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 000080 4110 0030 00030 37 INITIAL LA 1,B'00110000' ASSIGN USER PROT. KEY B'0011' + (KEY 3, NO FETCH PROTECT) 000084 4120 0800 00800 38 LA 2.USER ADDRESS OF USER 2K MEMORY BLOCK 000088 0812 39 SSK 1.2 SET MEMORY PROTECTION KEYS OOOO8A 5820 OOCS OOOC8 40 L 2,.XL4'D0000000 TRACE ALL PSW SWAPS 00008E 1800 41 SR 0,0 BEGIN TRACE AT LOCATION 0 000090 4110 OFFF OOFFF 42 LA 1,USER+2047 ENO TRACE AT END OF USER AREA 000094 0103 43 XOPC 3 COMMENCE TRACING 000096 8200 OOAO OOOAO 44 LPSW USERPSW TRANSFER CONTROL TO USER

OOOOAO 013100000000080'0 46 USERPSW DC OD'O',X01310000',A4USERI ALLOW EXTERNAL INTERRUPTS + PROT. KEY-3. PROBLEM MODE

LOC OBJECT CODE ADDR1 ADDR2 STMT SOURCE STATEMENT 48 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 49 * SUPERVISOR CALL INTERRUPT HANDLER * 50 * STORE VALUE IN REG. 1 IN INTERVAL TIMER * 51 * RETURN CONTROL TO USER, AFTER CALL * 52 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 0000A8 5010 0050 00050 53 SVCHANDL ST 1,TIMER STORE USER TIMER VALUE (NOTE: + PROT KEY=O IN SVC NEW PSW) ('OOOAC 8200 0020 00020 54 LPSW SVCOLD RETURN TO POINT AFTER SVC WITH + USER PSW: PROT KEY=39 PROB. MODE 55 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 56 * EXTERNAL INTERRUPT HANDLER * 57 * BREAK USER'S INFINITE LOOP AND RETURN TO USER AT * 58 * ADDRESS SOC40 * 59 ** * * *** * * * * * * * * * * * * * * ** * * * * * * * * * * * * * 000080 8200 00B8 00088 60 EXTHANDL LPSW TIMPSW GO BACK TO USER WITH NEW PSW 000088 013100000000081 DA 61 TIMPSW DC 0D0'vX901310000l.AfS0C4) SAME PROT. KEY, MODE; TO LABEL "SOC4" 62 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 63 * PROGRAM INTERRUPT HANDLER, TERMINATE PROGRAM WITHOUT DUMP * 64 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * OOOOCO 0118 65 PGMHANDL XOPC 24 PSEUDO-OP TO STOP WITHUT DUMP 66 LTORG , ORIGIN OF LITERAL POOL OOOCe 00008000 67 =XL4'00008000'

69 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 70 * USER TEST PROGRAM * 71 * BEGIN USER PROGRAM AT SECOND 2K MEMORY -LOCK: ADDRESS 2048 * 72 * CAUSE SUPERVISOR INTERRUPT, AFTER 5 HAS BEEN PLACED IN REG I * 73 * EXECUTE STATEMENT LABELLED "LOOPO REPEATEDLY UNTIL TIMER * 74 * INTERRUPT OCCURS * 75 * CAUSE SOC4 ERROR (PROTECTION) FROM ATTEMPT TO STORE IN 2K * 76 * BLOCK HAVING DIFFERENT PROTECTION KEY * 77 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 000800 78 ORG FIGURE2*X'800' POSITION USER AT 2ND 2K BLOCK 000800 4110 0005 00005 79 USER LA 1,5 PUT VALUE 5 INTO REG. 1 000804 OAOI 80 SVC I CAUSE SUPERVISOR INTERRUPT 000806 47FO 0806 00806 81 LOOP B * ENTER 1-INSTRUCTION LOOP 00080A 5010 0050 00050 82 SOC4 ST 1,TIMER TRY TO STORE IN DIFFERENT BLOCK 83 END

*** NO STATEMENTS FLAGGED - NO WARNINGS, NO ERRORS *** DYNAMIC CORE AREA USED: 6976 LOW + 576 HIGH, LEAVING 33408 FREE BYTES. AVERAGE: 89 BYTES/STMT ** 6** ASSEMBLY TIME a 0.386 SECS, 217 STATEMENTS/SEC *** *6 PROGRAM EXECUTION BEGINNING - ANY OUTPUT BEFORE EXECUTION TIME MESSAGE IS PRODUCED BY USER PROGRAM ***

TRACE--> TIMEs 00000000 PSW SWAP--CAUSESYVC INTv :OPSW 01310001 40000806 ;NPSW 00000000 000000A8 TRACE-> TIME: 00000006 PSW SWAP-CAUSE*EXT INT. tOPSM 01310080 80000806 ;NPSW 00000000 00000080 TRACE-)> TIME: 00000006 PSM SWAP--CAUSE=PGN INT. :OPSW 01310004 8000060E INPSW 00000000 OOOOOOCO *** ASSIST-V FINAL STATISTICS *** SIMULATED CLOCK TIME. 6 TIMER UNITS CPU UTILIZATION: BUSY 100.02 SUPER 16.62 PROBLEM 83.3: CHANNEL UTILIZATION: CHO o.0os CHI 0.O2 CH2 O.OS PROCESSOR OVERLAP: CPU/CHO 0,02 CPU/CH1 0.02 CPU/CH2 0.02 DISK ARM MOVEMENT: DISKIOI 0 SEEKS, 0 CYLINDERS CROSSED

*6 EXECUTION TIME 0.043 SECS. 75 INSTRUCTIONS EXECUTED - 1744 INSTRUCTIONS/SEC ** *6* FIRST CARD NOT READ: NO CARDS READ:FILE UNOPENED

Fig. 2. Use of external, program, and supervisor interrupts. 530 IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. SE-4, NO. 6, NOVEMBER 1978

Device Size Speed Development of ASSIST-V was carried out using the IBM (characters) (units per minute) 360 model 65 at The University of Tennessee Computing IBM 2501-card reader 80 600-1000 simulated card reader 80 300 Center. Distribution is provided by The Pennsylvania State University Computation Center. IBM 1401 printer 132 600-1000 simulated printer 132 approx. 300 REFERENCES (chars. per second) [1] B. Czarnick et al., "A student project for an operating systems IBM 3330 disk 100,000,000 806,000 simulated disk 135,360 76,805 course," Computer Systems Research Group, Univ. of Toronto, CSRG-29, 1973. IBM 2301 drum 4,000,000 1,200,000 121 J. Donovan, "Tools and philosophy for software education," simulated drum 40,960 122,880 Commun. Ass. Comput. Mach., vol. 19, pp. 430-436, Aug. 1976. Fig. 3. Capacities of real and simulated devices. [3] R. Goldberg, "Survey of virtual machine research," Comput., vol. 7, pp. 34-45, 1974. [41 C. Hughes and C. Pfleeger, "ASSIST-V: An environment simulator tional cross-reference facility that distinguishes between store for IBM 360 systems software development," Comput. Sci. Dep., and fetch references, and intelligible diagnostics that are printed Univ. of Tennessee, CS-77-23, 1977. [5] -, "ASSIST-V user's guide," Comput. Sci. Dep., Univ. of immediately following the erroneous statements. If a program Tennessee, CS-77-24, 1978. being executed by ASSIST attempts to run for an excessive [6] --, "ASSIST-V PLM," Dep. Comput. Sci., Univ. of Tennessee, amount of time, or produce excessive output (lines and/or CS-77-25, 1978. [7] C. Hughes and J. Walker, "POPSS, A system for modeling and pages), an abnormal termination occurs. A trace of the last analyzing operating system resource allocation strategies," in ten instructions and the last ten branches executed is produced. Proc. 3rd Texas Conf. Computer Systems, 1974, pp. 3.6.1-3.6.8. The contents of the current PSW, registers, and storage are [81 S. Madnick and J. Donovan, Operating Systems. New York: McGraw-Hill, 1974. printed. [9] -,Software Projects. New York: McGraw-Hill, 1977. During program execution, a group of pseudooperations are [10] J. Mashey, G. Campbell, and C. Forney, "ASSIST-A self-modifi- interpreted by ASSIST. These include easy-to-use methods for able assembler for instructional purposes," in Proc. Ass. Comput. I/O, register and storage dumping, and a set of diagnostic aids, Mach., 1972, pp. 310-312. [11] J. Mashey, "Three years' experience with a student oriented such as checking for any modification to a given range of storage assembler," SIGCSE Bull., vol. 5, pp. 157-165, Feb. 1973. locations, and tracing or counting the execution of instructions [12] W. McCray, "SIM360: A S/360 Simulator," Mass. Inst. of from some specified range. Technol., Project Mac Tech. Memo. 30, 1972. [13] R. Overbeek and W. Singletary, "Assembler language with ASSIST-V extends ASSIST to provide debugging aids of im- ASSIST," Palo Alto, SRA, 1976. portance to writers of systems software. Tracing of a program's [14] F. L. Stiles, personal communication. execution has been implemented with options such as tracing only those instructions executed while in supervisory mode, tracing channel commands, and tracing the occurrence of in- terrupts. Furthermore, new instructions exist to provide the current (simulated) system time, to simulate a console (ex- Charles E. Hughes (M'76) received the B.A. in from Northeastern interrupt the execution of some user-specified degree mathematics ternal) after University, Boston, MA, in 1966, and the M.S. number of instructions, and to terminate the simulation with and Ph.D. degrees in computer science, both or without a trace and dump. from The Pennsylvania State University, Uni- in and In addition to time or output excession, and user-requested versity Park, 1968 1970, respectively. He has previously held positions with the terminations, ASSIST-V abnormally terminates a program if Radio Corporation of America, Burlington, the CPU is in wait state with the internal timer negative and MA, The Pennsylvania State University, and the National Bureau of Standards. He is neither external nor I/O activity in progress. currently Associate Professor and Associate Head of Computer Science at The University of Tennessee, Knoxville, VII. EXPERIENCE a position he has held since 1974. His research interests include soft- ware engineering, operating systems, and computability theory. ASSIST-V has been in use at The University of Tennessee Dr. Hughes is a member of the Association for Computing Machinery, since September 1976. During this time it has been used in Phi Kappa Phi, Sigma Xi, and Upsilon Pi Epsilon. machine organization courses, operating systems courses, senior honors projects, and master's theses. Projects com- pleted have included operating systems and several direct- access-file management systems. In addition to its use at Tennessee, ASSIST-V has been Charles P. Pfleeger received the B.A. degree in utilized at several other universities. Experience at these mathematics from Ohio Wesleyan University, in and the Ph.D. in a it Delaware, OH, 1970, degree has demonstrated the system's stability. As result, has computer science from The Pennsylvania State been made available to the current users of ASSIST. Those University, University Park, in 1974. interested in acquiring a copy should contact either of the He is currently Assistant Professor of Com- authors for further information. puter Science at the Computer Science Depart- ment of The University ofTennessee, Knoxville, where he has been since 1974. He previously ACKNOWLEDGMENT held positions at The Pennsylvania State Uni- The authors wish to thank J. Mashey of Bell Laboratories versity. His research interests are in operating systems, software engineering, and computational complexity. for having made our chore easier by the excellent documenta- Dr. Pfleeger is a member ofThe Association for Computing Machinery, tion and program structure of ASSIST. Phi Beta Kappa, Sigma Xi, and Upsilon Pi Epsilon.