+ All Categories
Home > Documents > An S-7800A/ FEATURE A second potential problem in ... · the PIC serially or with an 8-bit...

An S-7800A/ FEATURE A second potential problem in ... · the PIC serially or with an 8-bit...

Date post: 24-Jan-2020
Category:
Upload: others
View: 6 times
Download: 0 times
Share this document with a friend
16
CIRCUIT CELLAR ® ONLINE February 2001 1 www.circuitcellar.com/online An S-7800A/ PIC16F877 Journey f FEATURE ARTICLE Fred Eady or the last couple of weeks, I’ve been chasing bits all over the Florida room. The S- 7600A/PIC16F877 Internet Engine is purring, and in this installment, I’ll take you all the way through using it as a web server. However, before I begin the technical discussion, there are some things I need to fix from last month. The boot loader has been revised to fix some bugs and make it easier to use. The PCW builds an Intel hex file and appends the whole thing with a semi- colon followed by the PIC type the file is intended to load into. That semico- lon and the text that followed it drove my boot loader menu crazy. The prob- lem was that the boot loader code didn’t know that the characters follow- ing the last Intel hex line were bogus. It tried to load and analyze them. So, I simply turned off the PIC’s serial re- ceiver in the UART and delayed long enough to allow Tera Term Pro to spout all of the leftover junk characters beginning with the semicolon. A second potential problem in- volved the boot code vector area. If for any reason the Tera Term Pro down- load failed, the boot code vector for the failed program would be retained in the NOPs area. If the S-7600A/ PIC16F877 Internet Engine was al- lowed to restart, it would vector to nonexistent or corrupted code. To avoid this, I rewrite the boot code vector area with NOPs if the download fails. This allows the boot loader to loop and wait until valid code and a valid boot code vector are loaded. I also cleaned up the boot loader listing to make it easier to follow. The results can be seen in Listing 1 . TERA TERM PRO This terminal emulator adds class and a bit of automation to the boot loader PIC code. I assembled a simple macro program to run under Tera Term Pro (see Listing 2 ), which guides you through the S-7600A/PIC16F877 Internet Engine file upload process. Basically, the Tera Term Pro macro (upload.ttl) connects to the S-7600A/ PIC16F877 Internet Engine via a per- sonal computer’s COM2 serial port and uploads code to the PIC16F877 by way of the boot loader code. Let’s analyze the macro beginning with the definitions area. Tera Term Pro uses message boxes that look like their standard Windows counterparts to communicate with you. The boxtitle defines the text that resides in the title area of the message box. The Continuing on his jour- ney, Fred forges a path all the way through to us- ing the S-7800A/ PIC16F877 Internet En- gine as a web server. With an everyday PIC, a C compiler, a tiny firm- ware protocol stack, and some common compo- nents, he shows us how to put them on the Internet. As Fred says, "(There's) light at the end of the Internet tunnel!" Part 2:Reviving It Up Photo 1—Note the box title. It was all done without having to write a single byte of Windows code.
Transcript

CIRCUIT CELLAR® ONLINE February 2001 ������1www.circuitcellar.com/online

An S-7800A/PIC16F877Journey

f

FEATUREARTICLEFred Eady

or the last coupleof weeks, I’ve been

chasing bits all over theFlorida room. The S-

7600A/PIC16F877 Internet Engine ispurring, and in this installment, I’lltake you all the way through using it asa web server. However, before I beginthe technical discussion, there aresome things I need to fix from lastmonth.

The boot loader has been revised tofix some bugs and make it easier to use.The PCW builds an Intel hex file andappends the whole thing with a semi-colon followed by the PIC type the fileis intended to load into. That semico-lon and the text that followed it drovemy boot loader menu crazy. The prob-lem was that the boot loader codedidn’t know that the characters follow-ing the last Intel hex line were bogus. Ittried to load and analyze them. So, Isimply turned off the PIC’s serial re-ceiver in the UART and delayed longenough to allow Tera Term Pro tospout all of the leftover junk charactersbeginning with the semicolon.

A second potential problem in-volved the boot code vector area. If forany reason the Tera Term Pro down-load failed, the boot code vector forthe failed program would be retainedin the NOPs area. If the S-7600A/PIC16F877 Internet Engine was al-lowed to restart, it would vector tononexistent or corrupted code. Toavoid this, I rewrite the boot codevector area with NOPs if the downloadfails. This allows the boot loader toloop and wait until valid code and avalid boot code vector are loaded. Ialso cleaned up the boot loader listingto make it easier to follow. The resultscan be seen in Listing 1 .

TERA TERM PROThis terminal emulator adds class

and a bit of automation to the bootloader PIC code. I assembled a simplemacro program to run under TeraTerm Pro (see Listing 2 ), which guidesyou through the S-7600A/PIC16F877Internet Engine file upload process.Basically, the Tera Term Pro macro(upload.ttl) connects to the S-7600A/PIC16F877 Internet Engine via a per-sonal computer’s COM2 serial portand uploads code to the PIC16F877 byway of the boot loader code.

Let’s analyze the macro beginningwith the definitions area. Tera TermPro uses message boxes that look liketheir standard Windows counterpartsto communicate with you. Theboxtitle defines the text that resides inthe title area of the message box. The

Continuing on his jour-ney, Fred forges a pathall the way through to us-ing the S-7800A/PIC16F877 Internet En-gine as a web server.With an everyday PIC, aC compiler, a tiny firm-ware protocol stack, andsome common compo-nents, he shows us howto put them on theInternet. As Fred says,"(There's) light at the endof the Internet tunnel!"

Part 2:Reviving It Up

Photo 1—Note the box title. It was all done withouthaving to write a single byte of Windows code.

2 February 2001 CIRCUIT CELLAR® ONLINE www.circuitcellar.com/online

rest of the definitions in this area arethe wording that will appear in mes-sage boxes called from various parts ofthe macro. The only exception isuploadfile, which is actually the Intelhex file that is loaded and executed. Inmy macro, this file is called seiko.hexand is actually the web server code.

Moving on to the main macro codearea, you find the label :begin followedby a connect command. The /C=2 tagsays connect to the personalcomputer’s COM2 serial port. Theconnect command returns a resultcode. If the result code is 0, a link toTera Term Pro has not been made. Aresult code of 1 means the link to TeraTerm Pro is good but there is no con-nection to the host. You want a resultcode of 2, which tells you that the linkto Tera Term Pro and the connectionto the host are up.

Result codes of 0 and 1 trigger amessagebox event that informs you ofthe error and disconnects Tera TermPro. A result code of 2 causes themacro code to branch to the :goodlinklabel. A yesnobox is triggered asking ifyou would like to upload code to theS-7600A/PIC16F877 Internet Engine.

If you glance at the boot loaderlisting, you’ll see that an ASCII “u”activates the upload portion of thecode. A yes tells Tera Term Pro to sendthe ASCII “u” to the boot loader code

and wait for the outcome of the up-load process. The S-7600A/PIC16F877 Internet Engine bootloader code will send an ASCII “g” ifthe upload is good and an ASCII “E” ifany of the checksum calculationsdon’t match the original line-by-linechecksums.

As you can see in the macro listing,a “g” is result code 1 and the “E” isresult code 2. This is determined bythe order of the ASCII characters be-hind the wait command. A no answerto the upload question simply keepsTera Term Pro connected and nothingelse. The boot loader will time out andattempt to run the boot vector code.

ROAD TESTNow that you know what the Tera

Term Pro macro is supposed to do,let’s put the code to the test.

Photo 1 is the result of a good con-nection between Tera Term Pro andthe S-7600A/PIC16F877 Internet En-gine. The yesnobox command wasexecuted and the uploadprompt mes-sage is displayed. Let’s select Yes.

The macro branches to :loadcodeand immediately executes a sendcommand that transmits an ASCII“u.” At this point, the boot loadercode listens for characters cominginto the PIC’s serial port. Tera TermPro issues a sendfile command thattransfers the seiko.hex file to the S-7600A/PIC16F877 Internet Engine.The “0” tag on the sendfile commandtells Tera Term Pro to send the file asis without modification of the car-riage return/line feed sequences.Photo 2 is what you’ll see. SerialtestAsync gives you a view of what the S-7600A/PIC16F877 Internet Engineand the Tera Term Pro componentsare doing in Photo 3.

