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:
- StartC — splash screen loader; chains to
Cdesign - Cdesign — main card designer: text editor, border selector, graphic layout editor, print, save, load, erase
- StartG / StartG (duplicate) — splash screen loader; chains to
Gdesign - Gdesign — pixel-level graphic (icon) editor with a 32×56 dot grid
- Banner loader — splash screen; chains to
banner.bas - 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:
| Address | Name | Function |
|---|---|---|
| 49003 | PRNTicon | Print a graphic icon to printer |
| 49006 | (interface install) | Install parallel printer interface |
| 49109 / 50109 | BORDER | Draw decorative border |
| 49150 / 50150 | ICONdep | Deposit icon into card buffer |
| 49265 / 50265 | STRPRNT | Print a formatted text string |
| 49444 | CLRwnd | Clear printer window / buffer |
| 49535 | PRNTbot | Print card bottom (inside) |
| 49706 | PRNTtop | Print card top (cover) |
| 48800 | icons2buf | Copy icons to save buffer |
| 48812 | buf2icons | Restore icons from load buffer |
| 50595 | Idef2Scrn | Render icon definition to screen |
| 50631 | Dunplt | Unplot a dot in graphic editor |
| 50683 | Dplt | Plot a dot in graphic editor |
| 50851 | CLRicon | Clear icon data |
| 50862 | STRicon | Store icon from screen to buffer |
| 50900 | INVRTdot | Invert 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
REMcomment (: REM Down) mid-line after aGO TO, which is syntactically valid but the REM is unreachable; it serves as documentation only. - The
GO TO 3065at 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 RESETimmediately followed by variable assignments and aGO TOon 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
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.























