DSP-10 Software Radio
Software Page

back to n5bf/6 DSP-10 page

2006


The first software development I did related to DSP-10 was a post processing program related to EME2.  This was done as a command line program in Xcode and was generally succesful but not the way to go for useful applications.  One thing on the todo list is to make that into a real Mac Cocoa program.

I also have a log post-processing program that takes my text logs (edited in vi typically) and turns them into text summaries (for the contest page) and Cabrillo for submission to the ARRL.  This is also a command-line program and works pretty well for what little I do, but is not industrial strength and, see prior paragraph for "not the way to go."  This will be abandoned and/or replaced as needed.  See under AetherLog and SS CW '09 below.

The Outline

There are several isolated projects and goals listed at software plans but these do not even provide this outline:

- The Mac will be host.
- Write a program that talks to the DSP-10 through the Keyspan USB - Serial adapter.
  - To be extended to code loading, interface comm, possibly even overlays.
- Write an ADI-2181 assembler that will run on Mac and assemble existing DSP-10 code properly and new applications that I will write.
  - May have extended features.
- Determine the minimum DSP-10 operating features to implement.
  - Implement DSP code, host code, and interface code in parallel.
  - This is the base program.
- Add to that program (all three dimensions) from the long todo list of operating modes and features, etc.

At this point I will be ready to start into the stuff at software plans.

- Will want to build the 2nd DSP-10 at about this point in order to still have a working radio while this is all going on and to provide a test partner.

The common thread here is that I need to be able to develop on the Mac and I need to do it enough to learn how to do it properly, not just command line programs that would run in Terminal or the Xcode debugger.

Why redevelop things that are already working?  That's how I learn them and, I want the layout and features to be different, sometimes subtly, sometimes not.  When I've done the development I can make the mods.

If you think this is masochistic, check out this musing about a professional experience I had twenty years ago.

2007 October 31  Note:  Issues facing software.  Everything is on PC.  To use DSP-10 must have or emulate old DOS PC or redevelop on Mac.

Bought a Keyspan USA19-HS USB to serial adapter.  Was able to run all my old (some very old) ham software under virtual PC (VPC) on the Mac except the DSP-10 loader and host.  Other users are struggling with PC upgrades to and beyond XP.  Sometimes there is a little list traffic about these issues.  Some have made progress.

Tired of flailing with PCs everywhere, switched to Macs.  Now the only PC in the house is the old gutted AST running some DOS for the DSP-10 3.80.

2007 December 28 - Xcode 3.0

To attack the common thread, I downloaded Xcode 3.0 Developer Tools for Mac OS X v10.5 and started trying to use them.  I have experience in C and C++ (and Basic, Forth, Fortran, AMS86, 8085, etc.) but couldn't get very far with Objective C (which is somewhat more modern) or the Interface Builder (IB), just by browsing around in the documentation.

2008 March 1 - Trying to move forward.

Tried porting my program logPost.  No joy.  Can't even figure out how to start.

2008 March 2 - Trying to move forward.

Ditto for the understanding what I'm doing by MVC design pattern.  I'm sure this all makes sense to somebody, but I need more context before I can get traction with it.

2008 March 28 - Tried "Building a Text Editor in 15 minutes" from http://developer.apple.com/documentation/Cocoa/Conceptual/TextArchitecture/Tasks/TextEdirot.html
Nearly had something working in an hour.  I could use some of this.  Promising on some fronts, clueless on others.

2008 April 11 - Trying to move forward.

Not getting traction with my obviously limited time on this, got frustrated trying to do anything at all, even the little online tutorial above.  It wasn't helping that Xcode was currently in 3.0 but all the examples were in 2.0 or 2.X.  When working in 2.X the examples worked, but otherwise, there were errors or undocumeneted changes that broke them.  Got some consulting help from Paul, kb5mu, and got through some trivial, non-productive details.  Finally, in a (friendly but irritated) flame exchange, decided to buy the 2nd edition of Cocoa Programming for Mac OS X by Hillegass and placed a pre-publication order for the 3rd edition.  3rd edition is really what is needed here for Xcode 3, but it wasn't going to be out until summer, when I'd be busy again.

2008 April 25 - Start Hillegass 2

A Regular Day Off (RDO) Friday at work (9/80), started into Hillegass and completed through Chapter 4 including the "Challenge" exercise.  This took all day but felt productive.  There is a lot to know and most of it seems relevant to my planned work.

2008 April 28 - 30 - Hillegass 2, Chapter 5

2008 May 3 -
Hillegass 2, Chapter 6

And at this point the effort stalled, due to my son's high school graduation and departure for college, my mother's 80th birthday, a job change within JPL, and other major things going on that are out of scope to mention here.

2008 Summer

One day, by surprise, my Hillegass, 3rd Edition arrived.  Yay!

2008 November 1 - 12 - Hillegass 3

Having been a long time since the effort stalled and Edition 3 having some differences from Edition 2, decided to start over.  A little more savvy from before, it went better.  Only referred to an Xcode 2 exercise a couple of times for hints.  Sessions on 2008 November 1, 5, 8, 10, 11, and 12, got back up to Chapter 6 -- now in new material.  Remember, I have two bachelor's and one master's degree, two of the three in engineering.  I am not stupid.  I can do this.

2008 December 10 - Hillegass 3

Tried to continue, made a little progress.  Still shedding other volunteer obligations to make time for this but it takes time to do the shedding.  Also, the holidays....

2009 January 19

Nothing happening today, spent all of Friday 16th putting an HF antenna back up that I don't need until November (if then).  But am planning several blocks of time over the coming weeks and a rule "No other BWT (e.g. HF antenna work!) except Hillegass until done and established in the first real projects, that is, ports of my existing programs up to Cocoa."  Next time I'm back here it will be in Hillegass 3, Chapter 6 and there will be progress.  This week, I hope.