When all of the data in the Intel hexfile seiko.hex is transferred to the S-7600A/PIC16F877 Internet Engine, anupload complete message box is gener-ated by Tera Term Pro. Click “OK”and Photo 4 is the result. The uploadedcode is being executed and is ready tocommunicate with other componentson the S-7600A/PIC16F877 InternetEngine. Before I move on to this phase,I’ll impart some knowledge of thehardware to you.

Photo 2—If you’re wondering what the asterisksare for, they’re just there to let me know the code isrunning.

Photo 3—Tera Term Pro is the DTE device and theS-7600A/PIC16F877 Internet Engine is configuredas a DCE device. Note the status of the modemcontrol signals at this point.

THE HARDWAREThe heart of the S-7600A/

PIC16F877 Internet Engine is the S-7600A. The S-7600A contains all ofthe necessary hardware and firmwareto implement Internet protocols suchas TCP/IP, UDP, and PPP. In additionto 10 KB of on-chip RAM to supportthe protocol stack, the S-7600A has itsown UART. Support circuitry for theS-7600A consists of a 74HC4040 thatdivides the incoming 7.3728-MHzprocessor clock by 32 and a SipexSP3243E RS-232 converter.

Data and command information issupplied to the S-7600A by a Micro-chip PIC16F877 microcontroller. TheS-7600A can take information fromthe PIC serially or with an 8-bit paral-lel configuration. Because thePIC16F877 has a wealth of I/O, I chosethe parallel attachment method. ThePIC is clocked at 7.3728 MHz andprovides clocking for the S-7600Athrough the 74HC4040, which pre-sents 230 KHz to the S-7600A’s clockinput. A Sipex SP3243E RS-232 con-verter IC that allows the PIC’s UARTto interface with Tera Term Pro run-

Photo 4—At this point, Tera Term Pro and the S-7600A/PIC16F877 Internet Engine boot loader havecompleted their tasks and turned over control to theuploaded code.

Photo 5—These two signal lines, power and pro-gramming voltage lines, are standard fare forprogramming PICs.

CIRCUIT CELLAR® ONLINE February 2001 ������3www.circuitcellar.com/online

problem with PIC I/O. PIC I/O is sofast that reads and writes to the samepin can sometimes overlap. The use ofstandard_io makes sure this won’thappen by setting the I/O pin for eitherinput or output before the operation isperformed. This operation gives the I/O pin time to settle and assures a goodread or write to that pin. The rest ofthe pre-main area is standard stuff. Thenormal PIC pin definitions are fol-lowed by the variable defines.

BRANCHING OUTIf you branch to the Menu function,

you’ll find that this function is a bigswitch statement that vectors theprogram execution to various otherfunctions defined in the pre-main area.For instance, the first selection inPhoto 4 calls Get_username( ) and soforth. There are also some routinesthat directly affect the S-7600A. If youtake a look at the S-7600A pins C86and PSX on the schematic, you’ll seethey are tied high. This puts the S-7600A in 68K MPU mode. If you com-pare the S-7600A datasheet timingdiagram with the code in the W_Putcand S_Putc routines, you’ll see that thecode implements the time transitionsfound in the datasheet.

For this application, Tera Term Prois set up to emulate a standard VT-100terminal. For those of you familiarwith DEC equipment, the VT-100escape sequences in the pre-main func-tions will be familiar.

The main program begins executionwith the initialization of the PIC I/Oports. Because I’m using PORTA as adigital I/O port, all of the analog capa-bility of PORTA is disabled. Timer1 is

ning on a PC also supports thePIC16F877.

Boot loader code is initially loadedonto the PIC16F877 using a standardPIC programmer and a header/connec-tor ribbon cable assembly like the oneshown in Photo 5. My PIC programmeruses wide Aries ZIF sockets so I canmake my programming jig using astandard 0.600 header. The connectoryou end up with depends on your PICprogrammer setup.

The important thing is to have thenecessary signals and voltages betweenthe header and S-7600A/PIC16F877Internet Engine for programming thePIC16F877. The business end of the in-circuit programming connector on theS-7600A/PIC16F877 Internet Engine isshown in Photo 6.

If I used the space wisely, thePIC16F877 has enough on-chip dataEEPROM to accommodate the param-eters needed to make a connection tothe Internet. However, there wouldn’tbe enough space left to put a decentHTML image in this memory area. So,a Microchip 24LC256 EEPROM isemployed to hold all of the text neces-sary to connect to the Internet andserve an HTML-based page.

Just to make things interesting, Idecided to throw in a Dallas DS1629time and temperature IC. All theDS1629 needs to operate is a standard32.768-KHz crystal and some room onthe I2C bus. The DS1629 comes hardaddressed and uses the extra pins thatwould normally be address lines forcrystal and alarm connections. The24LC256 is addressed as 0x00 and theDS1629 is addressed at 0x07. TheDS1629 clock is volatile and must bebacked up with a 3-V lithium cell ifyou expect to lose power to your S-

7600A/PIC16F877 Internet Engineafter it is deployed. And, speaking ofpower, a National LM2937 3.3-Vregulator and a standard 9-VDCpower brick powers the whole thing.You can see how it all fits together byperusing the schematic shown in Fig-ure 1 . The real McCoy is shown inPhoto 7.

AS A WEB SERVERThe S-7600A’s protocol stack al-

lows the S-7600A/PIC16F877Internet Engine to play many roles. Inaddition to a web server, the S-7600A/PIC16F877 Internet Engine can beconfigured as a TCP/IP client or an e-mail generator. In this section, I’mgoing to show you how the S-7600A/PIC16F877 Internet Engine can beprogrammed to serve a simple webpage.

The process begins with the menuyou see in Photo 4. After the username,password, and ISP phone number areentered, the date and time can be setand an HTML page can be loaded intothe serial EEPROM. I’ve supplied asample HTML page in Listing 3 . Thetime and date are taken from theDS1629 and inserted into the page justbefore it is served.

Listing 4 is the code necessary toimplement the web server applicationon the S-7600A/PIC16F877 InternetEngine. Let’s start at the top and workour way down. As an experienced PICprogrammer, I found the PCW C pack-age refreshing. The engineers at Micro-chip were good enough to providemost of the supporting include codethat does the housework. All of theEEPROM, S-7600A, and PIC16F877include files were provided by Micro-chip. So, building up the S-7600A/PIC16F877 Internet Engine and theaccompanying software was like work-ing with Lego blocks. The remainderof include files are the standard Cincludes with PIC accents that comewith the PCW compiler.

I know how to write all of thoseI2C and serial drivers, but it’s great tohave them already written for you. Asyou can see in Listing 4, the serial andI2C ports are defined with a simple lineof code for each. The standard_iodeclarations help avoid a common

Photo 6—The extra pins are connected to uncommit-ted I/O lines on the PIC16F877.

Photo 7—This is the first pass of the circuit board.I’ll officially make room for the lithium cell on passtwo.

4 February 2001 CIRCUIT CELLAR® ONLINE www.circuitcellar.com/online

enabled for 8-µs cycles and used as ageneral-purpose connection timer. Theclock and data lines for the EEPROMand DS1629 are floated, and theDS1629 is instructed to keep time andwait for requests for temperature fromthe PIC16F877 before beginning atemperature conversion.

If the username, password, phonenumber, and HTML have been enteredpreviously, a push of the Esc key per-forms a hard reset on the S-7600A anda DTR reset on the external US Robot-ics 28.8 modem. The DTR reset isperformed by writing 0x06 to the S-7600A’s serial port configuration regis-ter.

The next task is to program the S-7600A internal clock divider to obtaina 1-KHz internal clock that is used forS-7600A internal affairs. The clockdivider register contents are obtainedby the following formula:

The clock frequency is the actualfrequency supplied to the S-7600A. Inthis case, that is 7.3728 MHz through a74HC4040 that divides by 32, whichequates to approximately 230 KHz.Doing the math, that gives us a dividecount of 0x00E5.

MAKING CHANGESIn Part 1, I mentioned that I would

like to eventually place a Cermetekmodem module at the S-7600A UARTinterface. The Cermetek modem ofchoice is the CH1786ET, which runs at2400 bps maximum. The reasons forchoosing 2400 bps are:

• The S-7600A/PIC16F877 Internet

