Monthly Archives: September 2006

Fold proteins in your living room


There has been a lot of Sony bashing in the past few months regarding the Playstation3: it costs too much, ampoule there won’t be enough units shipped, help the game-play will be indistinguishable from XBOX360, healing no rumble features, etc. Amidst this, Sony demonstrated a PS3 version of the Stanford Folding at Home project last month. This project aims to use up spare CPU cycles on individuals’ machines (who opt-in) and use them to simulate protein folding which can then be used to determine sources of various diseases. Back when the Playstation2 was released, the CPU could perform enough floating point ops to classify it as a super computer and therefore raised some worries with export control. Sony used this spin to the fullest to press the idea that their architecture was more than just a game system. They released a Linux distribution for the PS2 which was then employed in creating various PS2 clusters for computation. While Microsoft touts it’s ability to render sweat beads on athletes and Nintendo unveils the next generation of interface products, Sony is still sticking to it’s guns in regards to the Playstation’s abilities beyond a simple game system. Doesn’t matter if you hate or love Sony, there is nothing better for the consumer than an all-out console war.

Card reader wrap-up


Finally finished a rough card reader for my 8051 (formerly PS3 emulator) board. The board runs the program from NVRAM which starts at 0×8000, order so the included hex file starts there. This is in no way efficient as it just polls the various control lines on the card reader and calls most of the I/O routines from PAULMON2. Because of this, see the cards should be swiped slowly if this is to be used. One final note is that the software strips the leading and trailing zeros from the data and the first hex number is total bits read from the card.

106902224_342397348_0.jpeg ( card-test.c ) ( card-test.ihx )

Hooking into PAULMON2′s functions with SDCC


An easy way to develop programs for the 8051 is to build a board and write the PAULMON2 monitor to the chip. Furthermore, it is useful to hook up an max232 chip for rs-232 functionality as well as a NVRAM chip for program storage and a reset button. The PAULMON2 monitor has plenty of built-in routines, so, here is a very simple example of accessing the built-in features using code taken from Dr. Kin Hong Wong‘s class site.

A timing trick with the AT89S51 UART

When setting the baud rate on the S51 UART, there are four modes. Two of these modes divide the clock rate by either 16 or 32 and use that to set the baud rate, while the other two modes are triggered based on Timer1 overflow. Most places recommend that you set Timer1 into mode 2: 8 bit timer with auto reload. In this mode, you set TH1 to some value (>255) which will cause it to verflow every (CLOCK RATE)/([192 or 384]*(desired baud rate)). This can work well if you have a crystal that matches a baud rate pretty well, but that is not allways the case. If you have a crystal that does not give a desired baud rate, or you want to automatically detect the baud rate (as is done in PAULMON2) fancier timing may be needed. The benefit of mode 2 for Timer1 is that it breaks up the 16-bit timer into high and low bytes, TH1 and TL1 respectivly. TL1 is used for the timer, and every time it overflows, it is set to the value of TH1 and the timer is restarted. By using the timer in 13-bit or 16-bit modes, we can have better timing control than with the 8-bit mode. The downside is that the timer does not auto reload so we need to use an interrupt handler (for IE1) to manually reload the value. Don’t forget to take into account the time it takes to execute instructions involved in handling the interrupt and returning in your calculations. With this in hand, you can have a wider choice of crystals for a certain baud rate. Don’t worry about getting very close to it, that is, dont worry about getting higher resolution than provided by your clock source, as it wont do you any good.

A particularly elegant way is demonstrated by Paul Stroffregen in PAULMON. PAULMON waits for a CR character to be sent to determine the effective baud rate. It uses a timer to measure bit transmission times as it matches the bit pattern for the CR and then sets the baud rate based on those calculations. The source code is available so it provides a nice example. (This document notes that as much as a 2.5% communication clock mismatch is tolerated.)
( doc4316.pdf ) ( doc2487.pdf )

New browser (Browzar) Old marketing tactic


[Pretty stupid clip-art, drug right?] A new browser, pills Browzar, has been gaining media attention as a tool aimed at protecting the user’s privacy in an increasingly invasive world. This browser is a ~200KB download that is supposed to leave no traces of whatsoever on the computer used and is able to give the user more by deleting “internet caches, histories, cookies and auto-complete forms” according to Infoworld. Too good to be true? Fortunately, some (mikx, Brian Porter, Steven Scheffler, Juha-Matti Laurio and Colin Copley) full-disclosure readers did some investigation to show otherwise. I used some tools from Sysinternals to repeat their exercises and visited microblog using Browzar to see what happened. The browser itself is just a wrapper for the Internet Explorer API with no menus. It turns out that it does indeed keep files on the sites you visit, which are apparent when using FileMon, which stay there after the browser is closed. So much for “no traces.” Since there are almost no configuration options for the browser, the start page, along with a few others, is hardcoded into the binary. The start page happens to be a search page which is hosted at and returns mostly “sponsored” links. Other info about the site is pretty limited at this time: it is a single windows 2003 server machine located at 1&1 server hotel and the domain was registered using a German registrar. Looks like another front end for a commercial search engine trying to capitalize on peoples’ fears.

(PS: Don’t hold your breath for the Linux and OSX versions.)