Welcome to Greg's home page

I'm Richard Gregory AKA Greg AKA Richie, I've completed a Computer Science degree at Liverpool University, a Phd and now in an RA postion continuing the work of the PhD. One of the exercises in the first year of the degree was to write a web page, so here it is. It has been updated each year to keep it reasonably up to date, though some of it hasn't been touched since I first wrote it all those years ago. This page hasn't been updated since 2001, which shows its age. Have instead focused on some various projects.

In those few spare minutes available between doing Phd related things, I enjoy (or did enjoy as this site has now developed a history):

I also try to maintain and build on a large collection of useful(honestly!) fortune cookies. There are approx. 60000 fortune cookies available for grabs. They range from famous quotes (computer science, English literature, applied maths, pure maths, physics, psychology, The Simpsons) to jokes and sayings to political slogans. All in all, a very mixed bag which nobody has ever dared organise.


Tibby taking in the rays

A faded black and patchy light brown tabby that knows what he wants and how to get it. This picture was taken about a year before he died, it was one of the few chances I had to frame grab him. He was enjoying himself in the summer sun.

Sadly Tibby's liver gave up and he spent some time in pain. He was put down in late October 1998 aged 19 years, smiling to the end. He continues to be missed.


Chilling Charley

The next best thing to Tibby is another cat, so I now have Charley. He was bought at local cattery who had rescued him from his previous owner, who kept him outside in a coal bunker.

Charley is about 4 years old and the entirely black expect for a patch of 50%-50% black/white hairs on his chest. So far he doesn't speak to me much, he is just to timid and shy. I have seen his playful side every now and again, he should turn out to be a very nice cat when he recovers.


My personal choice for music in the car and at home is fairly varied but includes the artists/groups Tori Amos, Portishead, Radiohead, Beauitiful South and Alanis Morissette. Needless to say, these links are a quick introduction and I don't always agree with what they say, I listen to the music not follow their lives.

Obviously music is a personal choice, so in the company of others something like Euphoria Chilled fits in well. I would describe it as unobtrusive.


When anything else is too much like hard work, I'll read a book by say... Robert Rankin, Terry Pratchet, Iain Banks and occasionally Patricia Cornwell.


The old faithful Amiga 1200 retired when I graduated, it was replaced with a PC. Having had the pleasant experience of UNIX and the unpleasant experience of Windows, I decided a UNIX clone was the way to go. Linux was installed and I've have never looked back since. The only problem with Linux and all of UNIX seems to be the number of settings that can be changed to suit personal taste, it is too easy to spend a very long time making things just right.


Most people I know don't have a web site and I'm not about to tell you about them when they can't themselves. However Peter, Steve and Paul all have ome form of home page.


With the arrival of a PC came the possibilty to play some real games. A personal favorite is Unreal Tournement. The idea is easy enough, control a player from its visual point of view, run around and shoot everybody in sight. Not mentally taxing but that is the idea.

C Coding

The project on the go (before going to Liverpool University) was a texture mapped polygon 3D engine that aimed to be real time. It was the sort of thing that Descent and Quake became. Unfortunately it was held back by the lack of power my Amiga could supply and my inability to optimise the biggest slowdown of the algorithm - the use of a divide per pixel.

The divide per pixel problem could have been sorted out, using some approximating algorithm or calculating every now and then but the speed of my Amiga still held it back.

Since then other people with the time and money have taken the idea of a 3D engine far beyond what I could have done. So this project is now more of a curiosity than anything else, I could never have envisioned the explosion in 3D hardware...

During Uni I've had time to do some small projects of various sizes, some of which are on the latter end of this page.

PIC Programmer - Hardware/software project the programs the PIC series micro controller

PIC simulator - Software project that aims to simulate the internal workings of the PIC micro controller.

One Cookie - Something to remove duplicate fortune cookies. Uses CRC checks and indexes to speed up the otherwise lengthy and memory intensive process.

