5

There's a fairly common BASIC program for DOS 3.3 on the Apple II that clears the screen, prints a catalog of the disk, and allows you to select files by letter to run or do other operations on them. This program is often found as the auto-run HELLO program on diskettes; I've also seen it called LEVI (in non-auto-run form).

What is the proper name of this program, and what is its history? Where did it come from, who wrote it and when was it written? Was it ever published in any books or magazines?

Note that here I am interested only in the provenance of this particular BASIC code and the techniques it uses, not in different programs that may have a similar UI.

Screenshot

Here's a screenshot; when actually running the bottom line scrolls from right to left giving several more numbered actions.

LEVI

Listing

The program was written in Applesoft BASIC. I've seen it both with and without line 0, a comment with a date, at the start.

0  REM     06/06/83
100  TEXT : HOME :D$ =  CHR$ (4): PRINT D$"CATALOG":B =  PEEK (37) - 2: IF B > 22 THEN B = 22
110 T = 0:CH = 4: FOR CV = 5 TO 23: GOSUB 1000: IF C <  > 160 THEN  POKE P - 1,219: POKE P,T + 193: POKE P + 1,221:T =T + 1:S = CV
120  NEXT CV: VTAB 24:A$ = "TYPE LETTER TO RUN, OR LOAD=1 LOCK=2 UNLOCK=3 DELETE=4 EXIT=5...."
130 B$ = "RUN": HTAB 1: PRINT  LEFT$ (A$,39);:A$ =  MID$ (A$,2) + LEFT$ (A$,1):K =  PEEK ( -16384): IF K < 128 THEN  FOR K = 1 TO 75: NEXT K:K =  FRE (0): GOTO 130
140  POKE  - 16368,0:K = K - 176: IF K < 1 OR K > 5 THEN 300
200  HTAB 1: CALL  - 868: IF K = 5 THEN  END
210  PRINT "PRESS 'LETTER' YOU WISH TO ";: IF K = 1 THEN B$ ="LOAD"
220  IF K = 2 THEN B$ = "LOCK"
230  IF K = 3 THEN B$ = "UNLOCK"
240  IF K = 4 THEN B$ = "DELETE": FLASH
250  PRINT B$;: CALL  - 198: NORMAL: GET K$:K =  ASC (K$) - 48
300  IF K < 17 OR K > T + 16 THEN 130
310 CH = 1:CV = S - T + K - 16: GOSUB 1000: IF C = 194 AND (B$ = "RUN" OR B$ = "LOAD") THEN B$ = "B" + B$
320  FOR CH = 6 TO 39: GOSUB 1000: B$ = B$ +  CHR$ (C): NEXT CH: HTAB 1: CALL  - 868: PRINT B$: PRINT D$;B$: GOTO 100
1000 C1 =  INT (CV / 8):C2 = CV - C1 * 8:P = 1024 + 128 * C2 + 40 * C1 + CH:C =  PEEK (P): RETURN
  • 1
    I've seen a ton of different variants of this program (and I even think I wrote my own at some stage), so I don't think there's a single "proper name". It may even be that some variant was on the original Applesoft disks, but my memory is hazy here. – dirkt Mar 23 at 5:22
  • 1
    I always loved "Beautiful Boot" - ascii.textfiles.com/images/bboot3.jpg - That particular boot menu was going around the high school with Disk Muncher and both became very popular, well, at least with the half dozen dorks that didn't think Print Shop was the whole reason computers were invented. :-) – Geo... Mar 23 at 14:14
  • Just daydreaming about this, because I clearly remember this boot program - I wonder if it came from a MECC disk originally. Also, I wonder if an earlier Integer Basic version exists... – Geo... Mar 25 at 2:41
  • I took a look at some really old MECC disks, and wasn't able to find anything useful, so I don't think that is where it originated. I did do a quick roll through some old disk images from high school, and found a Hello.bas from 1986 on a ProDOS disk that looks like a descendant. not very helpful. – Geo... Mar 26 at 22:10
  • 1
    @scruss: There's nothing in the code relating to the name LEVI, and I've never seen similar programs named that. My hunch is that someone learnt INIT <your_name>. – Nick Westgate Apr 6 at 11:32
4

The program appears as "HELLO AUTO SELECT" in various public domain software collections that seem to derive from 1981 or earlier. This name appears in The Public Domain Exchange disk 166: "Hello and Menu" in The Best Apple Public Domain Software book from 1985, which states:

The software in this book was compiled from user groups and individuals.

It also appears in the sequel: The Best Apple II Public Domain Software, Edition II from 1987.

Disks containing the program include A.P.P.L.E. PDS Disk 166, which is available from a members-only download area at Call-A.P.P.L.E (Apple Puget Sound Program Library Exchange) and CLC HELLO AND MENU 058. (CLC is defined below ...)

These disks appear to be derived from AAA HELLO & MENU 166, and according to this source:

