labs: what you learn is that problems can arise.
these labs will teach you how to deal with problems when they arise.
in the real world you may be subject to problems that arise from
(dis)honest vendors (e.g. someone sells you a defective component,
or sells you a different component than the one you ask for), etc..
you need to learn how to avoid these problems most of the time,
and how to recover from these problems when they can't be avoided.
if you make an effort (come prepared) the TAs will be much more lenient and understanding if and when you encounter disaster. coming prepared also means that the TAs will also be much more helpful, and willing to help you learn more (e.g. showing eagerness to learn will cause the TAs to show eagerness to teach).
you will learn how to build this very simple device.
lab1 grading and prelab, preparation for prep., build a simple pushbroom (row of 8 lights) and know what these are:
there are lots of things you can connect to your computer; one or more indicator lights (a simple array of lights) is one of the simplest devices you can connect.
pushbroom history, historical, cybernetic photography
LEDs, device drivers, inb and outb
take a look at chaser.c (don't forget the -O2 flag when you compile it, and it must be run as root)
is ok, but the following is better:
FC,12,11,12,FC /* A */
even better is:
11111100 /*A*/
00010010
00010001
00010010
11111100
11111111 /*B*/
etc...
in the above, you can see the shapes of the letters because the binary representation makes this more evident.
let your program simply read the BITS from your array and write to the output.
even better would be to have spaces for the zeros, and just show the ones. instead of a 1, use a "+" sign:
++++++ + + + + + + ++++++
etc...
in this way your source code will be easier to maintain, and easier to edit.
(simple enough task that there's no need for a separate font text file)
low level microprocessor programs can be quite easy to understand if well written.
also, it will help greatly in debugging if you write
++++++
etc, to stderr, while writing the actual data to stdout.
in this way, it's easy to debug.
diagonal line on slight angle...
pushbroom example of device driver timing