Greeting Card Designer

Date: 1985
Type: Program
Platform(s): TS 2068
Tags: Home

This suite lets you design, edit, and print folded greeting cards on 80-column parallel printers.

The suite is organized into four separate tape-loaded programs: a card designer with cover and inside editors, a graphics designer utility for creating and editing 32×56-pixel icons, a banner designer, and a shared graphics library loader.

All modules rely heavily on machine code routines loaded from tape (up to 19,606 bytes at address 45928), called via RANDOMIZE USR at fixed addresses such as 50109 (border drawing), 50150 (icon deposit), 49706 (print top half), and 49535 (print bottom half).

The program supports five printer models—Epson RX/FX, Gemini SG10, Memotech DMX80, Seikosha GP250, and Prowriter 8510—with four parallel interface types (AERCO, TASMAN-b/c, A&J), configuring the printer driver by POKEing control blocks assembled from string variables into memory around address 49098.

Card state (text, borders, icon layouts, graphic data) is serialized by iterating over string arrays with CODE and writing bytes to address 60000 before saving as a named CODE block to tape.

Includes 22 graphics:

  • Holiday: xmas tree, santa, wreath, bells, pumpkin                                                                     
  • Love/Celebration: heart, cupid, rose, wine, cake, gift                                                              
  • Nature/Fun: cat, whale, sailing, sunshine, smile, baseball                                                          
  • Other: skull, grad, jewish star, cleft, notes   

Program Analysis

Suite Architecture

The listing contains six distinct BASIC program segments, each beginning with line 1 (a large machine code data REM) and line 2 (the DEF FN a() helper). The modules and their roles are:

  1. StartC — splash screen loader; chains to Cdesign
  2. Cdesign — main card designer: text editor, border selector, graphic layout editor, print, save, load, erase
  3. StartG / StartG (duplicate) — splash screen loader; chains to Gdesign
  4. Gdesign — pixel-level graphic (icon) editor with a 32×56 dot grid
  5. Banner loader — splash screen; chains to banner.bas
  6. banner.bas (Cdesign) — banner designer: start/end graphic selection, text entry, print

Each module bootstraps by loading its associated machine code block from tape before entering its main menu loop.

Line 1: Machine Code Data REM

Every module shares an identical line 1 REM containing binary data disguised as BASIC keyword tokens and printable characters. This is a well-known technique for embedding machine code inside a BASIC program so it survives a NEW and persists at the start of the program area. The trailing string of 97 x characters acts as padding or a sentinel.

FN a() — Dynamic USR Address

Line 2 defines DEF FN a()=PEEK 23635+256*PEEK 23636+5. System variables at 23635–23636 hold PROG (the address of the first BASIC line), so FN a() always returns the address of the machine code embedded in the line 1 REM, plus 5 bytes to skip the REM header. This makes all RANDOMIZE USR FN a() calls position-independent regardless of where the program loads in memory.

Machine Code Entry Points

The card designer calls fixed absolute addresses in the loaded CODE block (base ~45928 for graphics data, ~49000–50900 for routines). Named in comments:

AddressNameFunction
49003PRNTiconPrint a graphic icon to printer
49006(interface install)Install parallel printer interface
49109 / 50109BORDERDraw decorative border
49150 / 50150ICONdepDeposit icon into card buffer
49265 / 50265STRPRNTPrint a formatted text string
49444CLRwndClear printer window / buffer
49535PRNTbotPrint card bottom (inside)
49706PRNTtopPrint card top (cover)
48800icons2bufCopy icons to save buffer
48812buf2iconsRestore icons from load buffer
50595Idef2ScrnRender icon definition to screen
50631DunpltUnplot a dot in graphic editor
50683DpltPlot a dot in graphic editor
50851CLRiconClear icon data
50862STRiconStore icon from screen to buffer
50900INVRTdotInvert a pixel (cursor)
50609(printer init)Initialize printer interface

Display System (POKE 23728/23729/23723 + RANDOMIZE USR FN a())

Before each screen title is displayed, the program POKEs values into addresses 23728, 23729, and 23723, then calls RANDOMIZE USR FN a(). The machine code in the REM reads these as parameters (paper/ink color index and mode flags) to render a styled title bar using the text in the following REM line, which serves as a string argument rather than documentation.

Text Editor (lines 1300–1890 in Cdesign)

The lettering editor stores card text in a 26×19 string array t$. Columns 1–15 hold character data, column 17 holds justification (L/R/C encoded as CHR$ 0/1/2), column 18 holds font mode (solid/outline, CHR$ 0/1), and column 19 holds size flags (CHR$ 0=normal, CHR$ 1=large first row, CHR$ 255=large continuation row). Navigation uses GO TO z(k) — a jump table via a string variable z$ — dispatching on key code k.

Dispatch Table via GO TO z(k)

At line 1570, GO TO z(k) uses the variable z (presumably a numeric array) indexed by keycode to branch to handler line numbers. This is an efficient alternative to a long chain of IF statements for keyboard routing. Similarly, the graphic layout editor at line 1052 uses GO SUB ((k-8)*10)+1100 and the cursor-move handler at line 1660 uses GO SUB ((k-8)*5)+1680 to compute subroutine addresses arithmetically from arrow-key codes 8–11.

Graphic Layout Editor (lines 810–1256)

The graphic layout editor lets users assign icon positions in a grid of either 6×6 (small icons, wdth=5) or 3×3 (large icons, wdth=2). Each cell is stored in string arrays F$ (cover, 36 elements) and I$ (inside, 36 elements) as CHR$ 0 (empty) or CHR$ 1 (filled). The screen grid is drawn with UDG characters \a and \b. The position-to-array-index formula at line 1230, LET n=(l*(6/(ISIZE+1)))+c, adapts to both grid sizes using the ISIZE flag.

Pixel Graphic Editor (Gdesign, lines 3000–5090)

The graphic editor draws a 32×56-dot grid using PLOT/DRAW, mapping each cell to 3×3 screen pixels. The cursor is managed with an invert-XOR technique via the INVRTdot machine code routine, toggled through Cflag. Coordinates use screen PLOT space (x: 0–96, y: 9–174). Address-to-hi/lo byte decomposition at lines 3900–3930 passes memory addresses to machine code via POKE 49000/49001.

Printer Configuration (lines 2300–2740)

Five printer models are supported. For Epson-compatible printers, a control block string (e$, g$, or p$) is unpacked byte-by-byte from a BASIC string variable into memory starting at 49098 (card) or 49019 (banner), using 254 as a block separator and 255 as a terminator. After loading, several absolute addresses within the printer driver are patched with POKE to set double/single density mode and printer-specific escape sequences. The interface type (AERCO, TASMAN-b/c, A&J) is written to 49016/49018, and linefeed suppression is toggled by scanning addresses 49146–49153 for value 10.

Card Save/Load Serialization (lines 5000–6440)

Card state is serialized by iterating over t$ (26×19 = 494 bytes), F$ (36 bytes), and I$ (36 bytes) with CODE/POKE into a buffer at address 60000, followed by 4 bytes for BORDf, BORDi, ISIZEf, ISIZEi, totaling 570 bytes (the SAVE length is stated as 1082, accounting for icon graphics data appended by the icons2buf machine code at 48800). On load, the reverse process uses PEEK/CHR$ to restore the array contents.

ON ERR Error Handling

Tape errors during LOAD/SAVE/VERIFY are caught with ON ERR GO TO 5800. The error handler at line 5800 displays a flashing “TAPE ERROR” message, waits for ENTER with PAUSE 4e4, and retries by jumping to the address stored in DerrRet. The nested ON ERR GO TO 5822 inside the handler prevents further errors during the wait loop from escaping. After retry, ON ERR RESET clears the handler.

Notable Anomalies

  • Line 1690 contains an inline REM comment (: REM Down ) mid-line after a GO TO, which is syntactically valid but the REM is unreachable; it serves as documentation only.
  • The GO TO 3065 at line 3057 in Gdesign targets a non-existent line — execution falls through to the next higher line (3100), which is the main editor loop. This is intentional.
  • Line 553 in Cdesign has ON ERR RESET immediately followed by variable assignments and a GO TO on the same logical line; this is valid multi-statement syntax but unusual placement of the error reset.
  • The banner designer’s printer selection menu labels all Epson/Gemini/Memotech/Panasonic/Spirit/Legend printers as option “1” but accepts inputs 1–3 only, mapping to three internal subroutines.

Content

Appears On

Related Products

Design and print custom greeting cards. Includes graphics. Print custom greeting cards for any occasion including: birthdays, anniversaries, Mother’s Day,...

Related Articles

Related Content

Image Gallery

