--- title: "Greeting Card Designer" id: 51856 type: "computer_media" slug: "greeting-card-designer" url: "http://localhost/computer_media/greeting-card-designer/" markdown_url: "http://localhost/computer_media/greeting-card-designer.md" published_at: "2023-08-16T00:35:25+00:00" modified_at: "2026-03-31T09:09:53+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2019/02/20230809-041332.jpg" excerpt: "A full greeting-card studio: design covers and interiors with custom graphics, borders, and text, then print folded cards on five supported printer models." category: - name: "Archived Media" slug: "archived-media" taxonomy: "category" url: "http://localhost/category/archived-media/" post_tag: - name: "Downloadable" slug: "downloadable" taxonomy: "post_tag" url: "http://localhost/tag/downloadable/" - name: "TS 2068" slug: "ts2068" taxonomy: "post_tag" url: "http://localhost/tag/ts2068/" - name: "Zebra Systems" slug: "zebra-systems" taxonomy: "post_tag" url: "http://localhost/tag/zebra-systems/" model: - name: "Timex/Sinclair 2068" slug: "ts-2068" taxonomy: "model" url: "http://localhost/model/ts-2068/" genre: - name: "Home" slug: "home" taxonomy: "genre" url: "http://localhost/type/home/" media_type: "Program" download_url: "https://archive.org/download/timex-sinclair-software-archive/Greeting%20Card%20Designer%20%281985%29%28Zebra%20Systems%29%28US%29%28TS2068%29%28Program%29%28Sides%201%20and%202%29.zip" mediadate: "1985" producer_company: - id: 11469 title: "Zebra Systems, Inc." type: "company" url: "http://localhost/company/zebra-systems/" images: - url: "http://localhost/wp-content/uploads/2023/08/SCR-20260331-fedd.png" - url: "http://localhost/wp-content/uploads/2023/08/SCR-20260331-febt.png" - url: "http://localhost/wp-content/uploads/2023/08/baseball.G.png" - url: "http://localhost/wp-content/uploads/2023/08/bells.G.png" - url: "http://localhost/wp-content/uploads/2023/08/cake.G.png" - url: "http://localhost/wp-content/uploads/2023/08/cat.G.png" - url: "http://localhost/wp-content/uploads/2023/08/cleft.G.png" - url: "http://localhost/wp-content/uploads/2023/08/cupid.G.png" - url: "http://localhost/wp-content/uploads/2023/08/gift.G.png" - url: "http://localhost/wp-content/uploads/2023/08/grad.G.png" - url: "http://localhost/wp-content/uploads/2023/08/heart.G.png" - url: "http://localhost/wp-content/uploads/2023/08/jewstar.G.png" - url: "http://localhost/wp-content/uploads/2023/08/notes.G.png" - url: "http://localhost/wp-content/uploads/2023/08/pumkin.G.png" - url: "http://localhost/wp-content/uploads/2023/08/rose.G.png" - url: "http://localhost/wp-content/uploads/2023/08/sailing.G.png" - url: "http://localhost/wp-content/uploads/2023/08/santa.G.png" - url: "http://localhost/wp-content/uploads/2023/08/skull.G.png" - url: "http://localhost/wp-content/uploads/2023/08/smile.G.png" - url: "http://localhost/wp-content/uploads/2023/08/sunshine.G.png" - url: "http://localhost/wp-content/uploads/2023/08/whale.G.png" - url: "http://localhost/wp-content/uploads/2023/08/wine.G.png" - url: "http://localhost/wp-content/uploads/2023/08/wreath.G.png" - url: "http://localhost/wp-content/uploads/2023/08/xmastree.G.png" related_products: - id: 12777 title: "Greeting Card Designer" type: "product" url: "http://localhost/product/greeting-card-designer/" media_type_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: | 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 `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. ## 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" ```