Midterm 2 Review Sheet

	The second Midterm is (probably) a closed-book comprehensive 
50-minute exam, covering everything in Chapters 1-8, in class, and in 
discussion.  You can bring 2 handwritten sheets of paper, (both sides 
OK).  No Calculators.  I will provide all the tables and raw data you 
need, so don't bother filling your sheet with that kind of stuff.  

	As you all know by now, my tests are aimed at people who are 
familiar with the topic - this means the test will be much too long if 
you have not been doing the homeworks and practicing.  Cramming is 
probably not useful - make sure you *understand* the stuff.  As was 
stated earlier, there are problems with answers in the back of the book.  
It would probably be a good idea to work those problems and make sure 
you are getting the right answer.

	Good Luck!

*******************************************************************************

This review sheet contains the most important topics covered in Chapters 
6-8. The test will *not* be limited to what is on here - this is simply 
a guide to what I think is some of the most important stuff.

Chapter 6:  Stacks and why they matter

    What is a Stack?
    Why is it important?
    How do stacks work?
    How are they implemented?
	Implemented on top of linear array (memory)
	Direction of growth
	What the Stack pointer is, points to
    What hardware is necessary to support Stack manipulations?
	Stack Pointer
	Push, Pop, LDS, etc.
    What is the Frame Pointer, why is it useful?
    What is the relationship between HLL and assembly language?
	The difference between call by reference and call by value
	How are they implemented
    When and why does the stack need to be "cleaned up"?
    What are Subroutines?
    What hardware is necessary to support Subroutine calls?
	JSR, RTN, why they are necessary
	Caller-saved vs. Calle-saved
	Parameter passing issues

Chapter 7:  Character and String Manipulations

    What is a Character?
    What is ASCII?
    What support does CUSP provide for Character manipulation?
	Packed arrays of Characters
	New addressing mode
	Character constants ('a', 'abc')
    What is a string?
    What is a null-terminated string, why does it matter?
    How do you convert from Characters to integers, and back?

Chapter 8:  I/O and Interrupts

    What is I/O?
    What I/O devices does CUSP support?
	CRT
	Keyboard
	Printer
	Tape
	Timer
    What registers do each of these above devices require, and why?
	Status register, Control register
    What is the difference between I/O-mapped and Memory-mapped I/O?
	How you can tell the difference by looking at the instruction set
    Which approach does CUSP use?
    What are three ways to check status of I/O device?
	Busy-waiting
	Polling
	Interrupts
    What are Interrupts?
    What modifications to the FDE cycle are needed to support Interrupts?
    What hardware modifications are necessary?
	INT, RTI Instructions (why are they different?)
    How can interrupts be turned on and off?
    Why would I *want* to turn one off?
    What are the steps that are followed when an interrupt is detected?
    How do each of the I/O devices work?
	CRT supports both mapped and unmapped 
	Timer counts down, uses 24-bit count register, counts what?
	Printer has Off-line, etc. status bits
	Tape drive supports DMA, what is it and why?
	Keyboard has buffer, why?
    What is an "interrupt vector"?

General:
    You should now know all the addressing modes, how each of them works.  
You have also been introduced to all of the instructions.  You should 
expect to see a program that you will be expected to mentally single step 
through and execute.  It is also a comprehensive exam, so make sure you 
understand the stuff from the first exam as well (you might expect to see 
a floating point question, for example, something like that.)