Source Code

    1 REM !VAL \ FREE !CODE \ RETURN ( RETURN ( THEN \'. THEN AND *U\>"PEEK #( IF RESTORE !LEN \N!@ RESTORE !VAL \ FREE NEW o>& THEN % THEN gSTR$ RESTORE !VAL \ FREE LLIST RETURN 8 RETURN "TAB \ LLIST RESTORE FREE = OR RETURN \a8p\aSTR$ X COPY OR  \ao> THEN % THEN gSTR$ RESTORE !ATTR \ FREE LLIST RETURN (j CAT OR RESTORE FREE W!ATTR \ FREE RETURN z(u*TAB \r#s+ OR STR$ "TAB \ LLIST #STR$ OR RESTORE x RETURN  !!CODE \ THEN F PI GO SUB B"TAB \*TAB \ LPRINT PI GO SUB B"TAB \ LLIST STR$ !CODE \ THEN F*TAB \(PI GO SUB BA\ePI GO SUB B\ RETURN  #"TAB \ LLIST #>"PEEK >= DATA \:'! THEN ? THEN THEN - THEN ? THEN THEN ,T]!ATTR \ FREE RETURN ( FLASH OR RESTORE FREE VERIFY *TAB \r#s+"TAB \ LLIST #STR$ *TAB \ RETURN PI GO SUB B"TAB \ LLIST #>"PEEK >=\b LLIST #>"PEEK >=\bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    2 DEF FN a()=PEEK 23635+256*PEEK 23636+5
   10 BORDER 6: PAPER 6: INK 0: CLS : CLEAR 45928
   16 POKE 23728,6: POKE 23729,2: POKE 23723,2
   17 RANDOMIZE USR FN a()
   20 REM "   GREETING CARD DESIGNER"
   22 PRINT AT 9,11;"Version 1.1"
   42 PRINT AT 19,7;"ZEBRA SYSTEMS, INC."
   44 PRINT AT 18,7;"COPYRIGHT (C) 1985"
  210 POKE 23728,11: POKE 23729,13: POKE 23723,2
  220 RANDOMIZE USR FN a()
  230 REM "LOADING"
  240 PRINT AT 11,11; FLASH 1; OVER 1;"           "
  250 PRINT AT 12,11; FLASH 1; OVER 1;"           "
  252 OVER 0
  300 LOAD "Cdesign"
    1 REM !VAL \ FREE !CODE \ RETURN ( RETURN ( THEN \'. THEN AND *U\>"PEEK #( IF RESTORE !LEN \N!@ RESTORE !VAL \ FREE NEW o>& THEN % THEN gSTR$ RESTORE !VAL \ FREE LLIST RETURN 8 RETURN "TAB \ LLIST RESTORE FREE = OR RETURN \a8p\aSTR$ X COPY OR  \ao> THEN % THEN gSTR$ RESTORE !ATTR \ FREE LLIST RETURN (j CAT OR RESTORE FREE W!ATTR \ FREE RETURN z(u*TAB \r#s+ OR STR$ "TAB \ LLIST #STR$ OR RESTORE x RETURN  !!CODE \ THEN F PI GO SUB B"TAB \*TAB \ LPRINT PI GO SUB B"TAB \ LLIST STR$ !CODE \ THEN F*TAB \(PI GO SUB BA\ePI GO SUB B\ RETURN  #"TAB \ LLIST #>"PEEK >= DATA \:'! THEN ? THEN THEN - THEN ? THEN THEN ,T]!ATTR \ FREE RETURN ( FLASH OR RESTORE FREE VERIFY *TAB \r#s+"TAB \ LLIST #STR$ *TAB \ RETURN PI GO SUB B"TAB \ LLIST #>"PEEK >=\b LLIST #>"PEEK >=\bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    2 DEF FN a()=PEEK 23635+256*PEEK 23636+5
   12 LOAD "Ccode"CODE 45928,19606
   85 CLS : OVER 0: POKE 23728,0: POKE 23729,0: POKE 23723,2
   86 RANDOMIZE USR FN a()
   87 REM "     GREETING CARD DESIGNER"
  120 PRINT AT 5,8;"1 - Edit Card"
  130 PRINT AT 7,8;"2 - Print Card"
  138 PRINT AT 9,8;"3 - Erase Card"
  140 PRINT AT 11,8;"4 - Save Card"
  150 PRINT AT 13,8;"5 - Load Card"
  152 PRINT AT 15,8;"6 - Select Printer"
  154 PRINT AT 21,5; INVERSE 1;"< press #no to select >"
  160 LET k$=INKEY$
  170 IF k$="1" THEN GO TO 200
  180 IF k$="2" THEN GO TO 1950
  182 IF k$="3" THEN GO SUB 4200: GO TO 85
  183 IF k$="4" THEN GO TO 5000
  185 IF k$="5" THEN GO TO 6000
  187 IF k$="6" THEN GO SUB 2300: GO TO 85
  195 GO TO 160
  200 REM   Create Card  
  202 IF INKEY$>"" THEN GO TO 202
  210 CLS : POKE 23728,2: POKE 23729,1: POKE 23723,2
  220 RANDOMIZE USR FN a()
  230 REM "         EDIT CARD"
  240 PRINT AT 8,10;"1 - Cover"
  250 PRINT AT 10,10;"2 - Inside"
  260 PRINT AT 21,4; INVERSE 1;"< press #no to select >"
  264 LET k$=INKEY$
  266 IF k$=CHR$ 13 THEN GO TO 85
  270 IF k$<>"1" AND k$<>"2" THEN GO TO 264
  280 LET s=VAL k$-1
  285 IF INKEY$>"" THEN GO TO 285
  290 CLS : POKE 23728,2: POKE 23729,0: POKE 23723,2
  292 IF s=1 THEN GO TO 320
  300 RANDOMIZE USR FN a()
  310 REM "         EDIT COVER"
  312 GO TO 340
  320 RANDOMIZE USR FN a()
  330 REM "         EDIT INSIDE"
  340 PRINT AT 7,6;"1 - Edit Text"
  350 PRINT AT 9,6;"2 - Select Border"
  360 PRINT AT 11,6;"3 - Select Graphic"
  370 PRINT AT 13,6;"4 - Edit Graphic Layout"
  375 PRINT AT 15,6;"5 - Main Menu"
  380 PRINT AT 21,4; INVERSE 1;"< press #no to select >"
  390 LET k$=INKEY$
  400 IF k$="1" THEN GO TO 500
  410 IF k$="2" THEN GO TO 516
  420 IF k$="3" THEN GO TO 540
  430 IF k$="4" THEN GO TO 562
  432 IF k$="5" THEN GO TO 442
  440 GO TO 390
  442 IF INKEY$>"" THEN GO TO 442
  444 GO TO 85
  500 REM   Edit Text  
  510 GO SUB 1300
  512 GO TO 285
  515 REM   Select Border  
  516 CLS : IF s=0 THEN LET n=BORDf
  517 IF s=1 THEN LET n=BORDi
  518 IF s=0 THEN PRINT AT 2,6;"SELECT COVER BORDER"
  519 IF s=1 THEN PRINT AT 2,6;"SELECT INSIDE BORDER"
  520 PRINT AT 7,10;"1 - BOX"
  521 PRINT AT 8,10;"2 - SOLID"
  522 PRINT AT 9,10;"3 - BEAD"
  523 PRINT AT 10,10;"4 - KALEIDOSCOPE"
  524 PRINT AT 11,10;"5 - STARS"
  525 PRINT AT 12,10;"6 - TILES"
  526 PRINT AT 13,10;"7 - HEARTS"
  527 PRINT AT 14,10;"8 - FLOWERS";AT 15,10;"9 - NONE"
  528 GO SUB 538
  530 LET k$=INKEY$: IF k$="" THEN GO TO 530
  532 IF k$>="1" AND k$<="9" THEN GO TO 534
  533 GO TO 530
  534 GO SUB 538: LET n=VAL k$-1: GO SUB 538
  535 IF s=0 THEN LET BORDf=n
  536 IF s=1 THEN LET BORDi=n
  537 PAUSE 50: GO TO 285
  538 PRINT AT n+7,10; INVERSE 1; OVER 1;" "; OVER 0; INVERSE 0
  539 RETURN 
  540 REM   Select Graphic  
  542 CLS 
  544 IF s=0 THEN PRINT AT 2,6;"SELECT COVER GRAPHIC"
  545 IF s=1 THEN PRINT AT 2,6;"SELECT INSIDE GRAPHIC"
  546 INPUT "Graphic Name?";k$: IF k$="" THEN GO TO 285
  547 IF k$="none" THEN GO TO 750
  548 PRINT AT 18,0; BRIGHT 1;"Place  Graphics  cassette   intoyour recorder,  cue to start  ofdesired Graphic,  and  play Tape"
  549 LET DerrRet=540: ON ERR GO TO 5800
  550 IF s=0 THEN LOAD k$+".G"CODE 45928,256
  551 IF s=1 THEN LOAD k$+".G"CODE 46184,256
  553 ON ERR RESET : LET ICONf=0: LET ICONi=1: GO TO 285
  554 REM   Select Graphic size 
  555 INPUT "New Graphic Size?(s or l)";k$
  556 IF k$="s" THEN LET n=0
  557 IF k$="l" THEN LET n=1
  558 IF k$<>"s" AND k$<>"l" THEN GO TO 555
  559 IF s=0 THEN LET ISIZEf=n
  560 IF s=1 THEN LET ISIZEi=n
  561 RETURN 
  562 REM   Select Layout  
  563 CLS : IF s=1 THEN LET n=ISIZEi
  564 IF s=0 THEN LET n=ISIZEf
  565 IF n=0 THEN PRINT AT 17,5; BRIGHT 1;"Small graphic selected"
  566 IF n=1 THEN PRINT AT 17,5; BRIGHT 1;"large graphic selected"
  569 GO SUB 554
  570 GO SUB 810
  580 GO TO 285
  760 IF s=0 THEN LET ICONf=12
  770 IF s=1 THEN LET ICONi=12
  780 GO TO 285
  810 REM   Position Editor  
  821 CLS 
  822 POKE 23728,0: POKE 23729,6: POKE 23723,2: RANDOMIZE USR FN a()
  823 REM "GRAPHIC LAYOUT EDITOR"
  824 PRINT AT 15,3;"------- Control Keys -------"
  825 PRINT ,,TAB 6;"p    - select location"
  826 PRINT TAB 6;"o    - deselect location"
  829 PRINT TAB 6;"CS/x - exit editor"
  830 PRINT TAB 6;"^    - Arrow keys to move"
  832 LET ISIZE=ISIZEf
  834 IF s=1 THEN LET ISIZE=ISIZEi
  840 LET wdth=5
  845 LET bl=7: LET bc=13
  847 BRIGHT 1
  860 IF s=0 THEN PRINT AT 4,14;"COVER"
  870 IF s=1 THEN PRINT AT 4,13;"INSIDE"
  872 BRIGHT 0
  880 IF ISIZE=1 THEN LET bl=10: LET bc=15: LET wdth=2
  885 LET i=1
  890 FOR l=bl TO bl+wdth
  900 FOR c=bc TO bc+wdth
  910 IF s=1 AND CODE I$(i)=0 THEN PRINT AT l,c;"\a"
  912 IF s=1 AND CODE I$(i)=1 THEN PRINT AT l,c;"\b"
  914 IF s=0 AND CODE F$(i)=1 THEN PRINT AT l,c;"\b"
  916 IF s=0 AND CODE F$(i)=0 THEN PRINT AT l,c;"\a"
  918 LET i=i+1
  920 NEXT c
  930 NEXT l
  935 OVER 1
  940 LET l=0: LET c=0
  942 REM   Main Loop  
  950 PRINT AT l+bl,c+bc; FLASH 1;" "
  980 LET k=CODE INKEY$
  985 IF k=88 THEN RETURN 
  990 IF k=0 THEN GO TO 950
  995 IF k=111 THEN OVER 0: PRINT AT l+bl,c+bc;"\a": OVER 1: GO SUB 1200
 1000 IF k=112 THEN OVER 0: PRINT AT l+bl,c+bc;"\b": OVER 1: GO SUB 1200
 1010 IF k>=8 AND k<=11 THEN GO SUB 1050
 1030 GO TO 950
 1051 PRINT AT l+bl,c+bc; FLASH 0;" "
 1052 GO SUB ((k-8)*10)+1100
 1054 RETURN 
 1101 LET c=c-1
 1102 IF c<0 THEN LET c=wdth: LET l=l-1
 1104 IF l<0 THEN LET l=wdth
 1106 RETURN 
 1111 LET c=c+1
 1112 IF c=wdth+1 THEN LET c=0: LET l=l+1
 1114 IF l=wdth+1 THEN LET l=0
 1116 RETURN 
 1122 LET l=l+1
 1124 IF l=wdth+1 THEN LET l=0
 1126 RETURN 
 1132 LET l=l-1
 1134 IF l<0 THEN LET l=wdth
 1136 RETURN 
 1230 LET n=(l*(6/(ISIZE+1)))+c
 1240 IF s=0 THEN LET F$(n+1)=CHR$ (k-111)
 1250 IF s=1 THEN LET I$(n+1)=CHR$ (k-111)
 1255 GO SUB 1110
 1256 RETURN 
 1310 REM   Lettering Editor  
 1330 CLS 
 1340 POKE 23728,0: POKE 23729,5: POKE 23723,1
 1345 RANDOMIZE USR FN a()
 1350 REM "TEXT EDITOR"
 1355 BRIGHT 1
 1360 IF s=0 THEN PRINT AT 2,14;"COVER"
 1370 IF s=1 THEN PRINT AT 2,14;"INSIDE"
 1375 BRIGHT 0
 1400 PRINT AT 3,8;"                 "
 1410 PRINT AT 17,8;"                 "
 1415 FOR l=4 TO 16
 1420 PRINT AT l,8;" ";AT l,24;" "
 1421 NEXT l
 1422 LET j=2: LET fm=0: LET fS=0: LET db=1
 1423 PRINT AT 18,0;"--------- Control Keys ---------"
 1424 PRINT "CS/S-toggle size CS/C-clear text"
 1425 PRINT "CS/F-toggle font ENTER-nxt line"
 1426 PRINT "CS/J-toggle Just CS/X-exit "
 1430 REM   Display Cur Text  
 1435 LET l=4: IF s=1 THEN LET db=14
 1440 FOR q=db TO db+12
 1443 LET a=CODE t$(q,17)
 1444 LET a$="LRC"
 1445 PRINT AT l,25;a$(a+1)
 1450 LET a=CODE t$(q,18)
 1452 LET a$="SO"
 1454 PRINT AT l,7;a$(a+1)
 1455 GO SUB 3100
 1459 LET l=l+1
 1460 NEXT q
 1490 OVER 1
 1492 LET l=4: LET c=9
 1499 IF INKEY$<>"" THEN GO TO 1499
 1500 REM   Main Loop  
 1510 PRINT AT l,c; FLASH 1;" "
 1560 LET k=CODE INKEY$
 1562 IF k=0 THEN LET k=1
 1570 GO TO z(k)
 1595 BEEP .005,20
 1596 LET cnt=10: IF INKEY$<>"" AND rs=1 THEN GO TO 1500
 1597 LET cnt=cnt-1: LET rs=1: IF cnt=0 THEN GO TO 1500
 1598 IF INKEY$<>"" THEN GO TO 1597
 1599 LET rs=0: GO TO 1500
 1600 REM   Print Char  
 1610 IF k>64 THEN LET k=k-32
 1620 PRINT AT l,c; OVER 0;CHR$ k; OVER 1
 1630 LET t$(db+l-4,c-8)=CHR$ k
 1632 GO SUB 1685
 1634 GO TO 1595
 1640 INPUT BRIGHT 1;"Clear Text(y or n)?";k$: IF k$<>"y" THEN GO TO 1499
 1641 GO SUB 3000: GO TO 1330
 1642 RETURN 
 1650 REM   Cmove  
 1651 PRINT AT l,c; FLASH 0;" "
 1660 GO SUB ((k-8)*5)+1680
 1670 GO TO 1595
 1682 LET c=c-1
 1683 IF c=8 THEN LET c=9
 1684 RETURN 
 1685 LET c=c+1: IF t$(db+l-4,19)=CHR$ 1 THEN GO TO 1688
 1686 IF c=24 THEN LET c=23
 1687 RETURN 
 1688 IF c=17 THEN LET c=16
 1689 RETURN 
 1690 LET l=l+1: IF l=17 THEN LET l=4: GO TO 1693: REM   Down  
 1691 IF t$(db+l-4,19)=CHR$ 255 THEN LET l=l+1
 1692 IF l>=17 THEN LET l=4
 1693 LET fS=CODE t$(db+l-4,19): LET fm=CODE t$(db+l-4,18): LET j=CODE t$(db+l-4,17)
 1694 RETURN 
 1696 LET l=l-1: IF l=3 THEN LET l=16
 1697 IF t$(db+l-4,19)= CHR$ 255 THEN LET l=l-1
 1698 IF l<=3 THEN LET l=16: GO TO 1697
 1699 LET fS=CODE t$(db+l-4,19): LET fm=CODE t$(db+l-4,18): LET j=CODE t$(db+l-4,17): RETURN 
 1700 REM   Next Ln  
 1701 PRINT AT l,c; FLASH 0;" "
 1704 LET l=l+1: IF l=17 THEN LET l=4: GO TO 1710
 1705 IF t$(db+l-4,19)=CHR$ 255 THEN LET l=l+1
 1706 IF l>=17 THEN LET l=4
 1710 LET fS=CODE t$(db+l-4,19): LET fm=CODE t$(db+l-4,18): LET c=9: LET j=CODE t$(db+l-4,17)
 1730 GO TO 1595
 1740 REM   Delete  
 1741 PRINT AT l,c; FLASH 0;" "
 1742 GO SUB 1680
 1744 PRINT AT l,c; OVER 0;" "; OVER 1
 1746 LET t$(db+l-4,c-8)=" "
 1748 GO TO 1595
 1750 REM   JUST mode step  
 1760 OVER 0
 1762 LET j$="LRC"
 1766 LET j=j+1
 1768 IF j=3 THEN LET j=0
 1770 PRINT AT l,25;j$(j+1)
 1780 LET t$(db+l-4,17)=CHR$ j
 1782 OVER 1
 1784 GO TO 1595
 1790 REM   FONT mode toggle 
 1792 OVER 0
 1794 LET fm=1*(fm=0)
 1795 IF fm=0 THEN LET m$="S"
 1796 IF fm=1 THEN LET m$="O"
 1797 PRINT AT l,7;m$
 1798 LET t$(db+l-4,18)=CHR$ fm
 1799 OVER 1: GO TO 1595
 1863 REM   FONT size tobble 
 1864 OVER 0: IF l=16 THEN GO TO 1500
 1865 IF l=15 THEN GO TO 1867
 1866 OVER 0: IF t$(db+l-2,19)=CHR$ 255 THEN OVER 1: GO TO 1500
 1867 LET fS=1*(fS=0)
 1868 IF fS=0 THEN GO TO 1880
 1870 LET t$(db+l-4,19)=CHR$ 1
 1871 LET t$(db+l-3,19)=CHR$ 255
 1872 LET t$(db+l-4,9 TO 15)="       "
 1873 LET t$(db+l-3,1 TO 15)="               "
 1874 BRIGHT 1: PRINT AT l,17;"       ";AT l+1,9;"               ": BRIGHT 0
 1876 PRINT AT l+1,7;" ";AT l+1,25;" "
 1877 IF c>16 THEN LET c=16
 1878 OVER 1: GO TO 1595
 1880 REM small
 1882 LET t$(db+l-4,19)=CHR$ 0
 1884 LET t$(db+l-3,17 TO )=CHR$ 2+CHR$ 0+CHR$ 0
 1885 PRINT AT l,17;"       ";AT l+1,9;"               "
 1886 PRINT AT l+1,7;"S";AT l+1,25;"C"
 1888 OVER 1: GO TO 1595
 1890 RETURN 
 1900 REM  Lettering Printer 
 1902 FOR n=db TO db+12
 1904 FOR o=15 TO 1 STEP -1
 1906 IF t$(n,o)>" " THEN GO TO 1910
 1908 NEXT o
 1912 FOR m=1 TO o
 1914 POKE 49074+m,CODE t$(n,m)
 1918 NEXT m
 1919 POKE 49074+m,254
 1920 POKE 49035,n-db
 1922 POKE 49036,CODE t$(n,17)
 1923 POKE 49095,CODE t$(n,18)
 1924 POKE 49096,CODE t$(n,19)
 1925 RANDOMIZE USR 50265: REM   STRPRNT
 1926 IF t$(n,19)=CHR$ 1 THEN LET n=n+1
 1930 NEXT n
 1940 RETURN 
 1950 REM     Print Card   
 1960 IF INKEY$>"" THEN GO TO 1960
 1965 CLS 
 1970 POKE 23728,4: POKE 23729,10: POKE 23723,2
 1980 RANDOMIZE USR FN a()
 1990 REM "PRINT CARD"
 2003 PRINT AT 9,3;"< Press ENTER to abort; >";AT 10,3;"< any other to proceed  >"
 2004 PAUSE 4e4: IF INKEY$=CHR$ 13 THEN GO TO 85
 2006 PRINT AT 9,0;"                                                                ": INPUT "How many Copies?";k
 2007 ON ERR GO TO 2212: FOR p=1 TO k
 2008 CLS : PRINT AT 10,5; FLASH 1;" BUILDING CARD IMAGE "
 2010 POKE 49028,BORDf
 2020 POKE 49029,ICONf
 2040 POKE 49030,ISIZEf
 2060 POKE 49033,32
 2070 POKE 49034,56
 2075 IF ISIZEf=1 THEN POKE 49033,64: POKE 49034,112
 2080 FOR n=1 TO 36
 2082 POKE 49038+n,CODE F$(n)
 2084 NEXT n
 2100 IF ICONf<>12 THEN RANDOMIZE USR 50150: REM ICONdep
 2110 IF BORDf<>9 THEN RANDOMIZE USR 50109: REM    BORDER
 2111 LET db=1: GO SUB 1900
 2112 OVER 0: PRINT AT 10,5; FLASH 1;" PRINTING": OVER 1
 2120 RANDOMIZE USR 49706: REM    PRNTtop
 2125 RANDOMIZE USR 49444: REM    CLRwnd
 2127 CLS : PRINT AT 10,5; FLASH 1;" BUILDING CARD IMAGE "
 2130 POKE 49028,BORDi
 2140 POKE 49029,ICONi
 2150 POKE 49030,ISIZEi
 2152 POKE 49033,32
 2154 POKE 49034,56
 2160 IF ISIZEi=1 THEN POKE 49033,64: POKE 49034,112
 2162 FOR n=1 TO 36
 2164 POKE 49038+n,CODE I$(n)
 2166 NEXT n
 2170 IF ICONi<>12 THEN RANDOMIZE USR 50150: REM ICONdep
 2180 IF BORDi<>9 THEN RANDOMIZE USR 50109: REM    BORDER
 2181 LET db=14: GO SUB 1900
 2182 OVER 0: PRINT AT 10,5; FLASH 1;" PRINTING": OVER 1
 2190 RANDOMIZE USR 49535: REM    PRNTbot
 2200 RANDOMIZE USR 49444: REM    CLRwnd
 2202 NEXT p
 2210 ON ERR RESET : GO TO 85
 2212 CLS : ON ERR GO TO 2212: ON ERR RESET : RANDOMIZE USR 49444: GO TO 85
 2229 REM  Load pcntrl Blocks 
 2230 LET a=0
 2231 FOR m=49098 TO 49098+55 STEP 8
 2232 LET daddr=m
 2233 LET a=a+1: LET n=CODE b$(a): IF n=254 THEN GO TO 2236
 2234 IF n=255 THEN RETURN 
 2235 POKE daddr,n: LET daddr=daddr+1: GO TO 2233
 2236 NEXT m
 2239 RETURN 
 2300 REM  Printer Custom 
 2302 LET p1=49646: LET p2=49669: LET p3=49688: LET p4=49701: LET p5=49817: LET p6=49844: LET p7=49863
 2310 CLS 
 2320 PRINT ,,,,,,"     * 80 Column Printer *"
 2322 PRINT "     ---------------------"
 2324 PRINT ,,
 2326 PRINT "      Epson RX/FX ......1"
 2328 PRINT "      Gemini 10x/SG10 ..2"
 2330 PRINT "      Memotech DMX80 ...3"
 2332 PRINT "      Panasonic 1090 ...3"
 2333 PRINT "      Spirit-80 ........3"
 2338 PRINT "      Seikosha GP250 ...4"
 2339 PRINT "      Prowriter 8510 ...5"
 2340 INPUT ,,,,"      Select (1-5) ";k
 2341 PRINT AT 20,9; FLASH 1;" Please Wait "
 2342 IF k<=2 THEN GO SUB 2433
 2346 IF k=3 THEN GO SUB 2433
 2347 IF k=4 THEN GO SUB 2600
 2348 IF k=5 THEN GO SUB 2700
 2349 IF k<1 OR k>5 THEN GO TO 2340
 2350 CLS 
 2352 PRINT ,,,,,,"    * Parallel Interface *"
 2354 PRINT "    ----------------------"
 2356 PRINT ,,
 2358 PRINT "      AERCO ..........1"
 2359 PRINT "      TASMAN-b .......2"
 2360 PRINT "      TASMAN-c .......3"
 2361 PRINT "      A&J ............4"
 2362 INPUT ,,,,"      Select (1 or 4) ";k
 2364 IF k<1 OR k>4 THEN GO TO 2362
 2365 CLS : POKE 49016,k-1: RANDOMIZE USR 50609
 2368 INPUT "Do you want LineFeed codes sent (Y or N)? ";k$
 2370 IF k$<>"Y" AND k$<>"y" AND k$<>"N" AND k$<>"n" THEN GO TO 2368
 2380 IF k$="Y" OR k$="y" THEN POKE 49124,10: LET k=1
 2382 IF k$="N" OR k$="n" THEN POKE 49124,0: LET k=0
 2390 FOR n=49146 TO 49153
 2392 IF k=0 AND PEEK n=10 THEN POKE n,0
 2393 IF k=1 AND PEEK n=0 THEN POKE n,10
 2396 NEXT n
 2397 RETURN 
 2400 REM   Alter code 
 2430 POKE p1,8: POKE p2,8: POKE p3,0: POKE p3+1,0: POKE p4,203: POKE p4+1,19: POKE p5,8: POKE p6,8: POKE p7,0: POKE p7+1,0
 2431 POKE 49097,1: REM set double density
 2432 RETURN 
 2433 REM  Epson  
 2435 LET b$=e$
 2437 GO SUB 2230: REM load block
 2439 GO SUB 2430: REM alter code
 2441 IF k=1 THEN POKE 49132,108: POKE 49140,108
 2443 IF k=3 THEN POKE 49130,5: POKE 49132,68: POKE 49134,0: POKE 49135,9: POKE 49138,5: POKE 49140,68: POKE 49142,0: POKE 49143,9
 2444 RETURN 
 2600 REM  Seik250  
 2610 LET b$=g$
 2620 GO SUB 2230
 2630 POKE p1,8: POKE p2,8: POKE p3,0: POKE p3+1,0: POKE p4,203: POKE p4+1,27: POKE p5,8: POKE p6,8: POKE p7,0: POKE p7+1,0
 2635 POKE 49097,0: REM set single density
 2640 RETURN 
 2700 REM  Prowriter 
 2710 LET b$=p$
 2720 GO SUB 2230
 2730 GO SUB 2430: POKE p4+1,27
 2740 RETURN 
 3000 REM   Clear Text  
 3010 FOR n=db TO db+12
 3020 LET t$(n,1 TO 15)="               "
 3030 LET t$(n,17)=CHR$ 2
 3040 LET t$(n,18)=CHR$ 0
 3050 LET t$(n,19)=CHR$ 0
 3060 NEXT n
 3070 RETURN 
 3100 REM  Display Text  
 3140 PRINT AT l,9;t$(q,1 TO 15)
 3160 IF CODE t$(q,19)<>1 THEN RETURN 
 3170 IF l=16 THEN RETURN 
 3180 BRIGHT 1: PRINT AT l,17;"       ";AT l+1,9;"               ": BRIGHT 0
 3190 PRINT AT l+1,7;" ";AT l+1,25;" "
 3192 LET l=l+1: LET q=q+1
 3194 RETURN 
 4201 CLS 
 4202 POKE 23728,4: POKE 23729,10: POKE 23723,2
 4203 RANDOMIZE USR FN a()
 4204 REM "ERASE CARD"
 4205 PRINT AT 9,3;"< Press ENTER to abort; >";AT 10,3;"< any other to proceed  >"
 4206 PAUSE 4e4: IF INKEY$=CHR$ 13 THEN RETURN 
 4209 CLS : PRINT AT 10,9; FLASH 1;" ERASING CARD "
 4210 LET BORDi=0
 4220 LET BORDf=0
 4230 LET ICONf=0
 4240 LET ICONi=0
 4250 LET ISIZEf=0
 4260 LET ISIZEi=0
 4270 DIM t$(26,19): LET db=1: GO SUB 3000: LET db=14: GO SUB 3000
 4272 DIM F$(36): DIM I$(36)
 4274 FOR n=1 TO 36
 4276 LET F$(n)=CHR$ 0: LET I$(n)=CHR$ 0
 4278 NEXT n
 4279 CLS 
 4280 RETURN 
 5000 REM   Save Card  
 5010 CLS : INPUT "Name for Card to SAVE?";n$
 5012 IF n$="" THEN GO TO 85
 5013 GO SUB 5020: CLS 
 5014 LET DerrRet=5000: ON ERR GO TO 5800
 5015 PRINT AT 18,4; FLASH 1;" SAVEing Card """;n$;""" "
 5016 SAVE n$+".C"CODE 60000,1082
 5017 CLS : PRINT AT 18,0; BRIGHT 1;" Rewind and play to VERIFY ": VERIFY n$+".C"CODE 
 5018 ON ERR RESET : RANDOMIZE USR 49444: GO TO 85
 5020 PRINT AT 18,0; FLASH 1;"      Collecting Card Parts               Please Wait           "
 5030 LET dest=60000
 5040 FOR n=1 TO 26
 5050 FOR m=1 TO 19
 5060 POKE dest,CODE t$(n,m)
 5070 LET dest=dest+1
 5080 NEXT m
 5090 NEXT n
 5100 FOR n=1 TO 36
 5110 POKE dest,CODE F$(n)
 5120 LET dest=dest+1
 5130 NEXT n
 5200 FOR n=1 TO 36
 5210 POKE dest,CODE I$(n)
 5220 LET dest=dest+1
 5230 NEXT n
 5300 POKE dest,BORDf
 5310 POKE dest+1,BORDi
 5320 POKE dest+2,ISIZEf
 5330 POKE dest+3,ISIZEi
 5400 RANDOMIZE USR 48800: REM icons2buf
 5520 RETURN 
 5800 REM  Tape Error 
 5815 PRINT AT 8,10; FLASH 1;" TAPE ERROR "
 5820 PRINT AT 10,3;" press ENTER to try again"
 5821 PAUSE 4e4
 5822 ON ERR GO TO 5822
 5830 ON ERR RESET : GO TO DerrRet
 6000 REM  Load Card 
 6010 CLS : INPUT "Name of Card to LOAD?";n$
 6012 IF n$="" THEN GO TO 85
 6013 LET DerrRet=6000: ON ERR GO TO 5800: PRINT AT 18,0; BRIGHT 1;"Play Tape to LOAD Card """;n$;""" "
 6014 LOAD n$+".C"CODE 60000,1082
 6018 ON ERR RESET 
 6020 PRINT AT 18,0; FLASH 1;"      Restoring Card Parts                Please Wait           "
 6030 LET src=60000
 6040 FOR n=1 TO 26
 6050 FOR m=1 TO 19
 6060 LET t$(n,m)=CHR$ PEEK src
 6070 LET src=src+1
 6080 NEXT m
 6090 NEXT n
 6100 FOR n=1 TO 36
 6110 LET F$(n)=CHR$ PEEK src
 6120 LET src=src+1
 6130 NEXT n
 6200 FOR n=1 TO 36
 6210 LET I$(n)=CHR$ PEEK src
 6220 LET src=src+1
 6230 NEXT n
 6300 LET BORDf=PEEK src
 6310 LET BORDi=PEEK (src+1)
 6320 LET ISIZEf=PEEK (src+2)
 6330 LET ISIZEi=PEEK (src+3)
 6400 RANDOMIZE USR 48812: REM buf2icons
 6432 LET ICONf=0: LET ICONi=1: RANDOMIZE USR 49444: REM CLRwnd
 6440 GO TO 85
 9990 SAVE "Cdesign" LINE 12
 9991 BEEP 1,40
 9992 SAVE "Ccode"CODE 45928,19606
 9999 PRINT AT 0,0;"X";AT 0,0;"C"
    1 REM !VAL \ FREE !CODE \ RETURN ( RETURN ( THEN \'. THEN AND *U\>"PEEK #( IF RESTORE !LEN \N!@ RESTORE !VAL \ FREE NEW o>& THEN % THEN gSTR$ RESTORE !VAL \ FREE LLIST RETURN 8 RETURN "TAB \ LLIST RESTORE FREE = OR RETURN \a8p\aSTR$ X COPY OR  \ao> THEN % THEN gSTR$ RESTORE !ATTR \ FREE LLIST RETURN (j CAT OR RESTORE FREE W!ATTR \ FREE RETURN z(u*TAB \r#s+ OR STR$ "TAB \ LLIST #STR$ OR RESTORE x RETURN  !!CODE \ THEN F PI GO SUB B"TAB \*TAB \ LPRINT PI GO SUB B"TAB \ LLIST STR$ !CODE \ THEN F*TAB \(PI GO SUB BA\ePI GO SUB B\ RETURN  #"TAB \ LLIST #>"PEEK >= DATA \:'! THEN ? THEN THEN - THEN ? THEN THEN ,T]!ATTR \ FREE RETURN ( FLASH OR RESTORE FREE VERIFY *TAB \r#s+"TAB \ LLIST #STR$ *TAB \ RETURN PI GO SUB B"TAB \ LLIST #>"PEEK >=\b LLIST #>"PEEK >=\bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    2 DEF FN a()=PEEK 23635+256*PEEK 23636+5
   10 BORDER 6: PAPER 6: INK 0: CLS : CLEAR 45928
   16 POKE 23728,7: POKE 23729,2: POKE 23723,2
   17 RANDOMIZE USR FN a()
   20 REM "  GRAPHICS DESIGNER UTILITY"
   42 PRINT AT 19,7;"ZEBRA SYSTEMS, INC."
   44 PRINT AT 18,7;"COPYRIGHT (C) 1985"
  210 POKE 23728,13: POKE 23729,13: POKE 23723,2
  220 RANDOMIZE USR FN a()
  230 REM "LOADING"
  240 PRINT AT 13,11; FLASH 1; OVER 1;"           "
  250 PRINT AT 14,11; FLASH 1; OVER 1;"           "
  252 OVER 0
  300 LOAD "Gdesign"
    1 REM !VAL \ FREE !CODE \ RETURN ( RETURN ( THEN \'. THEN AND *U\>"PEEK #( IF RESTORE !LEN \N!@ RESTORE !VAL \ FREE NEW o>& THEN % THEN gSTR$ RESTORE !VAL \ FREE LLIST RETURN 8 RETURN "TAB \ LLIST RESTORE FREE = OR RETURN \a8p\aSTR$ X COPY OR  \ao> THEN % THEN gSTR$ RESTORE !ATTR \ FREE LLIST RETURN (j CAT OR RESTORE FREE W!ATTR \ FREE RETURN z(u*TAB \r#s+ OR STR$ "TAB \ LLIST #STR$ OR RESTORE x RETURN  !!CODE \ THEN F PI GO SUB B"TAB \*TAB \ LPRINT PI GO SUB B"TAB \ LLIST STR$ !CODE \ THEN F*TAB \(PI GO SUB BA\ePI GO SUB B\ RETURN  #"TAB \ LLIST #>"PEEK >= DATA \:'! THEN ? THEN THEN - THEN ? THEN THEN ,T]!ATTR \ FREE RETURN ( FLASH OR RESTORE FREE VERIFY *TAB \r#s+"TAB \ LLIST #STR$ *TAB \ RETURN PI GO SUB B"TAB \ LLIST #>"PEEK >=\b LLIST #>"PEEK >=\bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    2 DEF FN a()=PEEK 23635+256*PEEK 23636+5
   12 LOAD "Gcode"CODE 45128: POKE 23606,72: POKE 23607,175
   20 LET icon=1
 3000 REM   Icon Designer  
 3002 LET q$="Rose"
 3006 LET rtn=3310
 3007 IF INKEY$<>"" THEN GO TO 3007
 3009 CLS : POKE 23723,2: POKE 23728,0: POKE 23729,5
 3010 RANDOMIZE USR FN a()
 3011 REM "GRAPHICS DESIGNER MENU"
 3012 PRINT AT 6,7;"1 - Edit Graphic"
 3013 PRINT AT 8,7;"2 - Load Graphic"
 3014 PRINT AT 10,7;"3 - Save Graphic";AT 17,4;"< press no# to select >"
 3015 LET k$=INKEY$: IF k$="" THEN GO TO 3015
 3016 IF k$="1" THEN GO TO 3022
 3017 IF k$="2" THEN GO TO 4000
 3018 IF k$="3" THEN GO TO 4100
 3020 LET q$=n$
 3021 ON ERR RESET : GO TO 3009
 3022 OVER 0: CLS 
 3050 LET Cflag=0
 3055 GO SUB 3700
 3057 GO TO 3065
 3060 ON ERR RESET : CLS : PRINT AT 10,10; FLASH 1;" TAPE ERROR "; FLASH 0,,,;"    press ENTER to try again": PAUSE 4e4: GO TO 3009
 3100 REM   Main Loop  
 3105 LET LSTx=x: LET LSTy=y
 3115 GO SUB 3620
 3120 LET k=CODE INKEY$
 3125 IF k>=8 AND k<=11 THEN GO TO 3310
 3140 IF CHR$ k="p" THEN GO TO 3240
 3145 IF CHR$ k="o" THEN GO TO 3275
 3150 IF CHR$ k="C" THEN GO TO 3475
 3155 IF CHR$ k="S" THEN GO SUB 3425: GO TO 3065
 3166 IF CHR$ k="X" THEN GO SUB 5000: GO TO 3009
 3167 IF CHR$ k="P" THEN COPY 
 3168 IF k=13 THEN GO SUB 3421
 3170 GO TO 3100
 3240 REM   plot dot  
 3241 BEEP .005,20
 3245 POKE 49002,(x/3)
 3250 POKE 49003,ABS (((y-9)/3)-55)
 3255 RANDOMIZE USR 50683: REM   Dplt
 3260 LET Cflag=0
 3265 LET k=9
 3270 GO TO rtn
 3275 REM   unplot dot  
 3276 BEEP .005,10
 3280 POKE 49002,(x/3)
 3285 POKE 49003,ABS (((y-9)/3)-55)
 3290 RANDOMIZE USR 50631: REM    Dunplt
 3295 LET Cflag=0
 3300 LET k=9
 3305 GO TO rtn
 3310 REM   Cursor Move  
 3315 GO SUB 3635
 3320 GO SUB 3340+((k-8)*20)
 3325 LET Cflag=0
 3330 GO TO 3100
 3340 REM   Cursor Left  
 3342 LET x=x-3
 3345 IF x<0 THEN LET x=94: LET y=y+3
 3350 IF y>174 THEN LET y=9
 3355 RETURN 
 3360 REM   Cursor right  
 3365 LET x=x+3
 3370 IF x>96 THEN LET x=1: LET y=y-3
 3375 IF y<9 THEN LET y=174
 3378 RETURN 
 3380 REM   Cursor Down  
 3390 LET y=y-3
 3395 IF y<9 THEN LET y=174
 3398 RETURN 
 3400 REM   Cursor Up  
 3410 LET y=y+3
 3415 IF y>174 THEN LET y=9
 3420 RETURN 
 3421 REM   Next Line  
 3422 GO SUB 3635: LET X=96
 3423 LET Cflag=0: GO SUB 3360
 3424 RETURN 
 3425 REM   Store Icon  
 3430 GO SUB 3635
 3435 LET num=45928+((icon-1)*256)
 3440 GO SUB 3900
 3442 POKE 49000,lo
 3445 POKE 49001,hi
 3450 RANDOMIZE USR 50862: REM    STRicon
 3455 POKE 49000,232
 3460 POKE 49001,253
 3465 GO SUB 3545
 3466 GO SUB 3520
 3470 RETURN 
 3475 REM   Clear Icon  
 3476 INPUT BRIGHT 1;"Clear graphic(y or n)?";k$
 3477 IF k$<>"y" THEN GO TO 3512
 3480 GO SUB 3635
 3485 LET num=45928+((icon-1)*256)
 3487 GO SUB 3900
 3490 POKE 49000,lo
 3495 POKE 49001,hi
 3500 RANDOMIZE USR 50851: REM   CLRicon
 3505 LET q$="        ": GO SUB 3520
 3510 LET x=1: LET y=174
 3512 GO SUB 3794
 3515 GO TO 3100
 3520 REM   Icon def to scrn  
 3522 PRINT AT 6,23-INT ((LEN q$)/2);q$
 3525 LET num=45928+((icon-1)*256)
 3527 GO SUB 3900
 3530 POKE 49000,lo
 3535 POKE 49001,hi
 3545 RANDOMIZE USR 50595: REM   Idef2Scrn
 3550 LET Cflag=0
 3555 RETURN 
 3620 REM   Invrt Cursor  
 3625 LET Cflag=(Cflag=0)*1
 3630 GO TO 3645
 3635 REM   Cursor off  
 3640 IF Cflag=0 THEN RETURN 
 3645 POKE 49002,x
 3650 POKE 49003,y
 3655 RANDOMIZE USR 50900: REM   INVRTdot
 3660 RETURN 
 3665 REM   Orgn state  
 3670 IF Cflag=0 THEN RETURN 
 3675 POKE 49002,LSTx
 3680 POKE 49003,LSTy
 3685 RANDOMIZE USR 50900: REM   INVRTdot
 3690 LET Cflag=0
 3695 RETURN 
 3700 REM   Grid Draw  
 3705 POKE 23728,1: POKE 23729,15
 3710 RANDOMIZE USR FN a()
 3715 REM "GRAPHIC DESIGNER"
 3725 PLOT 0,175: DRAW 0,-168: DRAW 96,0: DRAW 0,168: DRAW -96,0
 3730 FOR n=0 TO 95 STEP 3
 3735 PLOT n,175: DRAW 0,-168
 3740 NEXT n
 3745 FOR n=175 TO 7 STEP -3
 3750 PLOT 0,n: DRAW 96,0
 3755 NEXT n
 3760 FOR n=8 TO 14
 3765 PRINT AT n,21; BRIGHT 1;"    "; BRIGHT 0
 3770 NEXT n
 3780 GO SUB 3520
 3782 PRINT AT 16,14; INVERSE 1;"   Control Keys   "
 3784 PRINT AT 17,14;"p=Plot  o=Unplot"
 3786 PRINT AT 18,14;"CS/s=Store graphic"
 3788 PRINT AT 19,14;"CS/c=Clear graphic"
 3790 PRINT AT 20,14;"CS/x=Exit"
 3792 PRINT AT 21,14;"CS/p=Copy screen"
 3794 PRINT #0;AT 0,0;"              Arrow keys to move              ENTER=Next line"
 3810 RETURN 
 3900 REM   Convert  
 3910 LET hi=INT (num/256)
 3920 LET lo=num-(hi*256)
 3930 RETURN 
 4000 REM   Load Graphic  
 4010 ON ERR GO TO 3060
 4020 INPUT "Name of Graphic to LOAD?";n$
 4025 IF n$="" THEN GO TO 3020
 4026 PRINT AT 18,0; BRIGHT 1;"Place  Graphics Library tape    into your recorder, Rewind to   the start, and  play Tape."
 4030 LOAD n$+".G"CODE 45928,256
 4040 GO TO 3020
 4100 REM   Save Graphic  
 4110 ON ERR GO TO 3060
 4120 INPUT "Name of Graphic to SAVE?";n$
 4125 IF n$="" THEN GO TO 3020
 4126 PRINT AT 20,0; FLASH 1;" SAVEing graphic""";n$;""""
 4130 SAVE n$+".G"CODE 45928,256
 4140 PRINT AT 20,0; FLASH 1;"   Rewind and play for VERIFY   ": ON ERR GO TO 3060: VERIFY ""CODE 
 4150 GO TO 3020
 5000 REM   Exit to Menu  
 5010 INPUT AT 0,0; BRIGHT 1;"Store  graphic  before  Exiting?(y or n)?";k$
 5030 IF k$<>"y" THEN GO TO 5090
 5040 PRINT AT 4,16; FLASH 1;" AUTO-STORING ": GO SUB 3425
 5090 GO TO 3794
 9900 REM  Save to Tape 
 9910 SAVE "Gdesign" LINE 10: BEEP 1,40
 9920 SAVE "Gcode"CODE 45128,5900
 9998 STOP 
 9999 SAVE "Gdesign" LINE 10: LOAD *"code2tap"
    1 REM !VAL \ FREE !CODE \ RETURN ( RETURN ( THEN \'. THEN AND *U\>"PEEK #( IF RESTORE !LEN \N!@ RESTORE !VAL \ FREE NEW o>& THEN % THEN gSTR$ RESTORE !VAL \ FREE LLIST RETURN 8 RETURN "TAB \ LLIST RESTORE FREE = OR RETURN \a8p\aSTR$ X COPY OR  \ao> THEN % THEN gSTR$ RESTORE !ATTR \ FREE LLIST RETURN (j CAT OR RESTORE FREE W!ATTR \ FREE RETURN z(u*TAB \r#s+ OR STR$ "TAB \ LLIST #STR$ OR RESTORE x RETURN  !!CODE \ THEN F PI GO SUB B"TAB \*TAB \ LPRINT PI GO SUB B"TAB \ LLIST STR$ !CODE \ THEN F*TAB \(PI GO SUB BA\ePI GO SUB B\ RETURN  #"TAB \ LLIST #>"PEEK >= DATA \:'! THEN ? THEN THEN - THEN ? THEN THEN ,T]!ATTR \ FREE RETURN ( FLASH OR RESTORE FREE VERIFY *TAB \r#s+"TAB \ LLIST #STR$ *TAB \ RETURN PI GO SUB B"TAB \ LLIST #>"PEEK >=\b LLIST #>"PEEK >=\bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    2 DEF FN a()=PEEK 23635+256*PEEK 23636+5
   10 BORDER 6: PAPER 6: INK 0: CLS : CLEAR 45928
   16 POKE 23728,6: POKE 23729,1: POKE 23723,3
   17 RANDOMIZE USR FN a()
   20 REM "BANNER DESIGNER"
   42 PRINT AT 13,7;"ZEBRA SYSTEMS, INC."
   44 PRINT AT 12,7;"Copyright (c) 1985"
   46 PRINT AT 20,1; FLASH 1;" NOW LOADING ... please wait "
   50 LOAD "banner.bas"
    1 REM !VAL \ FREE !CODE \ RETURN ( RETURN ( THEN \'. THEN AND *U\>"PEEK #( IF RESTORE !LEN \N!@ RESTORE !VAL \ FREE NEW o>& THEN % THEN gSTR$ RESTORE !VAL \ FREE LLIST RETURN 8 RETURN "TAB \ LLIST RESTORE FREE = OR RETURN \a8p\aSTR$ X COPY OR  \ao> THEN % THEN gSTR$ RESTORE !ATTR \ FREE LLIST RETURN (j CAT OR RESTORE FREE W!ATTR \ FREE RETURN z(u*TAB \r#s+ OR STR$ "TAB \ LLIST #STR$ OR RESTORE x RETURN  !!CODE \ THEN F PI GO SUB B"TAB \*TAB \ LPRINT PI GO SUB B"TAB \ LLIST STR$ !CODE \ THEN F*TAB \(PI GO SUB BA\ePI GO SUB B\ RETURN  #"TAB \ LLIST #>"PEEK >= DATA \:'! THEN ? THEN THEN - THEN ? THEN THEN ,T]!ATTR \ FREE RETURN ( FLASH OR RESTORE FREE VERIFY *TAB \r#s+"TAB \ LLIST #STR$ *TAB \ RETURN PI GO SUB B"TAB \ LLIST #>"PEEK >=\b LLIST #>"PEEK >=\bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    2 DEF FN a()=PEEK 23635+256*PEEK 23636+5
   10 BORDER 6: PAPER 6: INK 0: CLS : CLEAR 45928
   16 POKE 23728,7: POKE 23729,2: POKE 23723,2
   17 RANDOMIZE USR FN a()
   20 REM "  GRAPHICS DESIGNER UTILITY"
   42 PRINT AT 19,7;"ZEBRA SYSTEMS, INC."
   44 PRINT AT 18,7;"COPYRIGHT (C) 1985"
  210 POKE 23728,13: POKE 23729,13: POKE 23723,2
  220 RANDOMIZE USR FN a()
  230 REM "LOADING"
  240 PRINT AT 13,11; FLASH 1; OVER 1;"           "
  250 PRINT AT 14,11; FLASH 1; OVER 1;"           "
  252 OVER 0
  300 LOAD "Gdesign"
  999 SAVE "StartG" LINE 2: LOAD *"Cdesign"
    1 REM !VAL \ FREE !CODE \ RETURN ( RETURN ( THEN \'. THEN AND *U\>"PEEK #( IF RESTORE !LEN \N!@ RESTORE !VAL \ FREE NEW o>& THEN % THEN gSTR$ RESTORE !VAL \ FREE LLIST RETURN 8 RETURN "TAB \ LLIST RESTORE FREE = OR RETURN \a8p\aSTR$ X COPY OR  \ao> THEN % THEN gSTR$ RESTORE !ATTR \ FREE LLIST RETURN (j CAT OR RESTORE FREE W!ATTR \ FREE RETURN z(u*TAB \r#s+ OR STR$ "TAB \ LLIST #STR$ OR RESTORE x RETURN  !!CODE \ THEN F PI GO SUB B"TAB \*TAB \ LPRINT PI GO SUB B"TAB \ LLIST STR$ !CODE \ THEN F*TAB \(PI GO SUB BA\ePI GO SUB B\ RETURN  #"TAB \ LLIST #>"PEEK >= DATA \:'! THEN ? THEN THEN - THEN ? THEN THEN ,T]!ATTR \ FREE RETURN ( FLASH OR RESTORE FREE VERIFY *TAB \r#s+"TAB \ LLIST #STR$ *TAB \ RETURN PI GO SUB B"TAB \ LLIST #>"PEEK >=\b LLIST #>"PEEK >=\bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    2 DEF FN a()=PEEK 23635+256*PEEK 23636+5
   12 LOAD "banner.cod"CODE 45928,8000
   84 REM   Main Menu  
   85 IF INKEY$>"" THEN GO TO 85
   86 CLS : POKE 23728,2: POKE 23729,2: POKE 23723,3
   87 RANDOMIZE USR FN a()
   89 REM "BANNER DESIGNER"
  120 PRINT AT 7,6;"1 - Select Start Graphic"
  130 PRINT AT 9,6;"2 - Enter Banner Text"
  138 PRINT AT 11,6;"3 - Select End Graphic"
  140 PRINT AT 13,6;"4 - Print Banner"
  152 PRINT AT 15,6;"5 - Select Printer"
  154 PRINT AT 21,5; INVERSE 1;"< press #no to select >"
  160 LET k$=INKEY$
  170 IF k$="1" THEN GO TO 540
  180 IF k$="2" THEN GO TO 300
  182 IF k$="3" THEN GO TO 640
  183 IF k$="4" THEN GO TO 400
  185 IF k$="5" THEN GO TO 2300
  195 GO TO 160
  300 REM   Enter Text  
  310 IF INKEY$>"" THEN GO TO 310
  312 CLS : POKE 23728,10: POKE 23729,7: POKE 23723,2
  313 RANDOMIZE USR FN a()
  314 REM "ENTER BANNER TEXT"
  315 POKE 23658,8
  330 INPUT "Banner Text? ";d$
  340 INPUT "Characters Solid or Outline     (S or O)? ";k$
  342 IF k$<>"S" AND k$<>"s" AND k$<>"O" AND k$<>"o" THEN GO TO 340
  343 POKE 23658,0
  344 IF k$="S" OR k$="s" THEN LET Fmode=1
  346 IF k$="O" OR k$="o" THEN LET Fmode=0
  370 GO TO 85
  400 REM   Print Banner  
  410 IF INKEY$>"" THEN GO TO 410
  420 CLS 
  422 POKE 23728,6: POKE 23729,10: POKE 23723,2
  424 RANDOMIZE USR FN a()
  425 REM "PRINT BANNER"
  426 PRINT AT 11,3;"< Press ENTER to abort; >";AT 12,3;"< any other to proceed  >"
  427 PAUSE 4e4: IF INKEY$=CHR$ 13 THEN GO TO 85
  428 CLS : PRINT AT 10,6; FLASH 1;" PRINTING BANNER "
  430 IF icon1=12 THEN GO TO 434
  431 POKE 49010,icon1
  432 RANDOMIZE USR 49003: REM PRNTicon
  434 IF d$="" THEN GO TO 470
  440 POKE 49009,Fmode
  442 LET dest=49121
  444 FOR n=1 TO LEN d$
  446 POKE dest,CODE d$(n)
  448 LET dest=dest+1
  450 NEXT n
  452 POKE dest,255
  454 RANDOMIZE USR 49000: REM PRNTstrg
  470 IF icon2=12 THEN GO TO 474
  471 POKE 49010,icon2
  472 RANDOMIZE USR 49003: REM PRNTicon
  480 GO TO 85
  540 REM  Select Start Graphic  
  541 IF INKEY$>"" THEN GO TO 541
  542 CLS : POKE 23728,10: POKE 23729,7: POKE 23723,2
  543 RANDOMIZE USR FN a()
  544 REM "SELECT START GRAPHIC"
  546 INPUT "Graphic Name?";k$: IF k$="" THEN GO TO 85
  547 IF k$="none" THEN LET icon1=12: GO TO 85
  548 LET icon1=0: PRINT AT 8,0; BRIGHT 1;"Place  Graphics  cassette   intoyour recorder,  cue to start  ofdesired Graphic,  and  play Tape"
  549 LET DerrRet=540: POKE 23728,255: ON ERR GO TO 5800
  550 LOAD k$+".G"CODE 45928,256
  552 REM IF PEEK 23729<>0 THEN GO TO 5800: REM disk error
  553 ON ERR RESET : GO TO 85
  640 REM  Select End Graphic  
  641 IF INKEY$>"" THEN GO TO 641
  642 CLS : POKE 23728,10: POKE 23729,7: POKE 23723,2
  643 RANDOMIZE USR FN a()
  644 REM " SELECT END GRAPHIC"
  646 INPUT "Graphic Name?";k$: IF k$="" THEN GO TO 85
  647 IF k$="none" THEN LET icon2=12: GO TO 85
  648 LET icon2=1: PRINT AT 8,0; BRIGHT 1;"Place  Graphics  cassette   intoyour recorder,  cue to start  ofdesired Graphic,  and  play Tape"
  649 LET DerrRet=540: POKE 23728,255: ON ERR GO TO 5800
  650 LOAD k$+".G"CODE 45928+256,256
  652 REM IF PEEK 23729<>0 THEN GO TO 5800: REM disk error
  653 ON ERR RESET : GO TO 85
 2229 REM  Load pcntrl Blocks 
 2230 LET a=0
 2231 FOR m=49019 TO 49019+39 STEP 8
 2232 LET daddr=m
 2233 LET a=a+1: LET n=CODE x$(a): IF n=254 THEN GO TO 2236
 2234 IF n=255 THEN RETURN 
 2235 POKE daddr,n: LET daddr=daddr+1: GO TO 2233
 2236 NEXT m
 2239 RETURN 
 2300 REM  Printer Custom 
 2310 CLS 
 2320 PRINT ,,,,,,"     * 80 Column Printer *"
 2322 PRINT "     ---------------------"
 2324 PRINT ,,
 2326 PRINT "      Epson RX/FX ......1"
 2328 PRINT "      Gemini 10x/SG10 ..1"
 2330 PRINT "      Memotech DMX80 ...1"
 2332 PRINT "      Panasonic 1090 ...1"
 2333 PRINT "      Spirit-80 ........1"
 2334 PRINT "      Legend 808 .......1"
 2338 PRINT "      Seikosha GP250 ...2"
 2339 PRINT "      Prowriter 8510 ...3"
 2340 INPUT ,,,,"      Select (1-5) ";k
 2341 PRINT AT 20,9; FLASH 1;" Please Wait "
 2342 IF k=1 THEN GO SUB 2433
 2347 IF k=2 THEN GO SUB 2600
 2348 IF k=3 THEN GO SUB 2700
 2349 IF k<1 OR k>3 THEN GO TO 2340
 2350 CLS 
 2352 PRINT ,,,,,,"    * Parallel Interface *"
 2354 PRINT "    ----------------------"
 2356 PRINT ,,
 2358 PRINT "      AERCO ..........1"
 2359 PRINT "      TASMAN-b .......2"
 2360 PRINT "      TASMAN-c .......3"
 2361 PRINT "      A&J ............4"
 2362 INPUT ,,,,"      Select (1 or 4) ";k
 2364 IF k>=1 AND k<=4 THEN POKE 49018,k-1: RANDOMIZE USR 49006: GO TO 85: REM install printer interface
 2368 GO TO 2362
 2433 REM  Epson  
 2435 LET x$=e$
 2437 GO SUB 2230: REM load block
 2444 RETURN 
 2600 REM  Seik250  
 2610 LET x$=g$
 2620 GO SUB 2230: REM load block
 2640 RETURN 
 2700 REM  Prowriter 
 2710 LET x$=p$
 2720 GO SUB 2230: REM load block
 2740 RETURN 
 5800 REM   tape error  
 5815 PRINT AT 8,10; FLASH 1;" TAPE ERROR "
 5820 PRINT AT 10,3;" press ENTER to try again"
 5821 PAUSE 4e4
 5822 ON ERR GO TO 5822
 5830 ON ERR RESET : GO TO DerrRet
 9900 REM ** input Pcntrl Blocks
 9902 FOR n=1 TO 50
 9910 INPUT x
 9911 IF x=255 THEN GO TO 9930
 9912 LET p$(n)=CHR$ x
 9920 NEXT n
 9930 FOR n=n TO 50: LET p$(n)=CHR$ 255: NEXT n
 9999 FOR n=1 TO 50: PRINT n;"  ";CODE p$(n): NEXT n
    1 REM !VAL \ FREE !CODE \ RETURN ( RETURN ( THEN \'. THEN AND *U\>"PEEK #( IF RESTORE !LEN \N!@ RESTORE !VAL \ FREE NEW o>& THEN % THEN gSTR$ RESTORE !VAL \ FREE LLIST RETURN 8 RETURN "TAB \ LLIST RESTORE FREE = OR RETURN \a8p\aSTR$ X COPY OR  \ao> THEN % THEN gSTR$ RESTORE !ATTR \ FREE LLIST RETURN (j CAT OR RESTORE FREE W!ATTR \ FREE RETURN z(u*TAB \r#s+ OR STR$ "TAB \ LLIST #STR$ OR RESTORE x RETURN  !!CODE \ THEN F PI GO SUB B"TAB \*TAB \ LPRINT PI GO SUB B"TAB \ LLIST STR$ !CODE \ THEN F*TAB \(PI GO SUB BA\ePI GO SUB B\ RETURN  #"TAB \ LLIST #>"PEEK >= DATA \:'! THEN ? THEN THEN - THEN ? THEN THEN ,T]!ATTR \ FREE RETURN ( FLASH OR RESTORE FREE VERIFY *TAB \r#s+"TAB \ LLIST #STR$ *TAB \ RETURN PI GO SUB B"TAB \ LLIST #>"PEEK >=\b LLIST #>"PEEK >=\bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    2 DEF FN a()=PEEK 23635+256*PEEK 23636+5
   12 LOAD "Gcode"CODE 45128: POKE 23606,72: POKE 23607,175
   20 LET icon=1
 3000 REM   Icon Designer  
 3002 LET q$="Rose"
 3006 LET rtn=3310
 3007 IF INKEY$<>"" THEN GO TO 3007
 3009 CLS : POKE 23723,2: POKE 23728,0: POKE 23729,5
 3010 RANDOMIZE USR FN a()
 3011 REM "GRAPHICS DESIGNER MENU"
 3012 PRINT AT 6,7;"1 - Edit Graphic"
 3013 PRINT AT 8,7;"2 - Load Graphic"
 3014 PRINT AT 10,7;"3 - Save Graphic";AT 17,4;"< press no# to select >"
 3015 LET k$=INKEY$: IF k$="" THEN GO TO 3015
 3016 IF k$="1" THEN GO TO 3022
 3017 IF k$="2" THEN GO TO 4000
 3018 IF k$="3" THEN GO TO 4100
 3020 LET q$=n$
 3021 ON ERR RESET : GO TO 3009
 3022 OVER 0: CLS 
 3050 LET Cflag=0
 3055 GO SUB 3700
 3057 GO TO 3065
 3060 ON ERR RESET : CLS : PRINT AT 10,10; FLASH 1;" TAPE ERROR "; FLASH 0,,,;"    press ENTER to try again": PAUSE 4e4: GO TO 3009
 3100 REM   Main Loop  
 3105 LET LSTx=x: LET LSTy=y
 3115 GO SUB 3620
 3120 LET k=CODE INKEY$
 3125 IF k>=8 AND k<=11 THEN GO TO 3310
 3140 IF CHR$ k="p" THEN GO TO 3240
 3145 IF CHR$ k="o" THEN GO TO 3275
 3150 IF CHR$ k="C" THEN GO TO 3475
 3155 IF CHR$ k="S" THEN GO SUB 3425: GO TO 3065
 3166 IF CHR$ k="X" THEN GO SUB 5000: GO TO 3009
 3167 IF CHR$ k="P" THEN COPY 
 3168 IF k=13 THEN GO SUB 3421
 3170 GO TO 3100
 3240 REM   plot dot  
 3241 BEEP .005,20
 3245 POKE 49002,(x/3)
 3250 POKE 49003,ABS (((y-9)/3)-55)
 3255 RANDOMIZE USR 50683: REM   Dplt
 3260 LET Cflag=0
 3265 LET k=9
 3270 GO TO rtn
 3275 REM   unplot dot  
 3276 BEEP .005,10
 3280 POKE 49002,(x/3)
 3285 POKE 49003,ABS (((y-9)/3)-55)
 3290 RANDOMIZE USR 50631: REM    Dunplt
 3295 LET Cflag=0
 3300 LET k=9
 3305 GO TO rtn
 3310 REM   Cursor Move  
 3315 GO SUB 3635
 3320 GO SUB 3340+((k-8)*20)
 3325 LET Cflag=0
 3330 GO TO 3100
 3340 REM   Cursor Left  
 3342 LET x=x-3
 3345 IF x<0 THEN LET x=94: LET y=y+3
 3350 IF y>174 THEN LET y=9
 3355 RETURN 
 3360 REM   Cursor right  
 3365 LET x=x+3
 3370 IF x>96 THEN LET x=1: LET y=y-3
 3375 IF y<9 THEN LET y=174
 3378 RETURN 
 3380 REM   Cursor Down  
 3390 LET y=y-3
 3395 IF y<9 THEN LET y=174
 3398 RETURN 
 3400 REM   Cursor Up  
 3410 LET y=y+3
 3415 IF y>174 THEN LET y=9
 3420 RETURN 
 3421 REM   Next Line  
 3422 GO SUB 3635: LET X=96
 3423 LET Cflag=0: GO SUB 3360
 3424 RETURN 
 3425 REM   Store Icon  
 3430 GO SUB 3635
 3435 LET num=45928+((icon-1)*256)
 3440 GO SUB 3900
 3442 POKE 49000,lo
 3445 POKE 49001,hi
 3450 RANDOMIZE USR 50862: REM    STRicon
 3455 POKE 49000,232
 3460 POKE 49001,253
 3465 GO SUB 3545
 3466 GO SUB 3520
 3470 RETURN 
 3475 REM   Clear Icon  
 3476 INPUT BRIGHT 1;"Clear graphic(y or n)?";k$
 3477 IF k$<>"y" THEN GO TO 3512
 3480 GO SUB 3635
 3485 LET num=45928+((icon-1)*256)
 3487 GO SUB 3900
 3490 POKE 49000,lo
 3495 POKE 49001,hi
 3500 RANDOMIZE USR 50851: REM   CLRicon
 3505 LET q$="        ": GO SUB 3520
 3510 LET x=1: LET y=174
 3512 GO SUB 3794
 3515 GO TO 3100
 3520 REM   Icon def to scrn  
 3522 PRINT AT 6,23-INT ((LEN q$)/2);q$
 3525 LET num=45928+((icon-1)*256)
 3527 GO SUB 3900
 3530 POKE 49000,lo
 3535 POKE 49001,hi
 3545 RANDOMIZE USR 50595: REM   Idef2Scrn
 3550 LET Cflag=0
 3555 RETURN 
 3620 REM   Invrt Cursor  
 3625 LET Cflag=(Cflag=0)*1
 3630 GO TO 3645
 3635 REM   Cursor off  
 3640 IF Cflag=0 THEN RETURN 
 3645 POKE 49002,x
 3650 POKE 49003,y
 3655 RANDOMIZE USR 50900: REM   INVRTdot
 3660 RETURN 
 3665 REM   Orgn state  
 3670 IF Cflag=0 THEN RETURN 
 3675 POKE 49002,LSTx
 3680 POKE 49003,LSTy
 3685 RANDOMIZE USR 50900: REM   INVRTdot
 3690 LET Cflag=0
 3695 RETURN 
 3700 REM   Grid Draw  
 3705 POKE 23728,1: POKE 23729,15
 3710 RANDOMIZE USR FN a()
 3715 REM "GRAPHIC DESIGNER"
 3725 PLOT 0,175: DRAW 0,-168: DRAW 96,0: DRAW 0,168: DRAW -96,0
 3730 FOR n=0 TO 95 STEP 3
 3735 PLOT n,175: DRAW 0,-168
 3740 NEXT n
 3745 FOR n=175 TO 7 STEP -3
 3750 PLOT 0,n: DRAW 96,0
 3755 NEXT n
 3760 FOR n=8 TO 14
 3765 PRINT AT n,21; BRIGHT 1;"    "; BRIGHT 0
 3770 NEXT n
 3780 GO SUB 3520
 3782 PRINT AT 16,14; INVERSE 1;"   Control Keys   "
 3784 PRINT AT 17,14;"p=Plot  o=Unplot"
 3786 PRINT AT 18,14;"CS/s=Store graphic"
 3788 PRINT AT 19,14;"CS/c=Clear graphic"
 3790 PRINT AT 20,14;"CS/x=Exit"
 3792 PRINT AT 21,14;"CS/p=Copy screen"
 3794 PRINT #0;AT 0,0;"              Arrow keys to move              ENTER=Next line"
 3810 RETURN 
 3900 REM   Convert  
 3910 LET hi=INT (num/256)
 3920 LET lo=num-(hi*256)
 3930 RETURN 
 4000 REM   Load Graphic  
 4010 ON ERR GO TO 3060
 4020 INPUT "Name of Graphic to LOAD?";n$
 4025 IF n$="" THEN GO TO 3020
 4026 PRINT AT 18,0; BRIGHT 1;"Place  Graphics Library tape    into your recorder, Rewind to   the start, and  play Tape."
 4030 LOAD n$+".G"CODE 45928,256
 4040 GO TO 3020
 4100 REM   Save Graphic  
 4110 ON ERR GO TO 3060
 4120 INPUT "Name of Graphic to SAVE?";n$
 4125 IF n$="" THEN GO TO 3020
 4126 PRINT AT 20,0; FLASH 1;" SAVEing graphic""";n$;""""
 4130 SAVE n$+".G"CODE 45928,256
 4140 PRINT AT 20,0; FLASH 1;"   Rewind and play for VERIFY   ": ON ERR GO TO 3060: VERIFY ""CODE 
 4150 GO TO 3020
 5000 REM   Exit to Menu  
 5010 INPUT AT 0,0; BRIGHT 1;"Store  graphic  before  Exiting?(y or n)?";k$
 5030 IF k$<>"y" THEN GO TO 5090
 5040 PRINT AT 4,16; FLASH 1;" AUTO-STORING ": GO SUB 3425
 5090 GO TO 3794
 9900 REM  Save to Tape 
 9910 SAVE "Gdesign" LINE 10
 9920 SAVE "Gcode"CODE 45128,5900
 9998 STOP 
 9999 SAVE "Gdesign" LINE 10: LOAD *"code2tap"

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

People

No people associated with this content.

Scroll to Top