The Apple Avocation Alliance, commonly known as AAA or 3A, and later renamed the Computer Learning Center, was a Cheyenne, Wyoming-based distributor of public domain Apple software and a supplier in the early- and mid-1980s of Eamon adventure diskettes. The organization, headed by Ron Maleika, was founded in late 1980 and incorporated on 20 May 1981; it formally dissolved on 1 May 1997.

To be clear, the books only refer to "HELLO AUTO SELECT", but the disks contain a "HELLO AUTO SELECT I" which is identical to "LEVI", and a newer version of "HELLO AUTO SELECT" which loads a binary routine to get the number of free sectors. Each disk also includes a couple of other different minor but presumably newer programs (though none have any dates).

Given the above, it seems likely that "HELLO AUTO SELECT" is at least as old as the most recent date given by any other program on the disks, which is "MARCH 1981" in the file "HELLO WAGNER". (The earliest is 07/24/78 in "HELLO TITLE DEMO".) Since it's likely that it came from a user group, but lacks any attribution or comments at all, I can only list the groups mentioned on the disks, and perhaps the origin and author can be found by someone who has the groups' disks.

+--------------+---------------------------------------+---------------------+
| Abbreviation |                 Name                  |        File         |
+--------------+---------------------------------------+---------------------+
| AAA          | APPLE AVOCATION ALLIANCE              | HELLO APPLE LOGO    |
| ABACUS       | Apple Bay Area Computer Users Society | HELLO FREEMAN DAVIS |
|              | APPLE DAYTON                          | HELLO APPLE DAYTON  |
|              | APPLE PI                              | HELLO APPLE PI DOM  |
| APPLENET     |                                       | HELLO APPLENET      |
| CAC          | CAROLINA APPLE CORE                   | HELLO FROM CAC      |
| HAUS         |                                       | MENU IDEA MUNARRIZ  |
| IAC          | INTERNATIONAL APPLE CORE              | HELLO IAC           |
| NSAUG        | NORTHWEST SUBURBAN APPLE USERS GROUP  | CATALOG MANAGEMENT  |
+--------------+---------------------------------------+---------------------+

In researching this I saw many HELLO and MENU programs using many different formats and techniques. None of them is a clear ancestor to "HELLO AUTO SELECT". A few use similar wording or options, but only one other uses almost identical wording, with the same but more options. So a spiritual descendant might be Catsup from the Nibble magazine program index:

Catsup Catalog Supervisor   Weber, Chuck    Express II, V2N7 1981

You can run it online or download the disks in a zip archive. (It's on NIB06.DSK.)

Screenshot of CATSUP running

As a somewhat amusing footnote, a slightly modified version of "HELLO AUTO SELECT" appeared in (formerly Hardcore) Computist magazine, issue 77 on page 4 from 1990!

| improve this answer | |
  • Excellent research! I'm suspecting that Catsup is either unrelated or came after; it's far more powerful and does things quite differently from Levi. It would be interesting to know if Levi came first and Catsup was inspired by it. I could see Levi as being inspired by KEY-CAT, since the latter was a commercial product that people might be reluctant to copy. – cjs Mar 27 at 7:50
  • BTW, for easy reference it might be useful to include a link to the disk image and listing for KEY-CAT (found on this page), so one can more easily see what (little) it shares in common with the other programs found. – cjs Mar 28 at 0:54
  • I agree that these are all so differently implemented that they aren't derived from the same code. But the key text and option numbers that persisted ("TYPE LETTER TO RUN, OR LOAD=1 LOCK=2 UNLOCK=3 DELETE=4") leads me to believe that Catsup was the likely inspiration for what became LEVI. Oh, and I didn't want to link to archive.org's Utility City because that disk doesn't boot. – Nick Westgate Mar 28 at 2:21
  • This disk has the Utility City programs on it and does boot. However, that page doesn't include listings of the programs on the disk, which was why I suggested the other one. And yes, assuming that Catsup predates the earliest LEVI that can be found, and also the Rhode Island one in the other answer, I'd agree that it may well be the inspiration, but we're kinda stuck on when the earliest version of LEVI was around, and what the date of the Rhode Island diskette is. – cjs Mar 28 at 4:34
  • 1
    @cjs: After extensive research I agree that Catsup probably came later. ; - ) – Nick Westgate Apr 10 at 16:13
4

I did some looking around on the internet archive, browsing through a few collections, and I ran across this variant:

Rhode Island Apple Group Volume 14 - Integer Basic Games

The disk contains a what could be a variation, or an ancestor (or even a descendant) of the code listed above. There are enough similarities to look suspicious, but most of these boot menu programs were similar in nature so it's not a slam dunk.

Here's a screenshot of the program running:

enter image description here

