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