CS 686 PROJECT #1 Due: 7:30pm Tuesday 03/20/07 This project explores the concept of "console redirection" and asks the student to implement some interrupt-handlers that will execute using Intel's Extended Memory 64-bit Technology (i.e., 64-bit mode). PROBLEM STATEMENT Write an assembly language program (named 'useisr64.s') that allows a user to watch a dynamically updated display of the current time-of-day for at least fifteen seconds while executing on our Core-2 Duo platforms in IA-32e mode. Your program will need to employ interrupt-handlers for both the timer-tick interrupts and the serial-UART's THRE-interrupts, so that time-keeping is kept current and the screen-display remains visible during your program's execution. Your program must begin executing from 'real-mode', must make the transition to IA-32e mode, and must return to real-mode at the conclusion of its execution. And, in order that it can be loaded from the hard-disk's partition (i.e., device-file '/dev/sda4') using our 'cs686ipl.b' boot-loader, your program must be small emough to fit within 127 logical blocks on the disk. (This requirement can easily be met because you will not need a very large amount of code and data.) SUGGESTED DEVELOPMENT METHODOLOGY It will likely be difficult to develop your entire project directly on our remote Core-2 Duo machines since you will not be able to view any debugging information, once you have entered protected-mode, until after you have created a working version of your interrupt service routine for for the serial-UART's interrupts. (Indeed that's the very problem which motivates us to tackle this programming assignment in order that we will be able later in our course to explore 'Virtualization Technology' using those remote machines.) Therefore, we recommend developing a version of your project for our classroom machines (using 32-bit protected-mode) as a preliminary step, to get your interrupt-handler for the UART's console redirection capability working properly before you try porting it to 64- bit code that can only be executed for now on our Core-2 Duo platforms. We will provide you with some code-samples to help you with this step. WHAT TO SUBMIT Your project-submission will consist of two required parts: (1) a paper-printout of your source-file (i.e., 'useisr64.s'); (2) electronic copies of all three of your program-files; Use the 'ljpages' utility-program (under 'System Software' on our cs686 website) to produce your printout on a laserprinter in our classroom or in one of the Harney Fifth-Floor CS Labs -- Be sure your printout shows YOUR NAME as the project's programmer -- and turn in your 'printout' to the instructor's mailbox (Mathematics Office: Harney-222). Submit your three program files (i.e., 'useisr64.s', 'useisr64.o' and 'useisr64.b') by copying them into your '/submit' directory where your instructor can find them for doing testing and grading: $ cp useisr64* /home/submit/cs210//. _______________________________________________________________________ Allan B. Cruse University of San Francisco Spring 2007