Engine won’t be sending largechunks of data.• 2400 bps takes little time toestablish ISP connectivity com-pared to 56-kbps modems.• The Cermetek modem runs atthis speed.• You can use almost any exter-nal modem for initial testing.

So, the S-7600A baud rate divi-sor can be calculated like this:

A simple substitution of knownvalues gives you a data transfer ratedivisor value of 0x005F.

Most of the time, the modem sig-nals are rigged to simulate desiredsignal levels by crossing active pinswith pins expecting activity on the DBshell connector. I chose to implementthe S-7600A’s modem control signalscorrectly because I may want to con-trol data flow in the standard manner.The S-7600A serial port configurationregister allows me to directly controlDTR and RTS. There’s also a bit in theserial port config register that deter-mines who has control of the S-7600AUART and serial port.

At this point, you aren’t ready togive control over to the S-7600A. Thefirst order of business is to dial the ISPand do the PPP thing. So, 0x00 is sentto the S-7600A serial port configura-tion register and DTR and RTS areactivated. The US Robotics modemhas status LEDs and when theWriteSeiko(Serial_Port_Config,0x00line is executed, LEDs on the modemfor DTR and RTS illuminate. Nothingfancy is needed as far as modem con-figuration is concerned, so an AT&F issufficient to set the modem straight.

READY…SET?The modem is ready, but before you

fire off any phone numbers, the S-7600A must be told that PPP modewill be used and the authenticationmethod will be PAP. Then all of thedata entered into the EEPROM via theMenu function in Photo 4 (with theexception of the phone number) isretrieved and placed into the appropri-ate S-7600A registers. The username

and password are written into the S-7600A PAP string register. The lengthof the field precedes the actual data.For instance, if the username is Fred, a0x04 is written to the PAP registerfirst followed by Fred in consecutiveASCII characters. When all of the userdata is entered, a final NULL character(0x00) is written to the PAP stringregister.

The next step is to issue the ATDTmodem command followed by the ISPphone number entered earlier. ThePIC16F877 has control of the S-7600AUART and is responsible for issuingthe dial command. With some extracommand work up front, you can con-figure the US Robotics modem to giveyou result codes during the dial pro-cess. I chose to simply wait for a con-nection, as the US Robotics modemhas a built-in speaker and I won’t beputting this S-7600A/PIC16F877Internet Engine out in the real world. Iarbitrarily set the wait time for 20 s,which should be long enough for aconnection to be established at 2400bps. You should write some code totrack modem and line status if youplan to deploy your S-7600A/PIC16F877 Internet Engine in the field.

GOAfter the PIC16F877 is notified that

the physical connection to the ISP isestablished, the PIC is responsible forpassing the ball to the S-7600A. This isdone by setting the Connection Validbit in the S-7600A PPP control andstatus register. Setting this bit tells thenetwork stack that the layer below itis up and operational. The Use PAP andPPP enabled bits also reside in the PPPcontrol and status register and are setwith the same command used to signal

Photo 8—The IP address is the address given to the S-7600A by my ISP during PPP negotiation. Socket openindicates that the S07600A has passively opened a socketfor listening on Port 80.

Photo 9—Here’s the light at the end of the Internettunnel!

CIRCUIT CELLAR® ONLINE February 2001 ������5www.circuitcellar.com/online

a good connection to the ISP. If youfollow WWII movies, this is where thepilot of the B-17 turns over control tothe guy with the Norden bombsight.The PIC sets the SCTL bit in the serialport configuration register and givescontrol of the S-7600A UART to theSeiko IC and its network stack mecha-nism.

This is the point in the processwhere the S-7600A performs its magic.I’ve taken a full snapshot of the processusing Serialtest Async. I’m providing itto you as a readable file so you canfollow through the PPP negotiationsequence frame by frame, beginning toend. The only information I’ll censor ismy logon password. I’m also includingan Acrobat file that contains theSerialtest Async frame decodes . Usingthe ASCII file in conjunction with thePDF file will illustrate the total PPPprocess.

Bit 0 of the PPP control and statusregister confirms to the PIC16F877that PPP is up and operating. Your ISPassigned IP address is negotiated andPhoto 8 is the Tera Term Pro view ofthe result.

The S-7600A/PIC16F877 InternetEngine’s PIC16F877 code has nowentered the web server loop area. Thecode here checks PPP up status and thecondition of the modem’s DCD pin todetermine if the link is up and func-tioning. The S-7600A is capable ofsupporting two sockets. This webserver application uses Socket 0. Be-cause the S-7600A/PIC16F877 InternetEngine is serving, Port 80 is loaded intothe S-7600A, the server mode is acti-vated, and Socket 0 is brought online.

If no timeouts occur and the linkremains active, a request from a re-mote web browser can be fielded. S-7600A socket status is interrogated toensure that a good connection existsand that the TCP state is listening. If arequest is received from a webbrowser, an HTTP header is con-structed and transmitted followed bythe HTML stored in the 24LC256EEPROM. Time and temperature areobtained from the DS1629 and in-serted into the HTML text. The as-sembled HTML page is then sent to theS-7600A’s socket data register. Thedata is sent and the PIC16F877 waits

for the transmit to complete. Thesocket is then closed and reopenedmaking it ready to serve yet anotherpage of HTML like the one shown inPhoto 9.

I’ve shown you how to take an ev-eryday PIC, a C compiler, a tiny firm-ware protocol stack, and a handful ofcommon components and put them onthe Internet. For those of you whowish to build and experiment withyour own S-7600A/PIC16F877Internet Engine, I’ll post the details ofhow to purchase the kit atwww.edtp.com .I

Fred Eady has more than 20 years ofexperience as a systems engineer. Hehas worked with computers and com-munication systems large and small,simple and complex. His forte is em-bedded-systems design and communi-cations. Fred may be reached [email protected].

Thanks to Mike Garbutt, StephenHumberd, and Rodger Richey for theexcellent PIC application notes (Mi-crochip AN731and AN732) that I usedas models for the S-7600A/PIC16F877Internet Engine.

SOURCES

SP3243ESipex Corp.(978) 667-8700Fax: (978) 670-9001www.sipex.com

PIC16F877 and 24LC256Microchip Technology, Inc.(888) 628-6247(480) 786-7200Fax: (480) 899-9210www.microchip.com

DS1629Dallas Semiconductor(972) 371-4448Fax: (972) 371-3715www.dalsemi.com

LM2937National Semiconductor(408) 721-5000Fax: (408) 739-9803www.national.com

CH1786ETCermetek(408) 752-5000(800) 882-6271Fax: (408) 752-5004www.cermetek.com

Serialtest AsyncFrontline Test Systems(804) 984-4500Fax: (804) 984-4505www.fte.com

Circuit Cellar, the Magazine for Computer Applica-tions. Reprinted by permission. For subscriptioninformation, call (860) 875-2199,[email protected] orwww.circuitcellar.com/subscribe.htm.

6 February 2001 CIRCUIT CELLAR® ONLINE www.circuitcellar.com/online

Listing 1—

(continued)

Listing 1—continued

(continued)

����������������������������������������������������������������������� ����������� ������������������������������������������������������������������������������������������������������������������������������������������ �����������������������������������������������������������������������������������������

� !"#$%&�'�� ���(�)� !"#$%&�'*���(�)�*$+&+���,����,��������,�����������,������,����� %��-����

���������������������������������������������������������� ������ ������������������������������������������������������������������������������������������

�%&* !&�.�-����/���

���������������������������������������������������������� ���������-��� ������� ��0������������1�����������������������������������������������������������

�%&* !&��� �2����0 !3��4$**5%%67�483&�4$**5%%6�9��/��":56�4$**&6;�� �2��<7�483&�4$**&6�9��/��

���������������������������������������������������������� ��� ���������������������������������������������������������������������������������������������������

�%&* !&��������=$3>$32#=?@���2��A�%&* !&����� �=$3>$32: B:@���2��A�%&* !&�������� !>$3@���2��A

����������������������������������������������������������������.����������������������������������������������������������������������������������������������

�������$!+ B!&%� !3�53= 24��@":56��+A7

���������������������������������������������������������������������������������������������������������������������������������������������������������������

� !# !&":56��6/":56@AC":56�+&6 5#2 !7�5+D���!=6/����43*++���� ���B=3=��!=6/���D=E*�����F,����D=E?*�+&6 5#2 !�&!%5+D6&3$6!@+&6 5#2 !A7G

���������������������������������������������������������������������.��������������������������������������������������������������������������������������������

� !# !&E= %��3/":56@":56�+AC":56��+&6 5#2=$37+&6 5#2=$3�9�+7�5+D���!=3/����43*++��-� ���B=3=��!=3/���D=E*�+&6 5#2=$3,����D=E?*��-�F�&!%5+DG

�������������������������������������������������������

���������������F������������������������������������������������������������������������������������������

���F��/���,�/�� $!+ B!&%� !3�53= 24��@":56��+AC���$!+ B!&%� !3�6&+$#3�9��7��� !3� 7

���*=6�@ 9�7� '�7� HHA��C������ *�@�+�)9�I�J�KK��+�'9�I JA���������6&+$#3�9����6&+$#3�H�@�+A�L�I�J�H���7������&#+&� *�@�+�)9�I�J�KK��+�'9�IMJA���������6&+$#3�9����6&+$#3�H�@�+A�L�I�J7

������+HH7���G

���6&3$6!@6&+$#3A7G

����������������������������������������������������������.�������������������������������������������������������������������������������������������������������

���F��/��,�/� E= %�D5 !�@E= %AC

���":56��483&2 !7���+:=63�"=%&2B==%,�!=32%=!&,!=2":56,4==3"=%&*#5B7��� !3��� ,�"=$!3,�# !&238>&,�"+,�":&"N2+$D,5%%6#7���#=!B

4==35%%6,%535,5%%6,5%%6:,4==3"=%&5%%6,3 D6#,3 D6:7

����������������������������������������������������������F���������������������������������������������������������������������������������������������������

�5+D���D=E>:?���4==3"=%&���D=E?*����5%%6:���D=E>#?���4==3"=%&���D=E?*����5%%6#�&!%5+D4==3"=%&5%%6�9�5%%6:�''���O�5%%6#7

������������������������������������������������������������������P��������������0���������������������������������9�������������9����������������������������������������������������������������������������������������

������9��- �7���� 7����F�9��-� 7�-����9��/��7����9��7���9�7

��������������������������������������������������������������� �����������..��� ��.�������.������������������ ������..������������F���.���,����������������$�9�%=?!#=5%�!&?�"=%&�������������������������������������������������������

���3 D6#9�/��7�������������������3 D6:9�/ 7�����������������!=2":56�9����7��������7

���%=C

��������� *@4 323&+3@����,QAAC������������483&2 !�9�6/":56@A7������������!=2":56�9� ���7���������G���������R3 D6:7

��������� *@3 D6:�99��/��AC

CIRCUIT CELLAR® ONLINE February 2001 ������7www.circuitcellar.com/online

(continued)

Listing1—(continued)

������������3/":56@I�JA7������������R3 D6#7������������3 D6:�9�/ 7������������G���G?: #&�@@3 D6#�S9��/��A�KK�@!=2":56�99����AA7

��� *@3 D6#�S9��/���KK�!=2":56�99� ����KK�483&2 !�99I$JAC

���������� 7������B=3=�%=?!#=5%7���G

������������������������������������������������������������������������������������������������������������������������������������������������������������������

����5+D������"#6*��������4==3"=%&�������!=>������!=>������!=>������!=>������B=3=��/������&!%5+D

�����������������������������������������������������������������������-� ��� ��.�������.���������������������������������������������������������������������

%=?!#=5%�

��������!=32%=!&�9����7�����������7

������?: #&�@�AC���������4$**5%%6�9��7���������"=%&2B==%�9����7

���%=�C���������4$**&6;4$**5%%6HH<�9�6/":56@A7

������G�?: #&�@@4$**&6;4$**5%%6L�<�S9��/�A�KK@4$**5%%6'9�� �2��AA7

���������� 7

����������������������������������������������������������������-�����������������������������������������������9�������� ��-�����������������������������������������9���.���� �������������������������������������������9����������������������������������������������9�����������������������������������������������������������������������������������������������������

��������������������������������������������������������������������������-����������������������������������������������������������������������������������

������������������ *�@4$**&6;�<�99�I�JA�C�����������������������"=$!3�9�53= 24���@K4$**&6;�<A7�������������������������5%%6�9�53= 24���@K4$**&6;�<A7���������������������������5%%6�9�@5%%6�''��A�O�53= 24���@K4$**&6;Q<A7���������������������������# !&238>&�9�53= 24���@K4$**&6;�<A7�����������������������������������������������������������T����������������������������������������������������������������������������������������������������

��������� *�@5%%6�S9��A������������5%%6��9��7

������������������������������������������������������������� ��-� ������������������9��-��������������

�������������������������������������������������������

��������� *�@# !&238>&�99��A������������46&5N7

������������������������������������������������������������.��������-��������1��.������������������������������������������������������������������������������

���������&#+&�C������������"+�9��7������������*=6�@ 9�7� '@4$**5%%6L�A7� H9�A���������������"+�H9�53= 24���@K4$**&6; <A7

������������"+�9��/ �L�"+�H��7������������":&"N2+$D�9�53= 24���@K4$**&6;4$**5%%6L�<A7

������������ *�@":&"N2+$D�S9�"+A���������������"=%&2B==%�9� ���7

��������������������������������������������������������������������������-������������������������������������������������������������������������������������

������������&#+&�C��������������� �9�M7���������������?: #&�@ �'�4$**5%%6L�A��C������������������%535�9�53= 24���@K4$**&6; H�<A7������������������%535�9�@%535�''���A�O�53= 24���@K4$**&6; <A7

����������������������������������������������������������������������������������������� �5%%6�'��-���0��������������������������������������������������������

������������������4==3"=%&*#5B�9� ���7������������������ *@5%%6�'��/���0AC���������������������4==3"=%&*#5B�9����7���������������������4==35%%6�9�5%%6�H�4==3"=%&5%%67���������������������?6 3&2>6=B65D2&&>6=D�@4==35%%6,%535A7������������������G

������������������������������������������������������������������������-�����������F��.�..��������������������������������������������������������������������

������� *@@4==3"=%&*#5B�99� ���A�KK�@5%%6�'�.�-��AAC���������������������?6 3&2>6=B65D2&&>6=D�@5%%6,%535A7���������������������G������������������HH5%%67������������������ �H9�07���������������G������������G���������G������G

�������������7���G����������������������������������������������������������� �������-����������������� �������������������������B����������.���������������������������������������������������������������������������������������������������9��7���������3 D6:�9��/ 7���������3 D6#�9��/0�7��������������7

���%=C

���������R3 D6:7

��������� *@3 D6:�99��/��AC������������3/":56@I�JA7������������R3 D6#7������������3 D6:�9�/ 7������������G���G?: #&�@3 D6#�S9��/��A7

��������� *�@"=%&2B==%A���������3/":56@IBJA7

(continued)

Listing1—(continued)

8 February 2001 CIRCUIT CELLAR® ONLINE www.circuitcellar.com/online

����������������������������������������������������������� �������-�����������������������������������������������+����������������������������������������������&����������.��������������������������������������������������������������������������������������

���������&#+&C������������5%%6�9��/��7������������%535�9��/��7������������?: #&�@5%%6�'�0AC���������������4==35%%6�9�5%%6�H�4==3"=%&5%%67���������������?6 3&2>6=B65D2&&>6=D�@4==35%%6,%535A7���������������HH5%%67���������������������������G���������3/":56@IJA7������������G�����������������������������������������������������������������������������������������-���������������������������������������������������������������������������5+D���.�������/�����.��� ���/�����F�������/������&!%5+DG

Listing1—continued

7���������������������7����1���L����������� ������������F���������.����7������������7�������������� ����

7�� ��������

4=/3 3#&�9�I� 6"$ 3��&##56��!# !&J$>#=5%>6=D>3�9�I=�8=$�? +:�3=�$>#=5%�!&?������ ����"=%&UJ$>#=5%* #&�9�I+& N=(:&/J$>#=5%B==%�9�I�>#=5%��=D>#&3&((J$>#=5%45%�9�I�>#=5%�66=6((J# !N%=?!�9�I� !N� +�!=3�&+354# +:&%((J# !N$>�9�I� !N�&+354# +:&%�? 3:�6&D=3&�:=+3((J:=+3%=?!�9�I�!54#&�3=�"=DD$! "53&�? 3:�6&D=3&�:=+3((J

7��.����.�������

�4&B !"=!!&"3�I��9�J *�6&+$#3�9���B=3=�!=# !N *�6&+$#3�9���B=3=�!=:=+3 *�6&+$#3�9���B=3=�B==%# !N

�!=# !ND&++5B&4=/�# !N%=?!�4=/3 3#&% +"=!!&"3&!%

�!=:=+3D&++5B&4=/�:=+3%=?!�4=/3 3#&% +"=!!&"3&!%

�B==%# !N8&+!=4=/�$>#=5%>6=D>3�4=/3 3#& *�6&+$#3�B=3=�#=5%"=%&B=3=�!=#=5%

�#=5%"=%&+&!%�I$J+&!%* #&�$>#=5%* #&��?5 3�IBJ�IJ

Listing 2 —

(continued)

*�6&+$#3�9���B=3=�%=!&B==% *�6&+$#3�9���B=3=�$>#=5%&66=6

�%=!&B==%D&++5B&4=/�$>#=5%B==%�4=/3 3#&&!%

�!=#=5%&!%

�$>#=5%&66=6D&++5B&4=/�$>#=5%45%�4=/3 3#&&!%

Listing 2—continued

'����)����L����������� �����!3&6!&3�!B !&'�����)'4=%8�4B"=#=69���������)'����)'*=!3�+ V&9W�X

