Tape Label Maker gives each cassette a “label”: a short loader program and an index screen recorded at the start of the tape, so that loading the tape first shows what is on it. Setting up a tape records the loader at counter 6 and a dummy screen at 15. Generating the index asks for a tape name, has the user play the tape back and type in the counter reading of each program on it, and then lets them type notes on the form; the finished screen is then recorded over the dummy at 15.
The title screen reads “TAPE LABEL MAKER UTILITY © 1982 William J. Pedersen, Rev1 © 1984 William J. Pedersen, Rev2”. This copy came from the WIDJUP collection that UPDATE Magazine issued on a Larken disk.
Program Analysis
- Lines 1–3 are the label itself: line 2 loads and shows the index screen, and line 3 saves the loader and screen to tape. When a tape is being set up, line 469 deletes everything from line 4 on (
DELETE 4,), leaving just this loader to be saved. - Lines 400–499 explain the program and ask whether the tape is already set up.
- Lines 1500–1563 build the index: a ruled form with the tape name and the fixed entries at 6 and 15, up to 12 more counter readings typed in, and free notes typed a key at a time and ended with %, before
SAVE "Index" SCREEN$.
Notable Techniques
- The program cuts itself down with the TS2068’s
DELETEto leave a tiny loader. - Notes are read with INKEY$ and printed character by character, with the cursor shown as % and backspace leaving a trail of %s.
Its LKDOS save line was changed to save to tape, and it was tested in ZEsarUX.
Source Code
1 REM '.'."Load Index"'.'. GOTO 3 and CONT for first copy. CONT for additional copies. Start recording at 6 and 15. ================================
2 CLS : PRINT AT 20,1;"The tape index is being loaded."'" STOP RECORDER when completed.";AT 11,0;: LOAD "Index" SCREEN$
3 STOP : SAVE "Load Index" LINE 2: SAVE "Index" SCREEN$ : GO TO 3
400 REM '.'.'."Make Index"'.'.'.
401 LET key=1000: LET save=2000: CLS : PRINT AT 11,6; FLASH 1;" STOP RECORDER "; FLASH 0;AT 16,0;" TAPE LABEL MAKER UTILITY "' INK 4;"* 1982 William J. Pedersen, Rev1* 1984 William J. Pedersen, Rev2"; FLASH 0: GO SUB key
410 PRINT '" You can set up tape indexing, or generate the index. Only onefunction can done with a single load."''" A label consists of an index loader program at 6 and a screenimage at 15. Do not store your programs lower than location 50 or they might overlay part of the SCREEN$ record."
411 PRINT '" Normally you would want to haveall your tapes set up ahead of time, but this is not necessary if your program is recorded at a safe location."
412 PRINT '" IS YOUR TAPE ALREADY SET UP?": INPUT "Yes or No? "; LINE D$
413 IF LEN D$ THEN IF D$(1)="Y" OR D$(1)="y" THEN GO TO 1500
414 REM Not prepared
415 CLS : PRINT ''" You can prepare as many tapes as you wish."''" A dummy screen image will be recorded after the index loader on each tape."
416 PRINT '" Insert another cassette tape and CONTINUE."
418 PRINT ''" This program will now reduce tothe index set up routine."''" Press the ENTER key twice and read listing for instructions."
468 POKE 23660,0: POKE 23661,0
469 PAUSE 0: CLEAR : DELETE 4,
499 STOP
1000 PRINT AT 21,6; PAPER 6; INK 0;" PRESS ANY KEY ": PAUSE 0: CLS : RETURN
1500 REM Generate Index
1501 CLS : PRINT ''" The index will now be generatedfor the programs and data which are stored on this tape."
1502 PRINT '" It is suggested that you keep awritten or printed record of thenames you assign to your tapes."
1503 PRINT '" You can enter and edit notes. The backspace is destructive andleaves a trail of %'s. If you don't want all capitals, press CAPS SHIFT 6 and reset CAPS LOCKbefore going on."'" You can't change it while you are entering notes."'" Then CONT."
1515 INPUT " What tape I.D.? "; LINE D$
1520 CLS : PRINT PAPER 6; INK 1,,"Cassette tape Index: ";D$,: FOR n=4 TO 15: PRINT AT n,0;".............................",: NEXT n
1553 ON ERR GO TO 1554: PRINT AT 18,0;" Rewind tape. Start playback."," PRESS ANY KEY"," Write down counter readings."," After last entry, BREAK.",AT 2,0; PAPER 6;"________________________________": PAUSE 0: PRINT AT 18,0,,,,AT 3,0;: LOAD "ZsfRBWkUqj"
1554 ON ERR RESET : PRINT AT 20,0,,,,: LET Row=5: PRINT AT 4,19;"........@ 6";AT 5,17;"..........@ 15"
1555 INPUT "How many other entries? ";E: IF E<0 OR E>12 THEN GO TO 1555
1556 FOR n=1 TO E: INPUT "ENTER Counter readings..";j: PRINT AT Row+n,27;"@ ";INT j: NEXT n
1557 PRINT AT Row+n,0;"________________________________": FOR j=Row+n+1 TO 20: PRINT PAPER 6,,: NEXT j: PRINT AT 21,0;" ENTER % to end notes.",AT Row+n+1,1; PAPER 6; INK 1;"NOTES: %"+CHR$ 8;
1558 LET D$=INKEY$: IF D$="" THEN GO TO 1558
1559 IF D$="%" THEN GO TO 1562
1560 IF INKEY$<>"" THEN GO TO 1560
1561 PRINT PAPER 6; INK 1;D$+"%"+CHR$ 8;: GO TO 1558
1562 IF INKEY$<>"" THEN GO TO 1562
1563 PRINT AT 21,0;"POSITION at 13. RECORD at 15.",: PAUSE 360: PRINT AT 21,0; PAPER 6,,: SAVE "Index" SCREEN$ : PRINT AT 21,0; FLASH 1;" Index saved. Job complete.",: STOP : GO TO 400
2000 SAVE "TINDEX" LINE 400Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.


