Title: Reentrant Functions
1Chapters 9-10 Memory-Mapped I/O Exceptions
Interrupts
Notice Chapter slides in this series
originally provided by B.Britton. This version of
chapter 9-10 slides have been created by
R.Renner to reflect Spring 2006 course content.
2Memory-Mapped I/O
- Mechanism used to communicate with external (to
processor) devices - M68K move instructions w/absolute long address
- Address corresponds to a device register
- Device connected to system bus, like CPU and
memory (see figure 9.1) - Processor can both inquire and modify state of
connected device, simply
Renner slide
3System Bus with Typical Keyboard/Display
Interface
M68K CPU
Main Memory
Read-only
Control KEYBOARD Data (2 8-bit
registers)
Interrupt Enable
Ready
Read-only
Read-only
Control DISPLAY Data (2 8-bit registers)
Interrupt Enable
Ready
Write-only
Fig.9.1 from Britton text
Disk Controller
Renner slide
Ethernet Controller
4Device Controllers
- Provide interface protocol for programmers
- Provide registers for communication
- Number of available device (receiver) registers
grows with complexity
Renner slide
5Keyboard Controller
- Method 1 polling
- gt ready bit (lsb) interrupt enable bit
- Keypress load data register with key value,
ready bit with 1 - Example mapping (assume byte addresses are
E00100 and E00101) - CkKEYBD
- move.b E00100,D0 Read from kbrd control
register - btst.b 0,D0 Test kbrd ready bit (bit 0)
- beq CkKEYBD Branch if ready bit D0 equals 0
- move.b E00101,D1 Get char from kbrd data
register - Notice btst instruction (bit test)
Renner slide
6Display Controller
- Method 1 polling
- gt ready bit (lsb) interrupt enable bit
- Ready-to-Receive controller sets ready bit
to1 - Example mapping (assume byte addresses are
E00102 and E00103) - CkDisplay
- move.b E00102,D0 Read from display control
register - btst.b 0,D0 Test display ready bit (bit 0)
- beq CkDisplay Branch if ready bit D0 equals 0
- move.b D1,E00103 Send char to display data
register - Notice btst instruction (bit test)
Renner slide
7Exceptions
- An event or condition that initiates a change in
the normal flow of program execution - (see Easy68K Help-Sim.Op-Exceptions)
- examples
- breakpoints, trace, pause, reset, interrupts,
illegal instructions, privilege violation
(supervisor bit in SR), TRAP, CHK, Div/0, address
errors (word cannot bind to odd address), bus
errors - (virtual refs must be between 0-FFFFFF)
Renner slide
8Exception Processing
Exception processing begins by creating the
appropriate exception stack frame for the
particular exception group on the supervisor
stack. Then, the supervisor mode is turned on and
trace mode is turned off. After that, instruction
execution resumes at the location referenced by
the appropriate exception vector. Â When the
simulator starts up the supervisor bit is set on
and the supervisor stack pointer is set to the
value 1000000 (hex). Note that the stack grows
downward, so the stack frame for any exceptions
will grow from 1000000 (hex) downward.
Renner slide
9Exception Vector Locations for Easy68K
 Address (Hex)        Assignment           000 Â
  Reset Initial SSP  004    Reset Initial
PC 008    Bus error  00C    Address
error 010    Illegal instruction 014   Â
Divide by zero 018    CHK instruction 01C   Â
TRAPV instruction 020    Privilege
violation 024    TraceÂ
Address (Hex)         Assignment        028  Â
 Line 1010 emulator 02C    Line 1111
emulator 064    Level 1 Interrupt 068   Â
Level 2 Interrupt 06C    Level 3
Interrupt 070    Level 4 Interrupt 074   Â
Level 5 Interrupt 078    Level 6
Interrupt 07C    Level 7 Interrupt 080-0BC
TRAP instruction vectors
Renner slide
10Interrupts
- Special type of Exception
- Signal coming from external device
- Asynchronous -gt Hardware initiated by controller
supported by driver - Syncrhonous -gt Programmable timer w/polling
11Practice INTERRUPTS
- RUN BALL program modify (using synchronous
polling of toggle switches) - Your program will use the LED display to produce
the effect of a red ball that constantly bounces
back and forth. In addition make use of one of
the seven-segment display units to dynamically
report the position of the red ball, which will
range from position 0 to position 7. In addition,
the rate that the ball bounces back and forth
will be controlled by the settings of the toggle
switches. When all toggle switches are in the
zero position the ball should not move. With any
one toggle switch in the 1s position the ball
should start moving. As more toggle switches are
set to the 1s position the ball should move
faster. The speed of the ball will be a function
of how many toggle switches are in the 1s
position. In other words, a user can specify
eight different speeds for the bouncing ball, and
the user can change the speed at any time while
the simulation is running. Hint Within you
program there will be a wait loop. The longer the
program is in the wait loop the slower will be
the movement of the ball. In my case a wait loop
counter in the range of 1million decimal or
100000 hexadecimal was a starting point to
experiment with the wait loop counter. You will
have to fine tune your wait loop counter
depending upon the speed of your computer.