Here's the source code, which has an attribution in the last three lines:

 10  NOTRACE : NORMAL : TEXT 
 20  CLEAR 
 30 D$ =  CHR$ (4): REM CHR$(4) IS CTRL-D
 40  PRINT D$;"NOMON C,I,O"
 50  HOME 
 60  PRINT D$;"CATALOG"
 70  DIM L(24)
 80  FOR I = 1 TO 24
 90  READ L(I)
 100  NEXT I
 110 SL = SL + 1
 120 X =  PEEK (L(SL)) - 128
 130  IF X <  ASC ("0") OR X >  ASC ("2") GOTO 110
 140  FOR I = SL TO 24
 150 X =  PEEK (L(I)) - 128
 160  IF X <  ASC ("0") OR X >  ASC ("2") GOTO 210
 170  POKE L(I),160: POKE L(I) + 2,173
 180 LL = I - SL + 193
 190  POKE L(I) + 1,LL
 200  NEXT I
 210  PRINT "RUN ?  LOCK=1 UNLOCK=2 DELETE=3 EXIT=4";
 220 B$ = "RUN"
 230  HTAB 6
 240  GET K$
 250  IF K$ = "4" THEN  END 
 260  IF K$ > "0" AND K$ < "4" GOTO 290
 270  IF K$ > "@" AND K$ <  CHR$ (LL - 127) GOTO 370
 280  GOTO 240
 290  IF K$ = "1" THEN B$ = "LOCK"
 300  IF K$ = "2" THEN B$ = "UNLOCK"
 310  IF K$ = "3" THEN B$ = "DELETE"
 320  VTAB I: HTAB 1: CALL  - 868
 330  PRINT " PRESS 'LETTER' YOU WISH TO ";
 340  IF K$ = "3" THEN  FLASH 
 350  PRINT B$;: NORMAL : CALL  - 198: REM BELL
 360  GOTO 240
 370 I = SL +  ASC (K$) - 65
 380 X =  PEEK (L(I) - 2)
 390  IF X = 194 AND B$ = "RUN" THEN B$ = "BRUN"
 400  IF X = 212 GOTO 470
 410 N$ = ""
 420  FOR J = 4 TO 33
 430 N$ = N$ +  CHR$ ( PEEK (L(I) + J))
 440  NEXT J
 450  PRINT : PRINT D$;B$;N$
 460  GOTO 20
 470  HOME : VTAB 10: PRINT "THAT IS A TEXT FILE ! ! !"
 480  FOR PAUSE = 1 TO 1000: NEXT PAUSE
 490  GOTO 20
 500  DATA  1027,1155,1283,1411
 510  DATA  1539,1667,1795,1923
 520  DATA  1067,1195,1323,1451
 530  DATA  1579,1707,1835,1963
 540  DATA  1107,1235,1363,1491
 550  DATA  1619,1747,1875,2003
 560  REM ***APPLESOFT MENU***
 570  REM BY  LARRY L. FREEMAN
 580  REM AND JAMES P. DAVIS
 590  REM  OF ABACUS...

It is conceivable a random developer took this as a starting template, compacted and streamlined the code, and made it a little sexier with the scrolling menu. But that's pure speculation.

EDIT

I did some googling, and found this citation in the December 1980 issue of Micro (The 6502 Journal) Number 31

  1. Abacus II 2, Issue 5 (May, 1980) Freeman, Larry L. and Davis, James P., "Applesoft Menu,” pg. 8. Automatic menu for running Catalog programs on the Apple Disk.

As near as I can tell, "Abacus II" was the newsletter for the "Apple Bay Area Computer Users Society" which seems to have been issued from 1980 to 1982. - But I have been unable to locate the Abacus II 2, Issue 5 referenced.

This leads me to believe Larry Freeman and James Davis were members of the club and wrote this particular menu loader. - But I can't draw a direct connection to the LEVI version.

| improve this answer | |
  • 1
    Great find! James Davis frequents comp.sys.apple2 where I've already started a thread about this, and in fact he's contacted me before, so I sent him an email. – Nick Westgate Mar 28 at 2:16
  • Well, James said that "I.I.R.C., Larry Freeman wrote it for the A.B.A.C.U.S. in Integer BASIC back in 1978 or 1979 around the time we first met at the Apple Bay Area Computer Users Society (Computer Club meeting monthly at Castro Valley High School, CA, USA). I converted it to Applesoft and made improvements to it." – Nick Westgate Apr 5 at 11:33
  • Thats awesome! - Did he draw any direct connection between the version we are discussing and the "LEVI" variant referenced by the OP? Is there anything to link the "LEVI" variant as a descendant? – Geo... Apr 5 at 13:38
  • No, he didn't offer up much else and the code is very different to LEVI's. I still think the shared text in Catsup is the closest link ("TYPE LETTER TO RUN, OR LOAD=1 LOCK=2 UNLOCK=3 DELETE=4") but I'd like to find a an earlier one with similar scrolling. BTW, here's a temporary link to a screenshot in the same style as all the others here if you want to download it and put it into your answer. – Nick Westgate Apr 6 at 12:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.