Dictionary definition of Windows95-

Windows95- (win-doz-nin-te-fiv) n. 32 bit extensions and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company, that can't stand 1 bit of competition. (Licensed Software.)

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).

win the sympathy of TAs: try to help yourself (e.g. those that show some initiative and get their computers up and running beforehand, and have read over the material are really going to win the sympathy of the TAs as opposed to asking the TA what to do at EVERY step of the way).

Lab 1 will be to understand how to add a very simple new device to your computer and how to extend (in a very simple way) the operating system to talk to and understand your new device

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

pushbroom fonts

pushbroom font data

what's a device driver?

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)

write programs in an easy to understand way:

252, 18, 17, 18,252 /* A */
255,137,137,137,118 /* B */

is ok, but the following is better:
FC,12,11,12,FC /* A */

even better is:
11111100 /*A*/

11111111 /*B*/

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:

   +  +
   +   +
   +  +


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.

demonstration of simple program to do this...


diagonal line on slight angle...
pushbroom example of device driver timing

parallel port pin outs