2009 January 28  Begin the Hillegass 3 "Full Bore."  Only Cocoa until the end.  No reporting.  (All reporting from here down is done 2009 November 27.)  Will work all exercises and challenges.  This is where all the time goes, but it's really the only way to learn anything.

Have some example programs working.  Don't really understand "delegate."  Upgraded Mac to 1 Gb memory.  Beginning to learn how to use the Cocoa documentation.  ... and Google.

2009 February 4  In Chapter 9 now.  Learning about undo.  Beginning to see that a lot of the common behavior of Mac OS X apps comes from reusable software provided by Cocoa.  If any of them have quirky "undo" or "sort," they all will.  Had originally wanted to learn this material over a weekend.  Now projecting late March.

2009 February 7  Still plugging away in Chapters 10 and 11, but can't keep my hands off the radio.  Stopped to listen to AO-7 Mode B passes and trying, with the help of the TS-680, to make a Mode A contact.

2009 March 16  After a six weeks break, late this evening, was unable to start Xcode.  Would not load.  At length, learned that a Safari 4 beta upgrade I'd made for some obscure support file reason necessitates an Xcode 3.1.2 upgrade.  The download was about a Gb and would take two hours.  Stalled in the middle.  Restarted it and let it finish in the night while I slept.

2009 March 17  Installed update over breakfast.  Succesful.  After three more hours with the release notes and other such, was finally back to the p. 195 challenge.  Finished this and Chapter 12 at midnight and e-mailed kb5mu about an NSPanel mystery.

2009 March 21  1100 local, reach the half way point in the book.  This has used all my BWT time through 3/27/09.  Not too bad but no way to finish this month.

2009 Mach 27  Would always rather brainstorm than study.  In a moment of inspiration made some notes about how the eventual user interface would look.  Also produced an outline similar to the one at the top of this page for planning.  The outline similarity (when I've forgotten about the original) confirms the intended approach.

2009 April 7  Took a break to check into the San Diego Weak Signal Net, 14.230 @ 2000 local.  Learning how to debug crashes working on the p. 262 challenge.

2009 April 10 - 11  A breakthrough in understanding Xcode and Cocoa.  After struggling for over a day trying to figure out why my code wasn't being called, learned the following:  These programs are not like the stand-alone programs we used to write.  Those would load, be initialized, run, and eventually exit, all under control of the OS.  When you write a Mac OS X app. (presumably similarly to Windows apps. and others such in the paradigm), you write code snippets that will be called by user actions.   IB lets you build up the GUI (graphical user interface) that will ultimately result in those snippets being called.

So that's one thing.

The other is more profound.

As your app. is loaded and initilized it is possible to make an error where you call a routine that isn't instantiated yet (or worse will never exist at all).  In the old way of doing things this would be a core dump right away and you'd quickly see through the wreckage to the problem.  Under Cocoa, if you make a call that isn't resolved, nothing happens.  Click on a button that goes nowhere and nothing happens.  If you coded exactly the right thing but with a typo in its method name, nothing happens.  This is a different software universe from the one I grew up in.  Oh, there was a compiler warning that told you nothing might happen, but it happily builds, loads, and does nothing.

That's a reason not to allow any compiler warnings.

I beat my head against the wall on this for a long time, then zipped the whole thing up and sent it to Paul.  He worked on it for a long time too before realizing what was happening.  His explanation was a major breakthrough for me.  Later he forwarded me a class note from Stanford where they teach this, about the same subject.  It's not just crufty old timers who get snared in this does nothing on error business.

There is a lot I still don't understand.  What gets loaded when and, more importantly, why, but with this new insight, I'll be less lost.

2009 April 22  Took half an hour away from this all out Cocoa effort to check in my RSU1296 kit order.

2009 April 24  Understand what "first responder" is all about, but am not good enough with IB yet to use it with any facility.  Learning about drag and drop support.

2009 May 22  After a couple of 80 hour weeks at work, back at this with NSFormatters, printing, .pdf, and related topics.  I'm beginning to understand why the Cocoa libraries (Foundation, Quartz, etc.) or so oceanic in their scope.  A lot is done for you and that means a lot of support choices.

2009 May 25  Introduction to web apps.  I can do things with urls, but stumbled for a while on the challenge problem.  It all makes sense until you have to do it for yourself with sparse hints.

2009 June 5  Now Paul is giving me additional exercises!  Still not understanding what delegate is all about.

2009 June 13  Per the full-bore Cocoa effort, and no new hardware to test in the station, wasn't going to do the VHF QSO Party this year, but was sitting on frequency with the beam pointed north (away from most of the action) when I heard a station in DM05 for the first time ever.  When I worked him, then CM94, the next hardest workable grid from here, I decided to make some QSOs and enter anyway.

2009 June 22  Core Data.  Ugh.

2009 June 23  Learned how to hook up the delete key in addition to making a delete button.  More stuff just provided by Cocoa if you know where to look for it.

2009 June 24  Garbage collection.  Ugh.

2009 June 27  Finally understand "flush."

2009 June 30 2325 local.  Finished with Hillegass Ed. 3!  Total time spent in study:  105 hours, 15 minutes.  That's 22 weeks worth of BWT time and about twice as long as it took to build the DSP-10 and get it working.  And, I haven't actually done anything yet, I just know (kind of) how to (kind of) start.

2009 July 1  Send some erratta to Hillegass.
Replanned the entire effort.  Software work will not resume until after CW Sweepstakes (November 6-8), probably 2010.


n5bf/6 DSP-10 page
n5bf-at-amsat-dot-org

updated 2009 November 27, cbd