"=#=69W� ��X)'4)�������������������'�4)'�*=!3)'>)'*=!3�+ V&9W�X�"=#=69W��� ��X)'4)�L����������� ���

�!3&6!&3�!B !&'�4)'�*=!3)'>)'*=!3�+ V&9W0X�"=#=69W� W)'4)�: +�>5B&� +�4& !B

>6&+&!3&%�48�3:&��& N=��L���������5!%�5�. "6=": >����� ���� �����. "6="=!36=##&6('�*=!3)

'>)'*=!3�+ V&9W0X�"=#=69W� ��X)��5##5+��&D "=!%$"3=6����M� +�>6=E % !B�3:&�3 D&,�%53&�5!%�3&D>&653$6&('�*=!3)'�>)

'>)'*=!3�+ V&9W�X�"=#=69W� � � W)Y3'�*=!3)'�>)'>)'*=!3�+ V&9WQX�"=#=69W� W) #=6 %5��==D��&D>&65L

3$6&� +�Y"�&B6&&+��&!3 B65%&'�*=!3)'�>)'�����)7

Listing 3 —

� !"#$%&�Z��*���(:W� !"#$%&�Z*���(:W� !"#$%&�Z+����(:W� !"#$%&�'"38>&(:)� !"#$%&�'+36 !B(:)

