1 ' Jiffy-Ya Zipcoder Program by Marshall Plann 10 WIDTH "lpt1:",255 20 K2 = 6 ' Thickness of the stripes 30 K1 = 5 ' Thickness of the gaps 40 SUM = 0 50 PRINT "Enter Zip Code : " 60 INPUT A$ : L = LEN(A$) 70 ' initialize Printer and print first long bar 80 GOSUB 250 : GOSUB 370 90 ' process each digit 100 FOR I = 1 TO L: Z$ = MID$(A$,I,1) : GOSUB 190: NEXT I 110 ' calculate and print check sum 120 IF (SUM < 10) GOTO 130 ELSE SUM = SUM - 10 : GOTO 120 130 IF NOT (SUM = 0) THEN SUM = 10 - SUM 140 Z$ = CHRS$(SUM + ASC("0")) : GOSUB 190 150 ' print last long bar 160 GOSUB 370 170 LPRINT : LPRINT 180 END 190 IF (Z$ = "0") THEN GOSUB 570 200 IF (Z$ = "-") THEN RETURN ' Ignore dashes (-) 210 DIGIT = ASC(Z$) - ASC("0") : SUM = SUM + DIGIT 220 ' Case Statement for each digit 1-9 230 ON DIGIT GOSUB 390,410,430,450,470,490,510,530,550 240 RETURN 250 ' Initialize the printer for the correct number of bytes 260 OPEN "lpt1:" AS #1 270 N = 5 * (K1 + K2) ' Set width of a digit in dots 280 RETURN 290 ' Print a long Bar then a space 300 FOR J = 1 TO K1: PRINT #1, CHR$(255); : NEXT J 310 FOR J = 1 TO K2: PRINT #1, CHR$(0); : NEXT J : RETURN 320 ' Print a Short Bar then a space 330 FOR J = 1 TO K1: PRINT #1, CHR$(7); : NEXT J 340 FOR J = 1 TO K2: PRINT #1, CHR$(0); : NEXT J : RETURN 350 ' TELL PRINTER TO RECEIVE ENOUGH BYTES FOR A DIGIT 360 PRINT #1, CHR$(27) + "Z" + CHR$(N) + CHR$(0); : RETURN 370 ' PRINT A LONG ALONE 380 PRINT #1, CHR$(27) + "Z" + CHR$(K1 + K2) + CHR$(0); : GOSUB 290 : RETURN 390 ' PRINT A 1 400 GOSUB 350 : GOSUB 320 : GOSUB 320 : GOSUB 320 : GOSUB 290 : GOSUB 290 : RETURN 410 ' PRINT A 2 420 GOSUB 350 : GOSUB 320 : GOSUB 320 : GOSUB 290 : GOSUB 320 : GOSUB 290 : RETURN 430 ' PRINT A 3 440 GOSUB 350 : GOSUB 320 : GOSUB 320 : GOSUB 290 : GOSUB 290 : GOSUB 320 : RETURN 450 ' PRINT A 4 460 GOSUB 360 : GOSUB 320 : GOSUB 290 : GOSUB 320 : GOSUB 320 : GOSUB 290 : RETURN 470 ' PRINT A 5 480 GOSUB 350 : GOSUB 320 : GOSUB 290 : GOSUB 320 : GOSUB 290 : GOSUB 320 : RETURN 490 ' PRINT A 6 500 GOSUB 350 : GOSUB 320 : GOSUB 290 : GOSUB 290 : GOSUB 320 : GOSUB 320 : RETURN 510 ' PRINT A 7 520 GOSUB 350 : GOSUB 290 : GOSUB 320 : GOSUB 320 : GOSUB 320 : GOSUB 290 : RETURN 530 ' PRINT A 8 540 GOSUB 350 : GOSUB 290 : GOSUB 320 : GOSUB 320 : GOSUB 290 : GOSUB 320 : RETURN 550 ' PRINT A 9 560 GOSUB 350 : GOSUB 290 : GOSUB 320 : GOSUB 290 : GOSUB 320 : GOSUB 320 : RETURN 570 ' PRINT A 0 580 GOSUB 350 : GOSUB 290 : GOSUB 290 : GOSUB 320 : GOSUB 320 : GOSUB 320 : RETURN