If you wan’t em…
Category Archives: Misc
ISO 8601 for dates and times
In a comment on my recent post about C and concatinating strings, there were some very cool suggestions about ways to handle creating a string full of comma separated values (like a .csv file to open in a spreadsheet).
The always helpful MiaM asked:
“Why slash for dates? ISO 8601 specifies the minus/dash sign :)”
-MiaM
In my posted example, there was a date/time at the start of each entry like this:
2024/10/18,12:30:06,100,0.00,0,0,0,902.0,902.0,928.0, . . .
I recall these log files certainly had date/time in them before I ever touched the code, though I do not recall what the format was back then. In the USA, the standard convention for a date is month/day/year using slashes, such as 10/21/2024.
When I started using the OS-9 operating system on my Radio Shack Color Computer, it would prompt for date/time on startup using a different format — yy/mm/dd:
And yes, that would have caused problems when Y2K came around, but by then we already had updated utilities that allowed four-digit years.
But listing year first seemed “weird and backwards” to me. Folks who started using PC-DOS on an IBM PC got used to it in a more “normal” way, it seems:
At some point, I got used to it, and learned a great reason to putting the year first: sorting! Over the past 28 years, I have taken hundreds of thousands of digital pictures. The default filename on my first camera was:
1031_001.JPG - taken October 31, image 001 of that day.
This was due to the 8 character filename limit that PCs had back then. If they had put the year in, like “103196”, there would only be room for a 2-digit number after it like “10319601”, “10319602”, “10319603”, etc. Considering the lack of memory on that early camera, that might have been fine for most folks. After UPGRADING the storage to 5MB, the camera could take 99 photos before you had to hook it up to a computer via an RS232 serial cable and download the images.
But I digress.
Once long filenames were a thing, I started naming photos with the full date. I could have used “MMDDYYYY_number.jpg” like this:
01011996_001.jpg - first photo taken on 1/1/1996
02011996_001.jpg - first photo taken on 2/1/1996
01011997_001.jpg - first photo taken on 1/1/1997
01011998_001.jpg - first photo taken on 1/1/1998
…but if you sorted those photos by filename, you would not get them in date order:
01011996_001.jpg - first photo taken on 1/1/1996
01011997_001.jpg - first photo taken on 1/1/1997
01011998_001.jpg - first photo taken on 1/1/1998
02011996_001.jpg - first photo taken on 2/1/1996
Above, you can see it shows me a photo from 1996, then 1997, then 1998, then 1996. Placing the year as the first number solves this, and allows files to be grouped by year, then month, then day. (I mean, I know we like “mm/dd/yyyy in the USA, but how often do we want to sort to find “all the files taken in January of any year” beyond looking for birthday or holiday photos, anyway?)
By doing year first, everything sorts as we expect:
19960101_001.jpg - first photo taken on 1/1/1996
19960201_001.jpg - first photo taken on 2/1/1996
19970101_001.jpg - first photo taken on 1/1/1997
19980101_001.jpg - first photo taken on 1/1/1998
Side Note: I gave up on image numbers waybackwhen, and use the format YYYMMDD_HHMMSS.jpg for my photos. See my theme park photos, and my Renaissance festival photos, for an example, though many of the earliest photos may still be in the old MMDD_XXX format. I highly recommend the Mac utility ExifRenamer for renaming photos to various formats.
Anyway . . . MiaM brought up ISO 8601:
It specifies a universal standard for date/time values. This table was copied from the wikipedia page:
Date | 2024-10-21 |
---|---|
Time in UTC | 11:24:56Z T112456Z |
Date and time in UTC | 2024-10-21T11:24:56Z 20241021T112456Z |
Date and time with the offset | 2024-10-20T23:24:56−12:00 UTC−12:00 [refresh] 2024-10-21T11:24:56+00:00 UTC+00:00 [refresh] 2024-10-21T23:24:56+12:00 UTC+12:00 [refresh] |
Week | 2024-W43 |
Week with weekday | 2024-W43‐1 |
Ordinal date | 2024‐295 |
The use of a dash in the year (2024-10-21) versus the slash like we tend to do in the USA would be a simple change. Yet, when I look at Excel, when you select the “short date” format, it defaults to “mm/dd/yyyy” (see image to the right).
I might expect slashes were used so the .csv file could import in to Excel, but Excel doesn’t seem to care. It figures it out. I also now wonder if using this format was intentional, and it may have originally been mm/dd/yyyy to match what Excel defaults to.
Speaking of defaults … in other parts of the world, the date/time format is different (such as dd/mm/year in Europe, which always message me up if the day is 12 or less since I cannot tell if 1/10/2024 is January 10th, or October 1st).
But now that I have been pointed to this standard, I think I am going to try to force myself to adopt the ISO 8601 standard when I start representing dates in software. No doubt, seeing the USA format in the Windows application I maintain may be odd to folks in other parts of the world. If I switch it to use the ISO 8601 standard, it might seem odd to some folks, but at least there is a reason that can be referenced.
The more you know.
“You’re not wrong…”
This statement is now on my pet peeve list.
It is great to use when you know someone is right, but cannot tell them that.
Is there a name for this type of negative agreement?
I can just picture what such a High Score screen might look like…
If you agree, you can tell me ‘you’re not wrong” in the comments… ;-)
The most mysterious song(s) on the internet
In recent years, YouTube decided I had an interest in “lost media.” Famous examples of lost media include the episodes of Doctor Who that were not saved by the BBC. Over the years, many episodes have been recovered as copies were found in personal collections or at overseas TV stations. Perhaps my interest in Doctor Who is what led YouTube to decide I was interested in lost media.
In recent years, a video called “the most mysterious song on the internet” caught my attention. I do not remember which video I first watched, but today there are hundreds of copycat videos that regurgitate the same information over and over. Basically, there is a recording of part of a song with lyrics folks think are singing “Like the Wind.” Music identification services like Shazam cannot match the song, so for years folks have been trying to figure out where the song came from.
Wikipedia entry: The Most Mysterious Song on the Internet – Wikipedia
Another example is a song being called “Everyone Knows That” which is an 80s pop sounding song that most thought was a female singer, but today many are thinking it was actually a male. This song, also, has yet to be identified.
Wikipedia entry: Everyone Knows That (Ulterior Motives) – Wikipedia
I wanted to share an example of something that would 100% be considered “lost media” if someone shared a clip today: Y99.
I don’t actually know if that was the name of the song, but I seem to recall it actually singing that — and that would have been a clue to help locate the song. Back in the 1980s, a local radio station in East Texas held “battle of the band” contests. This was before I moved there (Y99 the radio station no longer existed, becoming 99.3 KUEZ which was easy listening then, later, oldies). A winner of the contest got some recording studio time, and a number of vinyl single records were produced of their song.
A guitar player I knew had one of these singles, and he played it for us. This song was also played on the radio as part of the contest prize. Beyond anyone hearing it on that one small East Texas radio station, or owning one of a handful of single copies, the song basically does not exist. If the band did not make it big and bring that song with them, the story of “Y99” would have ended there. (Though, I think folks would have figured out Y99 was a radio station.)
And this was in deep East Texas. Similar contests with recording studio prizes likely happened more often in larger markets, especially back in the day when “battle of the bands” was a more common concept.
“Like The Wind” could has been such a song, and someone recorded it when it played on their local radio station. Just being on radio doesn’t mean it was some big artist backed by a major record label. (Indeed, I have had dozens of things I have made played on local radio stations–usually parody or comedy songs–and those existed nowhere else except there, and on my hard drive.)
“Everyone Knows That” is suspected of being recorded from TV, which makes a “battle of the bands” concept a bit less likely but still possible. Over the years, one-time performances of various songs have appeared on TV for talent shows, fundraisers, etc. so I really have no thoughts on that one.
And of course, anyone who has ever worked in radio probably remembers all the “music libraries” stations would license for use in commercials. Some are just music, and others have vocals–usually with an option to sing at the start and end with music in the middle to talk over (a “donut”), or some combination of that.
Few ever owned any of these records/tapes/discs beyond radio stations. I could pull a track from my “Instant Access Music” collection that I bet no one could find.
Just some thoughts.
I hope one day they find these (and other) similar songs.
PONG 1993
File: PONGTEST.TXT - Revision 1.1 (5/16, 5/18/93) - By Allen C. Huffman
In the beginning there was...
XXXX XXX X X XXXX
X X X X XX X X
XXXX X X X X X X XX
X X X X XX X X
X XXX X X XXXX (tm)
And now, two decades later, Pong(tm) will live again...
[DISCLAIMER: The game name "Pong(tm)" is a TRADE MARK of Atari
Corporation. None of us have anything to do with Atari and we are using
this name strictly as a term to define a video game concept. Read at your
own risk.]
And to think...this rather bizarre idea all started with an impromptu
P.A. announcement at the 2nd Annual "Last" Chicago CoCoFest in May, 1993.
The announcement, written by Sub-Etha founding partner Terry Todd, went
something like this:
Sub-Etha Software, in voluntary cooperation with StG
Net, StrongWare, Intelligent Algorithms, Dave Myers,
BARSoft, Burke & Burke, HawkSoft, the National OS9 Users
Group of Australia, and more of the rest of the CoCo
Community will be sponsoring a programming competition in
which each participant will create a unique, original
PONG(tm)-type game. This contest is open to all who wish
to enter. The programs will be impartially judged at the
1991 Atlanta CoCoFest on the basis of Memory Efficiency,
Speed Efficiency, Originality, Special Effects, and
Playability. The programmer judged best in each category
will receive a cashiers check in the amount of ONE DOLLAR!
THE BEGINNING
Video games all started with Atari's original PONG(tm) game. This
tabletop two-player game, reportedly created in 1972 with a production of
8000 units (see "The Killer List of Video Games", Dec 1992 version, in
text-file format available from various sources), became an instant
success. The original PONG(tm) units are rumored to have broken down
their first day(s) in service...from jammed coin mechanisms. (Atari could
not be reached to comment on this bit of video game lore...)
It occurs to me, though, that many of our fellow CoCo/OS9 users might
not have even been BORN or, if born, might not have even been old enough
to have ever seen a PONG(tm) game either as a console game or the later
home versions (before the Atari 2600, even). For those...a bit of
background...
WHAT IS PONG(tm)?
PONG(tm) was a digital version of table tennis. A black and white
image consisted of a dotted line down the middle of the screen
(representing the net), with a small vertical line on each side of the
screen representing the paddles. A small square represented the ball,
which would bounce back and forth, hopefully to be deflected by a paddle.
Score was kept it the upper corners and typical tennis rules applied -
the first one to 21 won.
It was simple, and it was amazing. (I first remember seeing a
PONG(tm) game in a Shakey's Pizza Parlor in Houston...) Sadly, many
people only remember this classic as a cartridge that used to be available
for the old Atari 2600 called "Video Olympics" (or something like
that...it's been awhile)! Even the original stand-alone home game
machines that did nothing but play PONG(tm) (or the many numerous clones)
have long since been forgotten...until now.
WHAT'S THE DEAL?
It occurred to us that PONG(tm), one of the simplest video games of
all time, might be an interesting target of a programming contest. A
PONG(tm)-type game could be written in BASIC and be quite playable, or
souped up in assembly for some real speed. What we propose is an open
challenge for programmers. What would YOU do with a PONG(tm)-type game?
Perhaps a "classic" version (how close can you make it to the original,
"beep" sounds and everything?) or an updated colorized version, perhaps
with better sounds? Maybe something completely different - a
PONG(tm)-type game with "power-ups" or weapons. Let your imagination take
control. Points will be awarded in a number of categories. Just follow a
few basic rules.
THE RULES
There aren't any, really. Your version of a PONG(tm)-type game must
run on a CoCo under Basic or Assembly (either 6809 or 6309), or under OS9
('C', Basic09, whatever) or even under OSK (MM/1, TC70, etc...). If
enough entries are received, categories will be created for as many
"types" as possible.
To qualify as a PONG(tm)-type game, it must follow a few guidelines.
First, you should have a bouncing ball. Second, you should have two
paddles (and support one or two players) with which to bounce the ball
back and forth. Scoring should go until 21 with whoever gets there first
being the winner. The ball should start from the middle of the screen and
head towards one side. Whoever scores a point gets to "serve" again, and
the ball will launch towards the opponent, just like in tennis. That's
it! The "net" I guess would be optional. <grin>
To summarize: Make it recognizable as a PONG(tm)-type game then use
your imagination!
JUDGING
All received entries will be judged at the Atlanta CoCoFest (which
will probably be held in October) by an impartial individual or group.
Several categories have been established, with more added later if
necessary. These categories are as follows:
o Memory Efficiency
Awarded to whoever writes the "smallest" PONG(tm)-type game.
o Speed Efficiency
Awarded to whoever writes the fastest PONG(tm)-type game!
o Originality
Anything goes! This will be awarded for the most original
twist on the old classic.
o Special Effects
The game with the most "bells and whistles" will get a prize,
too! Music, graphics, whatever...basically, the version that
looks/sounds the best.
o Playability
No matter how memory or speed efficient, original, or "special"
a game may be, if it's no fun to play, it's not a good game.
The will be one overall winner of all entries judged to be the
"funnest".
THE PRIZE
The "press release" states an award of ONE DOLLAR for winners in each
category. This may not sound like much of a prize, so let's make things a
bit more interesting. Al Dages of the Atlanta Computer Society has
decided to throw in a TEN DOLLAR prize to the overall winner, and
(although maybe jokingly) Dave Myers talked about chipping in an extra
BUCK too. If $13 for top honors still doesn't appeal, let's go a bit
further.
Marketing, my friends! We will attempt to compile a disk (or disks)
of all winning entries and a "reasonable fee" will be charged for this
disk. Funds generated will be split amongst the programmers. Sub-Etha
Software (with hopeful support from other vendors) will "foot the bill"
for the disks, labels, and duplication costs.
If that's still not enough, there MAY be more! We will be talking to
other vendors and see about getting together more prizes for the winners.
This part of the contest will depend entirely on the response from other
vendors (who are, by the way, ALLOWED to enter, too!). It may never be as
good as winning the lottery, but it certainly should be fun!
HOW CAN I ENTER?
Simply write a PONG(tm)-type game and get it to Sub-Etha Software!
As mentioned earlier, you can write it under BASIC, 6309 or 6809 assembly,
OS9, or even OSK. "Cheating" is allowed for all versions, by the way. We
are more concerned with the outcome than "how it got there"...just make
sure it doesn't do anything too bad!
The competition should be interesting. Several "well known" CoCo
programmers are rumored to be interested in working on PONG(tm)-type games
for this "for the fun of it" contest. Don't let that discourage you,
though! We'll do our best to try to make it as fun as possible for all
involved! So...ready? Then let's get started! The clock is ticking.
Get those balls bouncing, and let's have some fun!
DISCLAIMER
Please note that we are in no way connected with Atari Corporation
and have neither their permission or praise to hold a PONG(tm)-type
contest. The game name, PONG(tm), apparently remains property of Atari
but, over the years, has fallen into such common usage that we felt we
should be able to get away with using it to describe this contest without
fear of a nasty lawsuit. (BUT, it is NOT acceptable to call a game simply
"PONG(tm)". That has been used... ;)
Of special interest, though, will be my attempts to contact someone
at Atari for more official information on the history of PONG(tm) as well
as possible "official" permission to actually use the name legally. Who
knows! Maybe we'll be able to take the winner and have it released as a
"real" PONG(tm) game with Atari's blessing...but don't hold your breath.
Let's just have some fun.
THE END
Terry, just look what you have started! Any vendors interested in
upping the stakes can try to contact me via electronic mail
(COCO-SYSOP@GENIE.GEIS.COM) or leave a message on the Sub-Etha OSK Midwest
Division line at (815) 748-6638 (24 hours a day) and it will be relayed to
me. Of course, U.S. Mail is always available...
Sub-Etha Software
P.O. Box xxxx42
Lufkin, Texas 75915
Have fun! I will be looking forward to your entries! (OSK entries
can be directed to Joel Hegberg and perhaps might even be better mailed
directly to Joel...Leave a message to JOELHEGBERG@DELPHI.COM to get
instructions on how to get something to him...) Thanks!
ADDENDUM
On 5/18/93, I received a return phone call from a lady at the Legal
Department of Atari. She is currently checking into some "official"
PONG(tm) history for me, as well as finding out some legal guidelines for
using the name PONG(tm) in this text file. Suffice it to say that I had
to revise this file and make sure that the TRADE MARK was clearly visible.
To further disclaim all of this...we are NOT writing PONG(tm)...but games
that are PONG(tm)-like. (Thus, all the changes in this document from
Revision 1.0...)
My unreleased MIDI program for the Kawai K4 synthesizer
I recently shared the story about my first commercial CoCo product, the Huffman K1 Librarian. This was a MIDI librarian for the Kawai K1 synthesizer. In that article, I mentioned that I later sold my K1 to buy a more-better Kawai K4 synthesizer. What I did not remember is that I apparently made a K4 librarian, as well!
The K4 version was very similar to the K1 original, but the menu was updated to reflect how patches were organized on the K4. It appears the K4 has single patches, blocks of patches, and a way to transfer everything at once.
It also had the same disk command menu.
This version shows a 1991 copyright, so two years after the K1 original in 1989. Although the title screen references Rulaford Research, I do not recall it ever being a product they sold. I’m not sure if anyone ever had a copy of it other than myself. If you know otherwise, please leave a comment.
Thirty two years later and I am still (re)discovering stuff.
Until next time…
Escape rooms: 99% looking for lock combinations, 1% “other”.
Earlier this year, I had the opportunity to experience the Back to the Future “escape room” experience by Universal Studios. I have been aware of escape rooms for some time, and while I thought they sounded interesting, I was never interested enough to try one. But this one was different… I had no idea how different it was until I visited a traditional escape room later.
Universal Studios’ experience is automated, and the puzzles involved pressing buttons and plugging things in. Not once did I have to find some four digit code written on the brim of a hat hanging on the wall in order to open a box that would leave me to another four digit code.
But I digress.
At Universal, your experience begins with a preshow (video of the rules), then you enter the initial room. This is where they set up the story through a video presentation (which featured Christopher Lloyd voicing his Doc Brown character from the movies). The room would have various puzzles that were randomized (allowing for re-playability) and if you got stuck, the show system would give hints. Eventually, a door would open and you’d go in to the next room (even if you didn’t solve anything).
Since each room had several levels of puzzles, you might get none, or all, but you still get to proceed. If I recall, this experience featured five (or six?) different rooms, and kept you moving.
There was great sound, music, effects, lights and even smoke.
And that set the bar too high.
Recently, we went through an unlicensed (*cough* copyright infringement *cough*) E.T. the Extra Terrestrial escape room in Branson, Missouri. We spent an hour in two rooms, mostly trying to find codes to various combination locks.
Most were four digit number locks. One was a five letter combination lock. And one was a school-locker style three digit combination lock.
That was the majority of the experience! Tryingto find (mostly) four numbers that opened a lock!
There was one different bit where you used a magnet on a string to retrieve a key from the end of a pipe (after you found the pipe), and another puzzle involving getting a code by counting blinking lights. The final puzzle, where time ran out on us, were a few knobs that displayed numbers in LED panels. We couldn’t figure that one out before the hour expired.
What I am curious about is — how many escape rooms are mostly just looking for four digit codes and opening locks? We did a local one, ran by a friend, and it did feature many four digit codes, but it had alot more puzzles and was vastly more interesting.
What is a “normal” escape room?
Comments welcome.
Phreak Philes: Modem scanning in the late 1980s…
phreak /frēk/ INFORMAL
verb: phreak; 3rd person present: phreaks; past tense: phreaked; past participle: phreaked; gerund or present participle: phreaking; noun: phreaking
hack into telecommunications systems, especially to obtain free calls.
“a few old-time hackers still phreak casually just to keep their hand in”noun: phreak; plural noun: phreaks
– Oxford Languages via BING search for “define phreak”
a person who hacks into telecommunications systems, especially to obtain free calls.
“the nation’s most clever cellular phone phreaks”
I expect most of us have some life changing event we could cite that forever changed the direction of our existence. For example, looking through a telescope for the first mite might have led to a career in astronomy. To me, it was when I was in 7th grade English class and I quoted a line from a PBS TV show I had just watched (“The Hitchhikers Guide to the Galaxy“). A nearby student recognized the quote (“you watched that too?”), and introduce me to the books of Douglas Adams.
Jimmy also introduced me to computers, and helped me learn BASIC programming via books he had. We’d go down to the local Radio Shack to type in the programs we’d written down on paper. This led me to wanting a computer instead of an Intellivison (its baseball program could talk!) or ColecoVision (it came with Donkey Kong!), which started my career as a programmer.
In addition to Douglas Adams and computers, Jimmy also exposed me to the world of phone phreaking — though not at any “WarGames” level. It was just a bunch of junior high kids that learned how to make free phone calls from the school’s payphone, or talk with random kids via “loop lines”. (This made me search for “loop line” to see just what those phone numbers were for. I found a Wikipedia entry about “loop around” which does appear to be what I am referring to. #TheMoreYouKnow).
I remember kids all over Houston, Texas were making use of codes that allowed “free” long distance phone calls. This let them dial in to bulletin board systems out of state without the parents throwing a fit when they received a phone bill.
There was a higher level of phreaking that involved devices that would generate special tons that the old phone system would respond to. They were known as “boxes” and identified by a color. The “red box” simulated a tone that told the phone company a coin was inserted in to a payphone. This allowed making free calls from payphones. I see today’s Wikipedia has an entire category on these boxes with colors I never heard of back then. I think I’d only heard of red, blue (2600 Hz tone generator used for free long distance), and silver (four extra buttons on a standard touch tone keypad labeled A, B, C and D). I recall the “D tone” would knock an operator off the line, for some reason.
I actually had a silver box — something my dad found at a store. I remember him telling me (over the phone) that he found a phone that extra buttons on it that were going to be used for future phone services. He said they were labeled A, B, C and D. Somewhere, I still have that phone. I have no idea why this phone existed in stores, and I never knew how to use it for anything, but somewhere I still have it.
Popular computers like the Apple 2s had tons of phreaking software. The Tandy Color Computer had some, as well, including during the CoCo 3 days. Here’s one called “Super Phreak” by “Mr. Bill”:
It seems to be a software implementation of the phreak boxes, though it doesn’t make any sounds for me (at least not in an emulator).
There was one for the earlier Color Computers, called “BOX.BAS”, but based on the menu screen it may have been called “Phreak Operator.”
I wonder who “S Y N T A X” was, and how the licensing worked.
This one does produce tones, so it must have some assembly language audio routine embedded in it as the CoCo BASIC could only do one tone voice at a time.
But I digress…
In addition to loop lines, hardware boxes, and using codes for free long distance, there were other things lumped together with phreaking, such as having a computer dial numbers looking for other computers. This went by many names (we called it simply “modem scanning”) at the time, but today I see the Wikipedia refers to it as wardialing.
A famous example of this comes from the 1983 movie WarGames where David Lightman (played by a young Matthew Broderick) has his computer scanning for modems, and ends up finding the W.O.P.R. (War Operation Plan Response) supercomputer at NORAD.
Unlike the infamous payphone scene, the movie was quite accurate on this. I expect folks wrote replica programs to recreate the user interface:
It does make me wonder how much the wardialing cost his parents. It sure sounded like his computer was just dialing a bunch of long distance numbers in area code 311 ;-)
The Radio Shack Color Computer also had programs that did this. I have two versions of “Modem Scanner” that used a Hayes-compatible modem hooked up to the Serial I/O port of the CoCo. In BASIC, the program would send dial commands to the modem using PRINT #-2 (as if they were going to a serial printer), and then it would use PEEK to look for the carrier detect pin to go high on the port. If a CD was not detected after some time, it would send the hangup command and move on to the next number.
It looked like this:
Above, you can see it would list the status of every number dialed, similarly to the WarGames program.
Using the “print to file” feature of the XRoar emulator, here is what was being sent to the modem:
+++ATZ ATT C0 E0 M1 Q1 ATDT 555-0000 ATH ATDT 555-0001 ATH ATDT 555-0002 ATH ATDT 555-0003 ATH ATDT 555-0004 ATH ATDT 555-0005 ATH ATDT 555-0006 ATH ATDT 555-0007 ATH ATDT 555-0008 ATH ATDT 555-0009 ATH ATDT 555-0010 ATH ATDT 555-0011
At the top, the “+++ATZ ATT C0 E0 M1 Q1” sequence was the initializing modem part. Looking at the list of Hayes modem commands on wikipedia, I can see that…
- “+++” followed by a pause was the escape code that made a Hayes smart modem go from communications mode to command mode. In command mode you could change settings, dial numbers or hang up.
- “ATH” was the hang up command. (Hayes commands start with “AT” for attention.)
- “ATT C0 E0 M1 Q1” – This was “T” for tone dialing, “C” was not listed as a standard command (not sure what it did), “E” turned off auto-echo so commands did not echo back when typing them, “M” turned ON the modem speaker (geesh, that should have been a settable option), and “Q” turned on quit mode so the modem did not echo back “OK” after each command.
Looking at the BASIC source code shows this notice at the top:
And these version notes at the bottom:
The full source code is here:
0 ' +------------------------+ 1 ' ! MODEM SCANNER V1.1 ! 2 ' ! BY ZIGLWALD X. MALUSHI ! 3 ' ! HAYES COMPATABLE ! 4 ' ! MODEM REQUIRED ! 5 ' +------------------------+ 6 ' MODEM MUST BE ON AND READY 7 ' WHEN PROGRAM IS RAN 8 ' 9 ' 10 PCLEAR1:CLEAR10000:DIM MD$(1000) 15 CLS:PRINT@7,"MODEM SCANNER V1.1":PRINTSTRING$(32,131) 20 PRINT@64," THIS PROGRAM WILL DIAL A RANGE OF NUMBERS YOU SPECIFY AND REPORT ANY MODEM CARRIERS IT FINDS.":PRINT 25 PRINT" warning: CALLS PLACED BY THIS PROGRAM ARE CONSIDERED PRANK CALLS AND ARE PUNISHABLE BY A FINE OF UP TO $1000 AND/OR A JAIL TERM OF UP TO 180 DAYS." 30 PRINT:PRINT" ****USE AT YOUR OWN RISK!!****":PRINTSTRING$(32,140)TAB(9)"PRESS ANY KEY:"; 35 IFINKEY$=""THEN35 40 CLS:PRINT@7,"MODEM SCANNER V1.1":PRINTSTRING$(32,131) 45 PRINT@68,"***INITIALIZING MODEM***" 50 POKE65315,48:POKE65314,249:POKE65315,52:POKE65314,0:POKE150,180:MD=0 55 FORA=1TO2000:NEXTA:PRINT#-2,"+++";:FORA=1TO2000:NEXTA:PRINT#-2,"ATZ":FORA=1TO1000:NEXTA:PRINT#-2,"ATT C0 E0 M1 Q1" 59 PRINT@128,"SCAN 800'S? (Y/N) :";:LINEINPUTA$:IFA$="Y"THENAC$="1-800-"ELSEAC$="" 60 PRINT@160,"ENTER PREFIX (###) :";:LINEINPUTPF$:IFLEN(PF$)<>3THEN60 65 PRINT@192,"START RANGE (####) :";:LINEINPUTST$:IFLEN(ST$)<>4THEN65 70 PRINT@226,"END RANGE (####) :";:LINEINPUTEN$:IFLEN(EN$)<>4ORVAL(EN$)<VAL(ST$)THEN70 75 PRINT@288,"SCAN FROM "AC$PF$"-"ST$:PRINT@327,"TO "AC$PF$"-"EN$:PRINT@392,"IS THIS CORRECT? ";:LINEINPUTA$:IFLEFT$(A$,1)<>"Y"THEN59 80 CLS:FORNM=VAL(ST$)TOVAL(EN$):'FORA=1TO10000:NEXTA 82 PRINT@511:PRINT@0,TAB(7)"MODEM SCANNER V1.1":PRINTSTRING$(32,131):PRINT@69,;:IFAC$=""THENPRINT"LOCAL";ELSEPRINT"1-800"; 83 PRINT" SCAN IN PROGRESS":PRINT@96,"SCANNED:"NM-VAL(ST$),"CARRIERS:"MD:PRINTSTRING$(32,131):PRINT@448,; 85 NM$=AC$+PF$+"-0000":NN$=RIGHT$(STR$(NM),LEN(STR$(NM))-1):MID$(NM$,1+LEN(NM$)-LEN(NN$),LEN(NN$))=NN$ 90 PRINTNM$" - ";:PRINT#-2,"ATDT "NM$ 95 CD=PEEK(&HFF20):FORTM=1TO1000:CD=PEEK(&HFF21):IF(CD AND 128)=128 THEN105 ELSENEXTTM 100 PRINT"NOTHING":PRINT#-2,"ATH":FORA=1TO3000:NEXTA:NEXTNM:GOTO120 105 PRINT"*CARRIER*":MD$(MD)=NM$:MD=MD+1 110 FORA=1TO2000:NEXTA:PRINT#-2,"+++";:FORA=1TO2000:NEXTA:PRINT#-2,"ATH":FORA=1TO2000:NEXTA 115 NEXTNM 120 CLS:PRINT@4,"TOTAL CARRIERS FOUND:"MD:PRINTSTRING$(32,131) 125 FORA=0TOMD:PRINTMD$(A),:IF(A/18)=INT(A/18)THEN135 130 NEXTA:PRINT@424,"END OF NUMBERS":END 135 PRINT@425,"PRESS ANY KEY:"; 140 IFINKEY$=""THEN140ELSEFORZ=1TO12:PRINT@32+Z*32:NEXTZ:PRINT@96,;:GOTO130 150 ' 151 'PROGRAM UPDATES 152 ' 155 'OCTOBER 1987 (V1.0) 156 'FEBRUARY 1988 (FOR 800'S) 160 '
I believe the POKEs in line 50 are what made BASIC not wait for the printer to be ready (since that would never happen when using a modem) and setting the printer baud rate to 300 baud.
Line 95 is related to the carrier detect, though I don’t know what it’s doing specifically.
At 120 it appears to display all of the modem numbers found, with a pause at the end of the screen. I see no provision for writing this list out to tape or disk, so I guess the user would have just had to write them down. And, most likely, when scanning 10,000 numbers (0000-9999), how many of them would have actually been modems anyway?
I had a friend who did modem scanning back in the late 1980s, though I don’t know if he used this program. I do know that his parent’s got a phone call from the phone company, reporting that something was wrong on their other phone number and it was making too many calls. His dad went up to the room where the computer was and knew enough about it to hit the read BREAK key and stop the program.
I do not know if I ever used this program, but I do have a story to tell about getting in trouble for dialing in to a number that was found through modem scanning. But that’s a story for another time…
Until then…
For further research…
A disk image containing these programs may be found on the Color Computer archive site:
Huffman K1 Librarian, my first commercial product
Although I was “this close” to having my *ALLRAM* BBS sold by a well-known CoCo company back in 1983 it wasn’t until 1989 that something I wrote appeared for sale in the pages of Rainbow Magazine.
I had gotten my first musical keyboard (a Suzuki Keyman PK-61) during high school, and then acquired a Casio CZ-101 synthesizer. After graduation in 1987, I purchased the CoCo MIDI interface from Rulaford Research. This started my love for MIDI and creating keyboard music which I still enjoy today (just without MIDI, as it’s been replaced by virtual instruments on a computer and USB piano keyboards).
There were two main types of MIDI programs. A sequencer allowed recording the keys pressed on a MIDI keyboard and playing them back. This was a high-tech player piano, but instead of a roll of paper with holes punch in it triggering hammers hitting strings, it was serial byte codes going to a synthesizer or sound module playing notes. Lester Hands’ sequencer was quite an achievement for a 64K CoCo.
The second type of program was called a librarian. These programs would use special messages the synthesizer supported to download sound data (the “patch” or “voice” as keyboards called them) and save it to tape or disk. You could later upload that information back. This allowed saving out all the sounds a keyboard made, and loading in new ones. Or, backing up custom sounds you created.
There was a third type know as an editor, but I never had any of those so I cannot really comment on them.
I recall buying a Casio CZ-101 Librarian from Rulaford Research.
I eventually saved up enough to buy a Kawai K1 full-size synthesizer. I learned enough about how the CoCo MIDI hardware pak worked (thanks to my Commodore friend Mark finding the data sheet) to create routines to read and write data through it. This, and some technical information on the SysEx (system exclusive) MIDI messages of the K1 led me to create a librarian for that synth. I had been in communication with Cecil Houk of Rulaford Research and he suggested putting my name in the title so it would be an instantly unique title (rather than something generic like “Kawai K1 Librarian”).
The end result was the Huffman K1 Librarian, shown here at version 1.2. I have no recollection of what changed between 1.0, 1.1 and this version.
At the time, while many of us had copies of software we did not purchase, I didn’t like having copies of anything that asked me to not copy it. I included the message “Support the future of music on the Color Computer. Please do not pirate this program.” on the title screen.
The main menu allows sending a single patch (voice) to and from the K1, or a block (which was a bank of many patches).
I do not recall much about how the K1 LCD screen looked, but I know it used an uppercase “I” or “E” (internal/external) as well as lowercase “i” or “e” for the singles voices.
The voices were divided up in to four banks (lettered A to D) with 8 patches in each. It was basically octal! This is the only time I’ve seen base-8 numbering used (though in this case, it would be like A1-A8 to D1-D8 rather than 00-38 in octal).
To dump (upload) a patch to the synthesizer, you had to type the name of the patch file. I built-in a Directory command similar to how the Casio Librarian did it.
This may have been the first time I ever made use of DSKI$ to manually parse the directory table of the CoCo’s disk format.
I also added a disk menu to give a fuller directory, kill files, rename files, and copy files.
Here was my copyright notice in REMarks at the top of the program. From looking at the CLEAR command, that reminds me that my assembly language MIDI routines loaded at &H7000.
Also note I set a variable DR (current drive) with a PEEK, rather than hard-coding a default of drive 0. This meant if the user had done a “DRIVE 1” and was running it from that drive, it would default to using drive 1. I had forgotten about this technique.
I guess I typed too soon. At the end of my programmer version notes, so now I know about 1.1 (add error checking) and 1.2 (more error checking). Nice.
Beyond looking at the menu screens, today I have no way to do anything with this program. I sold my Kawai K1 long ago, and upgraded to a K4 :) I eventually sold that and replaced it with a Yamaha W7.
Humble beginnings, and fun times. I hope you enjoyed this look back at my earliest commercial product.
Until next time…
What is a CoCo? ChatGPT has some thoughts…
Meanwhile, over at chat.openai.com… I told it:
The CoCo is the nickname for the Radio Shack TRS-80 Color Computer. Can you come up with something that “COCO” stands for, that would be related?
– Me, to ChatGPT
It responded with some interesting suggestions…
Interesting question! The CoCo is indeed a nickname for the Radio Shack TRS-80 Color Computer, a line of home computers developed and sold by Tandy Corporation from 1980 to 1991¹. It was based on the Motorola 6809E processor and used the MC6847 Video Display Generator (VDG) chip¹³. It was also compatible with Microsoft BASIC and OS-9 operating system¹.
Some possible things that COCO could stand for, related to this computer, are:
- Color Operating Computer Organization: A name for a group of enthusiasts or hobbyists who use or collect CoCo computers.
- Colorful Objects with Computational Outputs: A description of the graphical capabilities of the CoCo, which could display up to 16 colors on screen⁴.
- Commonly Observed Computerized Oracle: A humorous way of referring to the CoCo as a source of information or entertainment for its users.
- Cooperative Online Colorful Operations: A term for multiplayer games or applications that could run on the CoCo using its serial port or modem⁴.
Source: Conversation with Bing, 3/16/2023
– chat.openai.com
(1) TRS-80 Color Computer – Wikipedia. https://en.wikipedia.org/wiki/TRS-80_Color_Computer Accessed 3/16/2023.
(2) TRS-80 Color Computer – CoCopedia – The Tandy/Radio Shack Color …. https://www.cocopedia.com/wiki/index.php/TRS-80_Color_Computer Accessed 3/16/2023.
(3) Radio Shack TRS-80 Color Computer. https://oldcomputers.net/coco.html Accessed 3/16/2023.
(4) trs 80 computer products for sale | eBay. https://www.ebay.com/b/trs-80-computer/bn_7024741177 Accessed 3/16/2023.
And, there was more…
– chat.openai.com
- Colorful Output with Creative Options: A way of highlighting the CoCo’s versatility and potential for different types of programs and projects.
- Computerized Optical Colorful Oscilloscope: A reference to the CoCo’s ability to display graphics and sound using its VDG chip and 6-bit DAC.
- Compact Original Colorful Object: A simple description of the CoCo’s physical appearance and design.
There are only some many words beginning with C or O that make sense for this topic, but it might be fun to keep asking it until we find the ultimate backronym.
Until then…