�*$+&+���,����,��������,����������,�����

�%&* !&����.2�������2�0�%&* !&����.2��������2���%&* !&�: @/A�@�@K/H�AA

�$+&�%&#58@"#="N9�������A�$+&�6+���@45$%9�0��,�/D 39���2��,�6"E9���2��A�$+&�+35!%56%2 =@�A�$+&�+35!%56%2 =@�A�$+&�+35!%56%2 =@�A�$+&�+35!%56%2 =@A�$+&� �"@D5+3&6,+%59���.2��,�+"#9���.2���A

�%&* !&����.2�����#=!B� !3�%&* !&����.2��P�������0�%&* !&�&+"��/��

���������4 3+�4 3���-��9������(��4 3��������9������(��4 3��������9������(�

���������4 3+�4 3��������9������(�����:&!�����9���+&!%� +�&!54#&%�4 3��������9������(��4 3��������9������(0

Listting 4—

(continued)

CIRCUIT CELLAR® ONLINE February 2001 ������9www.circuitcellar.com/online

Listing 4 —continued

(continued)

Listing 4—continued

(continued)

�4 3�����-�9������(Q

���������4 3+�4 3������9������(�

+:=63�!&B3&D>7":56� ,[,":,5%%6,3&D>,>=3,*3D>,"3D>,"=$!3,"=$!3�,>5B&7#=!B� !%&/,�4832"!3,�: 3+7":56��=B !;��<7":56�.8���%%6;0<7":56�$+&6;��<7":56�>5++;��<7":56�>:=!&;��<7":56�6&5%2%535;Q<7":56�3&+32+36;�<7":56�6&5%2\;�<7":56�D !+;�<7":56�:=$6+;�<7":56�%58;�<7":56�%53&;�<7":56�D=!3:;�<7":56�8&56;�<7

� !"#$%&�Z+& N=2"3("W ���& N=�6=$3 !&+�$+&�"=%&�*6=D������

�������������������������������������������������������������������":56�535�E5 #54#&@E= %A���������������������������������������&3&6D !&+� *�3:&6&� +�5!8�%535�5E5 #54#&�3=�6&5%�=$3�=*�������3:&��L�����(����������������������������������������������������&3$6!+�3:&�E5#$&�=*�3:&�%535�5E5 #54#&�4 3�*6=D�3:&������������L�����(������������������������������������������������������������������������������������������������������������������":56�535�E5 #54#&@E= %AC

6&3$6!�@�&5%�& N=@�&6 5#2�=632�=!* BAK�/��A7G

�������������������������������������������������������������������E= %��2�$3"@":56�%535A������������������������������������������6 3&+�5�483&�=*�%535�3=�3:&�+&6 5#�>=63�=!�3:&��L�����(������������������������������������������������������������������E= %��2�$3"@":56�%535AC

?: #&@S����A7���9��7���9��7����-�9��7�����9��&6 5#2�=6325357�����9��7��-�9��7��-�9��7����-�9��7���9��7���9��7

���9��7����-�9��7�����9�%5357��-�9��7��-�9��7����-�9��7���9��7

�����9��/**7G

�������������������������������������������������������������������E= %��2�$3"@":56�%535A������������������������������������������6 3&+�5�483&�=*�%535�3=�3:&�+="N&3�=!�3:&��L�����(�����������������������������������������������������������������������E= %��2�$3"@":56�%535AC

���.5N&�+$6&�3:53�3:&�+="N&3�4$**&6� +�!=3�*$##?: #&@�/��99@�&5%�& N=@�/��AK�/��AAC

�6 3&�& N=@���25352�&!%,�A7?: #&@�&5%�& N=@�="N&32�353$+2�AA7

G

?: #&@S����A7���9��7���9��7����-�9��7�����9��="N&325357�����9��7��-�9��7��-�9��7����-�9��7���9��7���9��7

���9��7����-�9��7�����9�%5357��-�9��7��-�9��7����-�9��7���9��7

�����9��/**7G

� !"#$%&�Z&&>6=D("W ���&/3&6!5#�+&6 5#���.�6=$3 !&+�*6=D������

�������������������������������������������������������������������E= %�F&32$+&6!5D&@E= %A�������&]$&+3+�5!%�6&5%+�3:&�$+&6�!5D&�*6=D�3:&� !>$3�3&6D L!5#(�����������������������������������������������������������������E= %�F&32$+&6!5D&@E= %AC

":56�!23D>7 9�7>6 !3*@ZY";�TW,&+"A7>6 !3*@ZY";��7�������":56+�D5/W,&+"A7>6 !3*@ZY";��7����!3&6�$+&6�!5D&��Z,&+"A7

?: #&@�AC

$+&6; <9�7":9F��@A7 *@":99�/�A

46&5N7>$3"@":A7 *@":�S9��/��AC

$+&6; <9":7 HH7

G *@ 99��A�46&5N7

G

���?6 3&�$+&6�!5D&�3=�3:&����.!23D>9�7*=6@ 9�7 '�/� 7 HHAC

":9$+&6; <7?6 3&2&/32&&>6=D@!23D>,�$+&6; <A7!23D>HH7

GG

�������������������������������������������������������������������E= %�F&32>5++?=6%@E= %A�������&]$&+3+�5!%�6&5%+�3:&�>5++?=6%�*6=D�3:&� !>$3�3&6D !5#(�����������������������������������������������������������������E= %�F&32>5++?=6%@AC

483&�523D>7 9�7>6 !3*@ZY";�TW,&+"A7

10 February 2001 CIRCUIT CELLAR® ONLINE www.circuitcellar.com/online

>6 !3*@ZY";��7�������":56+�D5/W,&+"A7>6 !3*@ZY";��7����!3&6�>5++?=6%��Z,&+"A7

?: #&@�AC

>5++; <9�7":9B&3"@A7 *@":99�/�A

46&5N7 *@":�S9��/��AC

>$3"@":A7 *@":�S9��/��AC

>5++; <9":7 HH7

GG *@ 99��A�46&5N7

G

���?6 3&�>5++?=6%�3=�3:&����.523D>9�/��7*=6@ 9�7 '�/� 7 HHAC

":9>5++; <7?6 3&2&/32&&>6=D@523D>,�>5++; <A7523D>HH7

GG

�������������������������������������������������������������������E= %�F&32>:=!&@E= %A�������&]$&+3+�5!%�6&5%+�3:&�3&#&>:=!&�!$D4&6�*6=D�3:&� !>$3������3&6D !5#(�����������������������������������������������������������������E= %�F&32>:=!&@AC

483&�>23D>7>6 !3*@ZY";�TW,&+"A7>6 !3*@ZY";��7�������":56+�D5/W,&+"A7>6 !3*@ZY";��7����!3&6�>:=!&�!$D4&6��Z,&+"A7

9�7?: #&@�AC

>:=!&; <9�7":9B&3"@A7 *@":99�/�A

46&5N7 *@":�S9��/��AC

>$3"@":A7 *@":�S9��/��AC

>:=!&; <9":7 HH7

GG *@ 99��A�46&5N7

G

���?6 3&�>:=!&�!$D4&6�3=�3:&����.>23D>9�/0�7*=6@ 9�7� '��7� HHAC

":9>:=!&; <7?6 3&2&/32&&>6=D@>23D>,�>:=!&; <A7>23D>HH7

GG�������������������������������������������������������������������E= %�F&32� D&@E= %A��

�����&+&3+�3 D&�5!%�%53&���������������������������������������������������������������������E= %�F&32� D&@E= %AC368D !+5B5 !�

>6 !3*@ZY";�TW,&+"A7>6 !3*@ZY";��7����!3&6�D !$3&+���LQM��Z,&+"A7

9�7?: #&@�AC

D !+; <9�7":9B&3"@A7

>$3"@":A7 *@":�'��/���KK�":�)��/� AC

D !+; <9":7 HH7

G���������&#+&������������B=3=�368D !+5B5 !7

*�@ 99�A����������46&5N7

G��� *@D !+;�<�)��/�QA������B=3=�368D !+5B5 !7

+?5>@D !+;�<A7D !+;�<�K9��/ �7D !+;�<�K9��/� 7D !+;�<�9�D !+;�<�O�D !+;�<7

368:=$6+5B5 !�>6 !3*@ZY";��7����!3&6�:=$6+���L����Z,&+"A7

9�7?: #&@�AC

:=$6+; <9�7":9B&3"@A7

>$3"@":A7 *@":�'��/���KK�":�)��/� AC���:=$6+; <9":7

HH7G

���������&#+&������������B=3=�368:=$6+5B5 !7

*�@ 99�A����������46&5N7

G������ *@:=$6+;�<�99��/���KK�:=$6+;�<�)��/��A������B=3=�368:=$6+5B5 !7������ *@:=$6+;�<�)��/��A������B=3=�368:=$6+5B5 !7+?5>@:=$6+;�<A7:=$6+;�<�K9��/ �7:=$6+;�<�K9��/� 7:=$6+;�<�9�:=$6+;�<�O�:=$6+;�<7

368%585B5 !�>6 !3*@ZY";��7����!3&6�%58��L��@�$!%58�9��A�

Z,&+"A7

9�7?: #&@�AC

%58; <9�7":9B&3"@A7

>$3"@":A7 *@":�'��/���KK�":�)��/� A��%58; <9":7&#+&

Listing 4—(continued) Listing 4—(continued)

( Continued ) (Continued)

CIRCUIT CELLAR® ONLINE February 2001 ������11www.circuitcellar.com/online

�����������B=3=�368%585B5 !7�����������46&5N7

G������ *@%58;�<�)��/��A������B=3=�368%585B5 !7%58;�<�9�%58;�<�K��/� 7

368%53&5B5 !�>6 !3*@ZY";��7����!3&6�53&���L����Z,&+"A7

9�7?: #&@�AC

%53&; <9�7":9B&3"@A7

>$3"@":A7 *@":�'��/���KK�":�)��/� AC

%53&; <9":7 HH7

G���������&#+&������������B=3=�368%53&5B5 !7

*�@ 99�A����������46&5N7

G��� *@%53&;�<�)��/��A������B=3=�368%53&5B5 !7��� *@%53&;�<�99��/���KK�%53&;�<�99��/��A������B=3=��368%53&5B5 !7��� *@%53&;�<�99��/���KK�%53&;�<�)��/��A������B=3=��368%53&5B5 !7

+?5>@%53&;�<A7%53&;�<�K9��/ �7%53&;�<�K9��/� 7%53&;�<�9�%53&;�<�O�%53&;�<7

368D=!3:5B5 !�>6 !3*@ZY";�07����!3&6�.=!3:���L����Z,&+"A7

9�7?: #&@�AC

D=!3:; <9�7":9B&3"@A7

>$3"@":A7 *@":�'��/���KK�":�)��/� AC

D=!3:; <9":7 HH7

G���������&#+&������������B=3=�368D=!3:5B5 !7

*�@ 99�A����������46&5N7

G��� *@D=!3:;�<�)��/��A������B=3=�368D=!3:5B5 !7��� *@D=!3:;�<�99��/���KK�D=!3:;�<�99��/��A������B=3=��368D=!3:5B5 !7��� *@D=!3:;�<�99��/���KK�D=!3:;�<�)��/��A������B=3=��368D=!3:5B5 !7

+?5>@D=!3:;�<A7D=!3:;�<�K9��/ �7D=!3:;�<�K9��/� 7D=!3:;�<�9�D=!3:;�<�O�D=!3:;�<7

3688&565B5 !�>6 !3*@ZY";�Q7����!3&6��&56���LMM��Z,&+"A7

9�7?: #&@�AC

8&56; <9�7":9B&3"@A7

>$3"@":A7 *@":�'��/���KK�":�)��/� AC

8&56; <9":7 HH7

G���������&#+&������������B=3=�3688&565B5 !7

*�@ 99�A����������46&5N7

G

+?5>@8&56;�<A78&56;�<�K9��/ �78&56;�<�K9��/� 78&56;�<�9�8&56;�<�O�8&56;�<7

�"2+3563@A7 �"2?6 3&@�/MA7 �"2?6 3&@�/��A7

��� �"2?6 3&@�/��A7��� �"2?6 3&@�/��A7�����������+&3�+&"=!%+�3=������ �"2?6 3&@D !+;�<A7��������+&3�D !$3&+��� �"2?6 3&@:=$6+;�<A7�������+&3�:=$6+��� �"2?6 3&@%58;�<A7���������+&3�%58��� �"2?6 3&@%53&;�<A7���������+&3�%53&��� �"2?6 3&@D=!3:;�<A7�������+&3�D=!3:��� �"2?6 3&@8&56;�<A7��������+&3�8&56��� �"2+3=>@A7

G

�������������������������������������������������������������������E= %��&5%2* #&@E= %A�������&]$&+3+�5!%�6&5%+�3:&���.��?&4�>5B&�3:53� +�+&!3�?:&!������6&]$&+3&%�48�5�?&4�46=?+&6(�������: +�6=$3 !&�+36 >+�=$3�5##�"566 5B&�6&3$6!+�5!%�# !&L������*&&%+�*=$!%� !�3:&�* #&(���3�5#+=�#==N%+�*=6�5�+&D L������"=#=!�3=�&!%�3:&�* #&(�����������������������������������������������������������������E= %��&5%2* #&@AC��>6 !3*@ZY";�TW,&+"A7����6 !3�6&]$&+3�3=�3:&�3&6D !5#��>6 !3*@ZY";��7�����&5%8�3=�6&"& E&�* #&W,&+"A7��>6 !3*@ZY";��7����������483&+�D5/W,&+"A7��>6 !3*@ZY";�07����!%�* #&�? 3:�7W,&+"A7��>6 !3*@ZY";��7�����&3�8=$6�3&6D !5#�*=6�����56%?56&� #=?��=!36=#W,&+"A7

":9�7 9�7 !%&/9�/Q�7

?: #&@�AC

����9��7":9B&3"@A7����9��7 *@ !%&/�99������A

46&5N7 *@":99��A

46&5N7 *@":99J7JA

46&5N7

����3:&6? +&�?6 3&�":565"3&6�3=����.?6 3&2&/32&&>6=D@ !%&/,�":A7

!%&/HH7

Listing 4—continued Listing 4—continued

(continued)(continued)

12 February 2001 CIRCUIT CELLAR® ONLINE www.circuitcellar.com/online

G?6 3&2&/32&&>6=D@ !%&/,��A7 ����6 3&�3&6D !53 !B�����

����9��7

����6 !3�+353$+�=*�%=?!#=5%�3=����. !%&/�9� !%&/�L���7>6 !3*@ZY";�TW,&+"A7>6 !3*@ZY";��7�����&"& E&%�Y#$�483&+W,&+", !%&/A7 *@ !%&/�)������A

>6 !3*@ZY";�������66=6�D5/ D$D�483&+� +������W,&+"A7>6 !3*@ZY";��7�Q���6&++�5!8�N&8�3=�"=!3 !$&W,&+"A7":9B&3"@A7����9��7

G

�������������������������������������������������������������������E= %� ! 323&D>������ ! 3 5# V&�3:&�����M����������������������������������������������������������������������E= %� ! 323&D>@AC��� �"2+3563@A7��� �"2?6 3&@�/MA7��� �"2?6 3&@�/��A7��� �"2?6 3&@�/��A7��� �"2+3=>@A7���G

�������������������������������������������������������������������E= %�.&!$@E= %A������ +>#58+�D&!$�=!�$+&6J+�3&6D !5#�+"6&&!(��##=?+�":5!B&+������3=�$+&6!5D&,�>5++?=6%,�>:=!&�!$D4&6�5!%�?&4�>5B&(�����������������������������������������������������������������E= %�.&!$@E= %AC

9�7

?: #&@":�S9��/��AC

���������9�7>6 !3*@ZY";�TW,&+"A7

>6 !3*@ZY";�7�Q������!3&6�$+&6�!5D&W,&+"A7>6 !3*@ZY";�7�Q������!3&6�>5++?=6%W,&+"A7>6 !3*@ZY";��7�Q������!3&6�>:=!&�!$D4&6W,&+"A7>6 !3*@ZY";��7�Q��0����&3�� D&�5!%�53&W,&+"A7>6 !3*@ZY";�07�Q��Q���=?!�#=5%���.��* #&W,&+"A7>6 !3*@ZY";��7�������&/ 3W,&+"A7

":9B&3"@A7�����F&3� !>$3�5!%�>6="&+++? 3":@":AC

"5+&��/�������I�J�L)�":5!B&�$+&6!5D&F&32$+&6!5D&@A746&5N7

"5+&��/�������I�J�L)�":5!B&�>5++?=6%F&32>5++?=6%@A746&5N7

"5+&��/��������I�J�L)�":5!B&�>:=!&��F&32>:=!&@A746&5N7

���������"5+&��/�0������I0J�L)�":5!B&�3 D&�5!%�%53&���������F&32� D&@A7���������46&5N7

"5+&��/�Q� ���IQJ�L)�!&?�?&4�>5B&�&5%2* #&@A746&5N7

GG���9�7

G

�������������������������������������������������������������������E= %�D5 !@E= %A�����������������������������������������������������������������E= %�D5 !@E= %AC

����!3 5# V&�����+�K�����+��������������-�������������������������������������9��/ M7 ����������

����������������������������������������0���������������Q������-

������9��/��7 ����������

������������������������9��/��7 ����������

�����9��/��7 ����������

����������������������������

�����9��/ �7 ����������

������9��/�7 ����������������9��/��7���������������������9��/��7 ���������������9��/ 7 ���������������9��/��7 ����������

������9��/��7 ���������� 5##�% B 35#������9��7

������9��/��7 ���������� � D&6�

����9��7

! 32&/32&&>6=D@A7��� ! 323&D>@A7

.&!$@A7

6&+3563�����9��7

�������6 3&�& N=@�&6 5#2�=632�=!* B,�/��A7%&#582D+@��A7����9��7

�6 3&�& N=@�#="N2 E2�,�/QA7?: #&@�&5%�& N=@�#="N2 E2�A�S9��/QA

�6 3&�& N=@�#="N2 E2�,�/QA7�6 3&�& N=@�#="N2 E2�,�/��A7

�6 3&�& N=@���2�53&2 E2�,�/Q A7�6 3&�& N=@���2�53&2 E2�,�/��A7

�������6 3&�& N=@�&6 5#2�=632�=!* B,�/��A7

������>6 !3*@�2�$3",W��K ^6WA7%&#582D+@��A7

�6 3&�& N=@���2�=!36=#2�353$+,�/��A7�6 3&�& N=@���2�=!36=#2�353$+,�/��A7�6 3&�& N=@���2�=!36=#2�353$+,�/��A7%&#582D+@QA7

Listing 4—continued Listing 4—continued

(continued) (continued)

CIRCUIT CELLAR® ONLINE February 2001 ������13www.circuitcellar.com/online

":9�7 9�7?: #&@":AC

":�9�6&5%2&/32&&>6=D@ A7 HH7

G R7�6 3&�& N=@���2�36 !B, A7

*=6@[9�7�[' 7�[HHAC

":�9�6&5%2&/32&&>6=D@[A7�6 3&�& N=@���2�36 !B,":A7

G

":9�7 9�/��7?: #&@":AC

":�9�6&5%2&/32&&>6=D@ A7 HH7

G R7 9@ L�/��A7�6 3&�& N=@���2�36 !B, A7

*=6@[9�/��7�['@ �H��/��A7�[HHAC

":�9�6&5%2&/32&&>6=D@[A7�6 3&�& N=@���2�36 !B,":A7

G

�6 3&�& N=@���2�36 !B,�/��A7

>6 !3*@�2�$3",W���WA7":9�7 !%&/9�/0�7?: #&@�AC

":�9�6&5%2&/32&&>6=D@ !%&/A7 *@":�99��A

46&5N7

�2�$3"@":A7 !%&/HH7

G

>6 !3*@�2�$3",W^6WA7

%&#582D+@QA7

>6 !3*@ZY";�TW,&+"A7>6 !3*@Z^6 5# !B�ZA7

":9�7 9�/0�7?: #&@�AC

":�9�6&5%2&/32&&>6=D@ A7 *@":�99��A

46&5N7>6 !3*@ZY"W,":A7 HH7

G>6 !3*@Z^6WA7

������%&#582D+@�����A7

�6 3&�& N=@���2�=!36=#2�353$+,�/��A7�6 3&�& N=@�&6 5#2�=632�=!* B,�/��A7%&#582D+@QA7

?: #&@S@�&5%�& N=@���2�=!36=#2�353$+AK�/��AA%&#582D+@QA7

?: #&@�&5%�& N=@�$62��2�%%6&++2�A�99��A7

.8���%%6;�<�9��&5%�& N=@�$62��2�%%6&++2�A7

.8���%%6;�<�9��&5%�& N=@�$62��2�%%6&++2.A7

.8���%%6;�<�9��&5%�& N=@�$62��2�%%6&++2�A7

.8���%%6;�<�9��&5%�& N=@�$62��2�%%6&++2�A7

>6 !3*@Z^6^!.8�5%%6&++� +Y$(Y$(Y$(Y$W,.8���%%6;�<,.8���%%6;�<,.8���%%6;�<,.8���%%6;�<A7

?: #&@�AC

?: #&@�AC

%&#582D+@�A7

*@S@�&5%�& N=@���2�=!36=#2�353$+AK�/��AAB=3= 6&+35637

*@�&5%�& N=@�&6 5#2�=632�=!* BAK�/0�AB=3= 6&+35637

�6 3&�& N=@�="N&32�!%&/,�/��A7

�6 3&�& N=@�="N&32�=!* B2�353$+2�,�/��A7%&#582D+@��A7

�6 3&�& N=@�$62�=632�,��A7

�6 3&�& N=@�$62�=632�,�A7

�6 3&�& N=@�="N&32�=!* B2�353$+2�,�/��A7

�6 3&�& N=@�="N&32�"3 E53&,�/��A7%&#582D+@QA7

>6 !3*@Z^!^6�="N&3�=>&!^!^6WA7 �9��7?: #&@�AC

%&#582D+@�A7

*@S@�&5%�& N=@���2�=!36=#2�353$+AK�/��AA

B=3= 6&+35637

*@�&5%�& N=@�&6 5#2�=632�=!* BAK�/0�A

B=3= 6&+35637

3&D>�9�&5%�& N=@�="N&32�353$+2.A7

*@3&D>K�/��AC �9��7

46&5N7G&#+&� *@3&D>K�/&�A

46&5N7 *@3&D>�99��/�MA

"=!3 !$&7

%&#582D+@QA7 HH7

(Continued) — (Continued) —

(continued) (continued)

14 February 2001 CIRCUIT CELLAR® ONLINE www.circuitcellar.com/online

*@ �99��QQA46&5N7

G *@S A

46&5N7G

*@ �99��A46&5N7

>6 !3*@Z^!^6�5 3 !B�*=6�%535WA7�6 3&�& N=@�="N&32�!3&66$>32�,�/*�A7 9�7

>6 !3*@Z^!^6�&5% !B�%535^6^!WA7

?: #&@�&5%�& N=@�="N&32�=!* B2�353$+2�AK�/��AC3&D>�9��&5%�& N=@�="N&32535A7

>$3"@3&D>A7G

�6 3&�& N=@�="N&32535,�-��A7�6 3&�& N=@�="N&32535,�-�A7�6 3&�& N=@�="N&32535,�-��A7�6 3&�& N=@�="N&32535,�-�A7

4832"!39�7 !%&/9�/Q�7":9�7?: #&@":�S9��AC

":�96&5%2&/32&&>6=D@ !%&/A7

*@":�99��A46&5N7

*@":�99��/�QAC

!%&/HH7":�9

6&5%2&/32&&>6=D@ !%&/A7+? 3":@":AC"5+&�I5J�

>6 !3*@�2>$3",WY$(Y$(Y$(Y$W,.8���%%6;�<,.8���%%6;�<,.8���%%6;�<,.8���%%6;�<A7

46&5N7"5+&�I"J�

������������������ �"2+3563@A7������������������ �"2?6 3&@�/MA7������������������ �"2?6 3&@�/A7

������������������%&#582D+@Q��A7

������������������ �"2+3563@A7������������������ �"2?6 3&@�/MA7������������������ �"2?6 3&@�/��A7������������������ �"2+3563@A7������������������ �"2?6 3&@�/M A7������������������"3D>�9� �"26&5%@A7������������������ �"2+3=>@A7

������������������!&B3&D>�9� ���7������������������ *@"3D>�)9��/��AC���������������������"3D>�9�S"3D>�H�7���������������������!&B3&D>�9����7������������������G

������������������ *@!&B3&D>99���A���������������������>6 !3*@�2>$3",WLWA7

>6 !3*@�2>$3",WY$W,"3D>A746&5N7

"5+&�I3J������������������� �"2+3563@A7

�"2?6 3&@�/MA7

�"2?6 3&@�/��A7������������������ �"2?6 3&@�/��A7

������������������ �"2+3563@A7 �"2?6 3&@�/M A7

�������������������� �9� �"26&5%@A7������������������D !+;�<�9� �"26&5%@A7������������������:=$6+;�<�9� �"26&5%@A7������������������%58;�<�9� �"26&5%@A7������������������%53&;�<�9� �"26&5%@A7������������������D=!3:;�<�9� �"26&5%@A7������������������8&56;�<�9� �"26&5%@A7������������������ �"2+3=>@A7

������������������!&B3&D>�9� ���7������������������ *@"3D>�)9��/��AC���������������������"3D>�9�S"3D>�H�7���������������������!&B3&D>�9����7���������������������G

��������������������+&"+;�<�9�+&"+;�<7��������������������+&"+;�<�K9��/ �7��������������������+&"+;�<�))9�07��������������������+&"+;�<�K9��/� 7��������������������+&"+;�<�H9��/��7��������������������+&"+;�<�9�+&"+;�<7��������������������+&"+;�<�K9��/� 7��������������������+&"+;�<�H9��/��7

������������������D !+;�<�9�D !+;�<7������������������D !+;�<�K9��/ �7������������������D !+;�<�))9�07������������������D !+;�<�K9��/� 7������������������D !+;�<�H9��/��7������������������D !+;�<�9�D !+;�<7������������������D !+;�<�K9��/� 7������������������D !+;�<�H9��/��7

������������������:=$6+;�<�9�:=$6+;�<7������������������:=$6+;�<�K9��/ �7������������������:=$6+;�<�))9�07������������������:=$6+;�<�K9��/� 7������������������:=$6+;�<�H9��/��7������������������:=$6+;�<�9�:=$6+;�<7������������������:=$6+;�<�K9��/� 7������������������:=$6+;�<�H9��/��7

��������������������%58;�<�K9��/� 7��������������������%58;�<�H9��/��7

������������������%53&;�<�9�%53&;�<7������������������%53&;�<�K9��/ �7������������������%53&;�<�))9�07������������������%53&;�<�K9��/� 7������������������%53&;�<�H9��/��7������������������%53&;�<�9�%53&;�<7������������������%53&;�<�K9��/� 7������������������%53&;�<�H9��/��7

������������������D=!3:;�<�9�D=!3:;�<7������������������D=!3:;�<�K9��/ �7������������������D=!3:;�<�))9�07������������������D=!3:;�<�K9��/� 7������������������D=!3:;�<�H9��/��7������������������D=!3:;�<�9�D=!3:;�<7������������������D=!3:;�<�K9��/� 7������������������D=!3:;�<�H9��/��7

������������������8&56;�<�9�8&56;�<7������������������8&56;�<�K9��/ �7������������������8&56;�<�))9�07������������������8&56;�<�K9��/� 7������������������8&56;�<�H9��/��7������������������8&56;�<�9�8&56;�<7������������������8&56;�<�K9��/� 7������������������8&56;�<�H9��/��7

>6 !3*@�2>$3",WY"Y"�Y"Y"�Y"Y"LY"Y"L��Y"Y"W,:=$6+;�<,:=$6+;�<,

Listing 4—continued Listing 4—continued

(continued) (continued)

CIRCUIT CELLAR® ONLINE February 2001 ������15www.circuitcellar.com/online

D !+;�<,D !+;�<,D=!3:;�<,D=!3:;�<,%53&;�<,%53&;�<,8&56;�<,8&56;�<A7������������������46&5N7

GG&#+&C

"=$!39�7"=$!3�9�7

4 32"#&56@����,�.��� A7?: #&@�/��99@�&5%�& N=@�/��AK�/��AA

C

�6 3&�& N=@���25352�&!%,�A7?: #&@�&5%�& N=@�="N&32�353$+2�AA7

C

*@�&5%�& N=@�&6 5#2�=632�=!* BAK�/0�A

B=3= 6&+35637������������������������ *@4 323&+3@����,�.��� AA

C

"=$!3HH7 *@"=$!3�)��/*�A

C"=$!3�HH7"=$!39�7

G

*@"=$!3��)��/��AB=3=�6&+356374 32"#&56@����,�.��� A7

GG

�6 3&�& N=@�="N&32535,":A7G !%&/HH7

G

�6 3&�& N=@���25352�&!%,�A7

"=$!39�74 32"#&56@����,�.��� A7?: #&@�/0�S9@�&5%�& N=@�/��A�K��/0�AA

C

*@4 323&+3@����,�.��� AAC

"=$!3HH74 32"#&56@����,�.��� A7

GG

>6 !3*@Z"#=+&�+="N&3^!WA7�6 3&�& N=@�="N&32�"3 E53&,�A7�6 3&�& N=@���25352�&!%,�A7

*=6@ 9�7 '�QQ7 HHAC

%&#582D+@��A73&D>�9��&5%�& N=@�="N&32�353$+2.A7

*@@3&D>�K��/�*A99�/��A46&5N7

*@@3&D>K�/&�AA46&5N7

G>6 !3*@Z^!^6* !5#�+="N&3�?5 3^!WA7

?: #&@�&5%�& N=@�="N&32�353$+2�AA7%&#582D+@Q���A7

GG

G

Listing 4—continued

(continued)

16 February 2001 CIRCUIT CELLAR® ONLINE www.circuitcellar.com/online

Figure 1—

Figure 2—

Figure 3—


Recommended