3

There's a fairly common 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?

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... yesterday
2

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.

However, the code has an attribution in the last three lines. Here is the listing:

 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.

  • 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 10 hours ago
1

I think I found an ancestor in the Nibble magazine program index from volume 2, number 7, 1981:

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

Another ancestor might be Beagle Brothers' KEY-CAT from Utility City.

===========================
"KEY-CAT" CATALOG MENU-FIER
BY BERT KERSEY
(C) 1981 BEAGLE BROS.
LISTS UP TO 23 FILES
SELECTABLE BY ONE KEYPRESS.
===========================

Screenshot of KEY-CAT running

  • 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 yesterday
  • 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 11 hours ago
  • 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 10 hours ago
  • 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 8 hours ago

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.