Christmas Return Labels

Merry Christmas to all! It may seem like I’m jumping the gun a little by wishing you a Merry Christmas now. However, if you are like me, it will probably take you until January to get this program entered into old TS2068.

Around Christmas time, our postage bill gets very large. With all of those Christmas cards, we send a lot of mail during the months of November and December. The cost of all that mail is one thing, but having to hand write our return address on all of that mail is too much. Sure, we could go out and get some ready-made return labels, or even a rubber stamp, but those do not show the Christmas spirit. What we need is a Christmas return address label maker. That is what this program does.

This Program will make any number of return address labels on 15/16 inch pressure sensitive labels. The labels must be one-up, meaning only one across the page, and cannot be any larger than 3-1/2 inches. The text of the label is variable and entered when the program is run. In addition to the text of the label, the program also adds a small, graphically printed, picture to the label. Currently, the program has four such pictures in its library, but the program may be easily modified to add additional pictures.

The picture is printed using a graphic area of 32 X 40 dots. The picture is placed into the program using a READ DATA statement pair in lines 250 to 260. To add additional pictures, one must change line 40 so that MP = equals the number of pictures to look for. One may then adds additional DATA statements to the end of the program which contains the encoded new pictures.

At the top and bottom of the label is a graphic scroll which frames the label. This scroll is of a variable length and its length is calculated from the length of the text to be printed. The text itself is entered when the program is run. The text has a maximum of four lines, but blank lines may be entered if required. The first line is printed in the emphasized mode which calls attention to the line. The remaining three lines are printed compressed, which allows printing the most amount of information on the line. The program was written for a Legend 1080, but should also run on EPSON printers with Graph Trax 4, Legend 880, Gemini 10X or probably any FX-80 or RX-80 Epson compatible printer.

In addition to return address labels, we have also used the program to print out Christmas gift tags. We enter the four lines as follows.

sample gift tag with candle picture: "VERY MERRY CHRISTMAS / TO: / FROM:"
sample gift tag with candle picture: "VERY MERRY CHRISTMAS / TO: / FROM:"

This way, we now have blank, stick-on labels that may be filled out later and attached to Christmas packages.

I have written a second program that comes in handy when designing and programming the pictures. This program prints out a continuous stream of graph paper that is 40 squares wide. Using this paper, one may design the picture into decimal characters.

With these two programs, one may create any number of unique labels for any occasion. Happy Label Mailing

I was very impressed one year when Stan Lemke printed one of my labels from one of his clients thinking that it was the result of one of his programs! It gave Greg and I a GOOD FEELING!

The program below is to be used with the LarKen L3 Disk Drive interface and the modified TASMAN B CPI printer interface mentioned in the January 1993 issue of UPDATE! Magazine. It is not necessary to do any Peeks and POKEs into the LarKen LKDOS RAM area as this program contains the printer driver code in the line 0 REMark statement.

If you do not obtain this program from UPDATE! Magazine, you must load the code yourself into the program by making a line 0 REMark statement with 652 spaces. type in the rest of the program and save it by typing GOTO 9990. Next, load your TASMAN CPI printer driver code. Finally, execute the following program in the immediate mode:

FOR i=26715 to (26715+651):POKE i,PEEK(i+38001):NEXT I

If the program RUNs OK, SAVE it again by typing GOTO 9990.

  0 REM Put your TASMAN B CPI printer driver code in this location. Lines 5 through 7 will POKE the code into Hi-RAM.