Snake - An investigation into the movements involved in simulating walking. In this case it was a snake (okay so it doesn`t actually walk...). Other ideas tested have been on quad and many legged cyber creatures. That this project needs is a little more design now some of the problems have been highlighted.


During the first year of uni I was an enthusiastic poster on Fidonet; a amateur electronic mail network that spreads one way or another around the world. In practice the actual coverage is variable since the service provided is free, mail transfer is paid for by the kind efforts of the owners of each BBS the mail is passed between.
A BBS can be called by anyone with a modem, computer and terminal. With the right software you can then select mail areas to join and read/send messages into those areas without being on the phone.
Area topics are diverse, the system I call has approximately 1200 areas. Obviously most are for computers of different platforms but a large number are for just about any general topic or hobby that is vaguely popular.

So what are the problems? Unlike Usenet, mail is transferred between BBS's at night in clumps and so message can take a few days to cross the country (yet they sometimes take the same time to deliver across to east Europe).
Another problem is reliability, sometimes a BBS will disappear because of hardware problems or the operator has suddenly had enough. This can then make messages disappear altogether or take weeks to appear. A related problem is the overall reliability of message transfer, messages have been known to disappear and old messages that should have been removed can appear again. All this is caused by bugs in the mailer software used by various platforms to transfer the mail; although some of these bugs are fixed there is always new software coming out that will have new bugs.

All in all it`s a bit rough around the edges at times but the characters can be friendlier than Usenet since the audience is smaller.

During the second year of Uni, I left Fidonet because of the decreasing traffic level, decreasing number of interesting people and the increasing number of idiots that came with the arrival of the 'web surfing' fad.

I reckon the whole scene was dying with the arrival of easy access to the internet and Usenet which gave generally much better performance for those people who just can't wait (most people).


When I started Uni I had just built a model boat and was trying to learn to fly a model helicopter. The boat was more of an electronics project than anything else, all the control electronics was home brew (diagrams below). Once the boat was completed it lost it's appeal as there is only so much you can do with it; though I suppose you could say that with most things.

The helicopter was put to one side when I had a near miss with a rotor blade. Having just taken off, hovered and then landed (it is not as easy as it sounds); I was revving it up to take off again when one of the main rotors flew off at incredible speed and the helicopter shook itself apart. Its things like that that make you notice just how fragile things (you, it) are.

The bottom line is that a helicopter needs more effort to maintain than I am prepared to expend, all those moving parts need to be kept freely moving. Currently the helicopter has been rebuilt and is ready to try again using my newfound experience of fixed wing flying machines, but I'm in no rush as the maintenance problem will still be there and so will the inevitable engine failure leading to certain doom.
Some of these problems could be because of the model, it is a Sport 500; an early example of model chopper. It isn't very well designed or built and the modern chopper is much better in every way, except the price...

At some point I got involved in flying and building a model plane, which led to other planes.
I started to fly a Super Sixty, which is a basic training model of 60" wing span used by novices to get the basics of flying; such as hand-eye coordination, model orientation (model's left/right opposed to the pilot's left/right). In my opinion the Super Sixty is a reasonable model for the beginner, it is stable and forgiving but is easily broken having a fuselage constructed like a high tension power line made of 1/4" balsa wood. It also requires calm conditions as it's slow speed and lightness make it easily blown around useless you are experienced enough to control it.

Since then (progress was quite quick) I've moved to flying a Mascot, this is a 56" wing span fast trainer made of plywood with veneer covered foam wings. It was bought second hand (cheapest way of doing things) and was distressed before I had it, since then it has had countless flights and 5 crashes of varying severity.
At some point point the Mascot was retired; to be eventually sold to a beginner. In its place was a Baby Boss, a small very fast highly agile model. Apart from teaching and test flying other models, this has been the plane of choice for months now (possibly a year).

There are also plenty of other models in the collection which my Dad owns but doesn't necessarily fly (it seems some people find flying more difficult than others), they are:

Alongside the description are some details of the models wingspan, the size of the engine that powers it (in 1/100th of cubic inch) and the make of engine.

Lately there has also been some electric powered planes, and a new helicopter. Details will follow...


I also like the occasional bit of electronics, usually either gizmos for use on the phone, something in one of the models or something for the computer.

I plan to put the circuit diagrams of a few select circuits here when I can make the space to put them in.

They include:

12V to ATX power supply
Recently continued work on an 12V powered ATX power supply, using ideas and parts suggestions from here. Now have all the required parts to make a full ATX (rather than a partial ATX as he did), but before that it would be a good idea to know the actual power requirements for the motherboard. The tests were a Celeron 1G with Geforce MX440, network card and 380 Meg of PC100, , a Celeron 400 with an old SiS gfx card and 64 meg of PC100 and a VIA C3 533, in a all in one Via Advance 6T with on board LAN and graphics, this was measured at both 533 (133 FSB) and 266 (66 FSB). In the past I've measured a Pentium 166 with on board video, s sound card and 56 meg of SIMMs. The current/power requirments were:
3.3V(A) 5V(A) 12V(A) 5VSB(A) -5V(A) -12V(A) W Machine/state
.36 4.73-4.75 0.19 30 uA 0 30 mA 28 P166 - full load
- 3.48-3.52 0.19 30 uA 0 30 mA 21 P166 - playing MP3
.33 2.76-2.77 0.19 30 uA 0 30 mA 18 P166 - idle
4.1 4.8 0.2 0 0.2 0.04 41 C 1G - full load
3.7 4.3 0.2 0.09 0 0.04 37 C 1G - idle
1.1 2.6 0.1 0.01 0 0.01 18 C 400 - in BIOS
0.9 2.6 0.1 0.01 0 0.01 17 C 400 - Fail boot
0.7 2.5 0.1 0.01 0 0.01 16 C 400 - Fail boot, no gfx card
1.6 2.0 0.2 0.09 0 0.01 18.3 C3 533 - in BIOS
1.4 1.3 0.2 0.09 0 0.01 13.9 C3 266 - in BIOS
Using Linux, full load created with gzip < /dev/urandom > /dev/null, mpg123 was used to play an mp3 on the C400, mpg321 was used on the C3.

If you are interested in power requirements for a UPS, then some figures on power usage as measured from the mains side are:
0.02A Monitor Off, Computer Off
0.04A Monitor on standby, Computer Off
0.27A Monitor Off, Linux in Console and Idle
0.42A Monitor On, Linux in Console, find / > /dev/null
0.42A Monitor On, Linux in Console, both HDs sleeping
0.45A Monitor On, Linux in Console, dd if=/dev/hdc of=/dev/null bs=1k
0.47A Monitor On, Linux in Console, Idle
0.485A Monitor On, Linux in Console, gzip < /dev/urandom > /dev/null
0.525A Monitor On, Windows 98, running Unreal Tournement
0.53A Monitor On, Windows 98, Idle
0.54A Monitor On, Linux, xdm login idle
This was for a Celeron 400 in a complete system. TNT2 gfx, sound card, network card, cdrom, 5400 rpm hd and 256 meg of PC100. The monitor was a 17" low end of the market (1280x1024 at 60 Hz, rather than at 85 Hz).

The 12V to ATX power supply is now complete and tested. The board layout is available here (eps), which implements the schematic found at the above link (which themselves came from datasheets) and also includes a full ATX style ON/OFF from this(eps) schematic. In making the board I spotted some problems with this layout. The ground wires are too hard to get to, the -5V bits should have been moved further right to make more room. Forget the Power Good signal, turns out there was enough room on the bottom left of the board to add the capacitor and resister that the reference used. Would have be better to use the bottom right. While the power supply is on, powering the Celeron 400, the 5V regulator gets really hot and needs a large heatsink. By itself it is too hot to touch in 20 seconds. For the Celeron 400, all other parts ran cool - even the 3.3V regulator. Suggests there is a cut off point above which the regs will need a good heatsink - even though the worst case showed the 3.3/5V regs would give off around 7 W each. So, the layout of the regs I used isn't the most ideal for easy heatsinking. The heavy diodes all ran cold and so are fine as they are. In the BIOS the whole system was drawing 2.5A from the 12V supply. Testing on the Cyrix 3 533, running at 266 Mhz, the 5V reg didn't get quite as hot, and the 3.3V reg was hotter than before. At around 2A on the 12V supply this generally drew less current so it was to be expected. Putting the system into sleep mode it draws 1A, but as the CPU fan was still running, I suspect it can go lower.

Need For Speed Underground 2 LAN game packet relay
NFSU2 can create LAN based games of its own without using EA's server, normally this is limited to machines on the same subnet as the game cannot be told where the server/clients IPs. This program looks for servers on the local subnets and tells remote machines about the server. The combination of this packet relay utility and a Linux VPN (or lots of port forwards) will enable cross LAN 'LAN' based games of NFS 2. Page is here.
Watchdog Timer, hardware and software
Linux i386 hardware based watchdog timer, that is a device that resets the computer if it crashes and locks up. Typically Used for remote adminstration. Given here is the circuit diagram which plugs into the 5-1/4 floppy drive connector and the source code for the watchdog daemon. More details are available from the above link.
Xterm monitor sync-on-green to horizontal/vertical sync mod
Since aquiring some 19" sync-on-green monitors a few years ago, they had always been tied to the low spec computer they came with because the monitor only supported the sync-on-green method of signalling a new line and new frame. Some careful research shows that the extraction of the syncs from green is done by a M52001SP sync signal processor. As the name suggests this is a general purpose chip that can derive a sync from several sources, on green, composite or seperate horizontal/vertial. Even more fortunate was the circuit layout ready to take the pair of 4.7uF capacitors. All it needed was BNC plugs fitting and an obvious pair of link wires.

Alas all is not great, this monitor is also fixed frequency at 1280x1024, 72Hz. So, it must be used in graphics mode with this modeline:
Modeline "XT1280x1024" 135.0 1280 1344 1536 1728 1024 1027 1030 1085
With some tweaking and a supported graphics card it would be possible to use the frame buffer device to generate a high enough frequency to use a text console. Not many cards are supported enough to change the clock rate so the chances are low.
A speed controller
Decodes the pulse width output of a standard radio control receiver and generates a 0 to 100% duty cycle output that will drive around 100 Amps.
This one is very big and definitely isn`t recommended for beginners.
The circuit uses a constant current source to charge a capacitor for the length of time the PWM input is high, the p.d. that it charged to is directly proportional to the length of time the PWM input was high. This is then used as the maximum p.d. for another timer which is continuously triggered and stopped when it reaches the first p.d.. Simple? No, but explaining is difficult.
A on/off controller
Decodes the pulse width output of a standard radio control receiver and switches a relay on or off depending on the pulse width.
Voltage Doubler
Small circuit to support the speed controller (since it required a minimum of around 8 volts (for the op-amp) but running off batteries this couldn`t be assured for long periods of time.
Phone line indicator
Active monitor that lights a few LEDs depending on the status of the phone line. Uses only 14uA when the phone is idle.
Phone ringer delay
Delays the ring of the phone by one RING. Used by some people to disable the initial ring of most phones in the house, leaving only one undelayed phone to be answered quickly. The circuit operates similar to the Auto phone pickup below but instead of directly triggering a relay it triggers a timer which triggers a relay for a short period of time.
Auto phone pickup
Picks up the phone the moment it rings, all the callers hears is a click. Can be used to quickly answer a phone when you`ve expecting a call and don`t want to let the phone ring. I`d originally put this together as a building block for a mini-phone exchange but that grew and grew past the point that I could hope to build it. The circuit works by monitoring the phone line p.d., when in use or idle the polarity remains the same but when the phone rings there is an AC voltage which the circuit spots the negative half of the cycle. The first transistor will then lose it's bias current and allow the Darlington pair(the other two transistors to become biased which then switches on the relay. Why use a relay instead of a transistor? The exchange wants a bi-directional current path when the phone is picked up, so a transistor wouldn`t work. What happens is the (if the polarity would allow 'in use' current) phone continuous to ring, if the polarity is the other way around the phone will stop ringing but (as far as I can remember) it then waits for a reverse current path which isn`t going to be there. I might check this out again and record it better, or just find and use a triac instead...
Master BT phone box
Diagram showing the three components inside an standard BT master box. The capacitor and the resister are for the ring (actually just the capacitor is for the ring, the resister lets the exchange test the capacitor without a phone having to be plugged in.
Slammer(pub game)
Pub game circuit, designed and built to the concept from a customer, a guy from Greece who wanted something more than the usual pub junk. It measures and displays the time between picking up a pint glass and putting it down again (drinking all the contents ASAP). The display houses the main circuit and power supply, a small box which is just a sturdy sensitive switch is connected via a lead a short distance away (so others can see it). Operation is the circuit is relatively simple, a 555 wired in multivibrator mode generates a 100Hz clock signal which is cascaded down three decimal counters(each having a built in display driver). There is also another 555 to reduced the bounce when a glass lands. Only problem with this circuit is the accuracy, at around +-1.5% frequency drift that last digit counting the 100th's was practically useless, not that anybody would notice. Another problem with this design (or rather size of display LEDs) is that the drivers in the counters couldn`t drive the LEDs directly, needing two resisters and a transistor for each of the 21 elements.
PIC16x84 programmer
A PIC series micro controller programmer, that is a complete (if simple) computer on a chip made by one of the many manufacturers. This project was a part software (to drive the programming hardware) and part electronics, the programming hardware itself. The hardware is ultimately just a voltage level converter and a fake disk drive controller. The voltage level converter deals with the signaling voltage difference between the Amiga and the PIC, the biggest problem is a tri-state (0V, 5V, 12V) output to the PIC. The fake drive controller allows the hardware to be coupled to the floppy drive bus and so not use any commonly used ports.
Variable current battery charger
While modeling I found I needed to charge some unusual batteries so I designed this device which allows a adjustable amount of charge current. It is adjustable from 20mA to 500mA using a Buck converter.
This is a scaled down version of something I plan to implement using a micro controller, then I'd be able to implement peak detection and other nice features.

I`ve also got some notes on various frequencies, timing and p.d./current aspects of the digital exchanges as well as various test numbers and other interesting bits. I`ll put these on when they`ve been edited into some sort of order.

Other stuff

Some of the above was in the past, nowadays I put my skills learnt doing the above to some real world problems. These particular problems are the sort that should not be advertised here in case it reduces my freedom.

Should you wish to mail me for some reason: greg at csc.liv.ac.uk

Back to home page.

Greg's home page version 2.3 greg@csc.liv.ac.uk last updated on March 2001
URL of Real Home Page = http://www.csc.liv.ac.uk/~greg/my_home_page.html