4 LET PR = PEEK 23635+256*PEEK 23636:LET PR=PR+5
5 CLEAR 64715
5 LET PS=VAL "PEEK 23635+256* PEEK 23636": LET PS=VAL "PS+5":LET PR=VAL "64716-PS"
6 FOR i=PR TO (PR+651):POKE (i +38001),PEEK i: NEXT i
7 RANDOMIZE USR 64719
10 REM Christmas Return Label Generator V1.0T Written By Gregory A. Dertz & Robert E. Swoger November 23,1985
40 LET MP=4
50 DIM A$(4,36): DIM S(12): DIM K(MP,4,40): DIM X(4)
60 REM This Is The Data For The Upper And Lower Scroll
70 FOR I=1 TO 12
80 READ S(I)
90 NEXT I
100 DATA 64,32,48,24,28,28,28,2 8,24,48,32,64
110 LET LC=1
120 CLS : PRINT " Welcome To The Christmas"
130 PRINT " Return Address Label Program.",,,
140 PRINT "I will first ask for your name and address(4 lines max.), then "
160 PRINT "print out the number of return "
170 PRINT "address labels requested.",,,
180 PRINT "The first line of the label will"
190 PRINT "be printed emphasized, the"
200 PRINT "remaining three lines will be"
210 PRINT "printed compressed." ,,,
220 PRINT " To use me you must have labels"
230 PRINT "that are 1 to the inch and are"
240 PRINT "one-up on the sheet - a roll"
245 REM While the user is reading the above stuff, start reading the data for the pictures.
250 FOR I=1 TO MP
260 FOR J=1 TO 4
270 FOR X=1 TO 40
280 READ K(I,J,X)
290 NEXT X: NEXT J: NEXT I
300 GO SUB 900
310 CLS : PRINT "EXAMPLE:",,,," MERRY CHRISTMAS",,"John, Mary, Jim, & Spot","1234 Any Street": PRINT "This Town, IL 60000",,,
320 REM Now ask for the return address info
330 FOR I=1 TO 4
340 PRINT " LINE ";I;"? ";: INP UT G$
350 IF G$="" THEN GO TO 365
360 LET X(I)=LEN G$: LET A$(I)= G$
365 PRINT A$(I,1 TO )
370 NEXT I
375 PAUSE 150
380 CLS : REM Now echo the input for confirmation.
390 FOR I=1 TO 4
400 PRINT A$(I,1 TO )
410 NEXT I
420 PRINT : RANDOMIZE USR 64719
430 INPUT "CORRECT? ";T$
440 IF T$="y" OR T$="Y" OR T$="YES" THEN GO TO 470
450 IF T$="n" OR T$="N" OR T$="NO" THEN GO TO 330
460 GO TO 390
465 REM This section will now calculate the length of the scroll based on the length of the longest inputted line.
470 LET H=X(1)
480 FOR I=2 TO 4
490 IF (15/27)*(X(I))>H THEN LET H=INT ((15/27)*(X(I)))
500 NEXT I
510 LET H=5+(INT ((2/3)*H))
520 IF H>22 THEN LET H=22: REM Check for overflow
525 REM Now print the labels
530 INPUT "Number of labels to be printed? ";N
540 PRINT "Insert labels and line up the"
550 PRINT "first label.",,,,
580 REM Now clear the printer and set line spacing to 8/72 inch so that there will not be spaces between the lines of the picture
581 LPRINT CHR$ 27;CHR$ 27;"@"; CHR$ 27;CHR$ 27;"A";CHR$ 27;CHR$ (8);
585 REM Now then, print all of the labels
590 FOR Z=1 TO N
600 PRINT "LABEL NO. ";Z,: POKE 23692,255
610 GO SUB 840: REM Prints the upper scroll
620 FOR L=1 TO 4
630 LPRINT CHR$ 27;CHR$ 27;"L"; CHR$ (80);CHR$ 27;CHR$ (0);
640 FOR C=1 TO 40: REM Prints picture line
660 LPRINT CHR$ 27;CHR$ (K(LC,L ,C));CHR$ 27;CHR$ (K(LC,L,C));
670 NEXT C
680 IF L=1 THEN LPRINT CHR$ 27; CHR$ 27;"E";: REM Prints the first line emphasised
690 IF L=2 THEN LPRINT CHR$ 27; CHR$ 27;"F";CHR$ 27;CHR$ 15;CHR$ 27;CHR$ (27);"G";: REM Prints all other lines compressed
700 LPRINT A$(L)
710 NEXT L
720 GO SUB 840: REM Prints the lower scroll
725 LET LC=LC+1: REM Increments the picture
726 IF LC=MP+1 THEN LET LC=1
730 LPRINT : LPRINT : LPRINT
740 LPRINT CHR$ 27;CHR$ 27;"H"; : RESTORE : PRINT "PRINTED": NEXT Z
790 LPRINT CHR$ 27;CHR$ 27;"@"; : REM Now DONE, so reset the printer
800 INPUT "Would You Like More Labels? ";T$
810 IF T$="y" OR T$="Y" OR T$="YES" THEN GO TO 380
820 IF T$="n" OR T$="N" OR T$="NO" THEN PRINT "O.K. Thank you for using me.": STOP : GO TO 9998
830 GO TO 800
840 LPRINT CHR$ 27;CHR$ 27;"H"; CHR$ 27;CHR$ 27;"K";CHR$ 27;CHR$ (12*H);CHR$ 27;CHR$ (0);
850 FOR B=1 TO H
860 FOR I=1 TO 12
870 LPRINT CHR$ 27;CHR$ (S(I));
880 NEXT I: NEXT B: LPRINT : RETURN
900 PRINT AT 21,4;"HIT <ENTER> to continue "
910 LET T$=INKEY$: IF T$="" THEN GO TO 910
920 RETURN
1000 REM Tree Array LC=1
1010 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,63,255
1020 DATA 255,63,7,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1030 DATA 0,0,0,0,0,0,0,0,0,0,0,0,1,3,7,79,223,255,255,255
1040 DATA 255,255,255,223,79,7,3,1,0,0,0,0,0,0,0,0,0,0,0,0
1050 DATA 0,0,0,0,0,0,0,0,0,1,35,239,255,255,255,255,255,255,255,255
1060 DATA 255,255,255,255,255,255,255,255,239,35,1,0,0,0,0,0,0,0,0,0
1070 DATA 0,0,0,0,0,16,48,112,240,240,240,240,240,240,240,240,240,255,255,255
1080 DATA 255,255,255,240,240,240,240,240,240,240,240,240,112,48,16,0,0,0,0,0
1090 REM Bells Array LC=2
1100 DATA 0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,7,3,0,7,7
1110 DATA 15,15,31,31,15,15,7,7,0,0,0,0,0,0,0,0,0,0,0,0
1120 DATA 0,2,3,3,3,3,7,15,31,63,127,255,255,255,255,248,7,255,255,255
1130 DATA 255,255,255,255,255,255,255,255,255,7,0,0,0,0,0,0,0,0,0,0
1140 DATA 0,0,0,152,252,252,248,240,248,252,254,255,255,254,241,15,255,255,255,255
1150 DATA 255,255,255,255,255,255,255,255,255,255,15,1,0,0,0,0,0,0,0,0
1160 DATA 0,0,0,0,0,0,0,0,0,0,0,64,64,192,192,192,192,192,192,192
1170 DATA 192,192,192,192,192,192,192,216,252,252,216,192,192,64,64,0,0,0,0,0
1180 Rem Sock Array LC=3
1190 DATA 0,7,2,1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1200 DATA 0,0,0,0,0,0,0,0,1,1,29,51,62,12,0,0,0,0,0,0
1210 DATA 0,128,0,0,128,0,60,36,36,60,0,1,1,1,1,0,0,0,0,0
1220 DATA 0,0,0,48,44,67,135,135,15,31,31,159,127,15,3,0,0,0,0,0
1230 DATA 0,0,0,0,0,0,0,0,0,0,0,240,80,16,16,0,15,1,1,1
1240 DATA 0,0,0,0,0,129,227,255,255,255,255,255,255,255,255,255,63,12,0,0
1250 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1260 DATA 0,24,60,126,254,254,254,252,252,248,240,224,192,0,0,0,0,0,0,0
1270 REM Candle Array LC=4
1280 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,24,32,64,128,128
1290 DATA 131,132,136,132,131,128,128,64,32,24,7,0,0,0,0,0,0,0,0,0
1300 DATA 0,1,6,8,16,32,96,96,32,16,8,6,1,0,192,32,16,0,0,0
1310 DATA 207,47,31,47,207,0,0,0,16,32,192,0,0,0,0,0,0,0,0,0
1320 DATA 0,192,48,12,6,2,97,33,33,33,33,65,1,1,1,1,1,1,1,1
1330 DATA 255,255,255,255,255,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0
1340 DATA 0,0,0,0,0,0,0,0,0,0,0,248,248,248,248,248,248,248,248,248
1350 DATA 248,248,248,248,248,248,248,248,248,248,240,224,192,128,0,0,0,0,0,0
9991 CLEAR
9992 RANDOMIZE USR 100: SAVE "XMSLBL.BT" LINE 1
9998 RANDOMIZE USR 100: LOAD "L.B1"
9999 SAVE "XMASLBL" LINE 1
Printer pictures drawn by the program: tree, bells, NOEL stocking and candle
Printer pictures drawn by the program: tree, bells, NOEL stocking and candle
two sample labels, "SEASONS GREETINGS" with tree and "MERRY CHRISTMAS / TO: All Our Members / FROM: The Staff And Contributors of ZXir QLive Alive!" with stocking
two sample labels, "SEASONS GREETINGS" with tree and "MERRY CHRISTMAS / TO: All Our Members / FROM: The Staff And Contributors of ZXir QLive Alive!" with stocking

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.