Banner Designer

Products: Banner Designer
Type: Program
Platform(s): TS 2068
Tags: Banner

Banner Designer is a large-format banner printing utility by Zebra Systems, Inc. (version 1.1, copyright 1985) that drives 80-column dot-matrix printers to produce oversized text and graphic headers. The program loads a companion machine code block (“Bcode”) to address 45928 and calls into it at computed entry points — the DEF FN a() function calculates the machine code’s current execution address by reading the PROG system variable at addresses 23635–23636 and adding an offset of 5. Supported printers include Epson RX/FX, Gemini 10x/SG10, Memotech DMX80, Panasonic 1090, Seikosha GP250, and Prowriter 8510, with parallel interface options for AERCO, Tasman, and A&J adapters; each printer type configures a block of printer control bytes (POKEd into addresses 49019–49058) that govern bitmap output formatting. Cassette-based graphic “icons” (256 bytes each) can be loaded by name as start and end decorations for the banner, with ON ERR handling providing a retry loop on tape read failure.


Program Analysis

Program Structure

The program is organized into clearly delineated functional sections, navigated by a central menu loop:

  1. Initialization (lines 1–17): REM block containing embedded machine code data, DEF FN definition, border/paper setup, CLEAR, and loading of the “Bcode” machine code block.
  2. Title screen (lines 20–44): Splash display showing version, copyright, and publisher name.
  3. Main menu loop (lines 84–195): Polls INKEY$ and dispatches to five sub-functions.
  4. Banner text entry (lines 300–370): Loads “Bdesign” overlay, prompts for text and solid/outline mode.
  5. Banner printing (lines 400–480): Writes banner text into machine code workspace and calls ML routines.
  6. Graphic selection — start/end (lines 540–553, 640–653): Tape-loads 256-byte icon blocks with error recovery.
  7. Printer configuration (lines 2229–2740): Two-stage selection of printer model and parallel interface, with printer control block loading.
  8. Tape error handler (lines 5800–5830): ON ERR retry loop with a stored return address.
  9. Development utility (lines 9900–9999): Manual entry of printer control block data and SAVE routines — not normally reached during operation.

Machine Code Integration

The machine code module “Bcode” is loaded to address 45928 (decimal) and occupies 8000 bytes (extending to approximately 53928). Three named entry points are referenced by comment:

AddressREM labelPurpose
49000PRNTstrgPrint banner text string
49003PRNTiconPrint a graphic icon
49006(install printer interface)Configure parallel interface hardware

All machine code calls use RANDOMIZE USR rather than the more direct USR in an expression, discarding the return value cleanly. The printer control data block occupies addresses 49019–49058 (40 bytes in groups of 8), and additional POKEable parameters exist at 49009 (fill mode), 49010 (icon index), 49018 (interface type), 49021 (linefeed byte), 49571 (indent character), and 49583 (indent icon).

DEF FN Address Calculation

Line 2 defines DEF FN a()=PEEK 23635+256*PEEK 23636+5. Addresses 23635–23636 hold the PROG system variable, which points to the start of the BASIC program in RAM. Adding 5 steps past the two-byte line number, two-byte line length, and REM token at the start of line 1, landing inside the REM statement’s data — which contains the embedded machine code payload stored as BASIC token bytes. Each call to RANDOMIZE USR FN a() thus executes the code in that REM line after an appropriate POKE has configured the desired screen-display routine.

ON ERR Error Handling

The program uses ON ERR for two distinct purposes. During tape loading of icon files (lines 549, 649), ON ERR GO TO 5800 is set before the LOAD and cleared with ON ERR RESET afterward. The error handler at line 5800 displays a flashing “TAPE ERROR” message, then enters a tight PAUSE 4e4 / ON ERR GO TO 5822 loop (line 5822) to catch any further errors during the wait, before finally resetting the error trap and jumping to DerrRet — a variable holding the return destination (line 540 for start graphic, also used for end graphic despite the value not being updated to 640, which is a latent bug).

Printer Control Block Loading (Lines 2229–2239)

The subroutine at line 2230 reads a string variable (x$, set to e$, g$, or p$ depending on the selected printer) and writes its bytes into consecutive 8-byte blocks starting at address 49019. The encoding uses byte value 254 as an “advance to next block” sentinel and 255 as an end-of-data terminator. This allows variable-length printer command sequences to be packed into a fixed block structure in machine code memory.

Banner Text Transfer

Lines 442–452 manually copy the banner text string d$ character by character into machine code workspace at address 49121, using CODE d$(n) to extract each character’s code and POKE dest,n to write it. A 255 byte is appended as a string terminator before calling the PRNTstrg routine, mirroring a C-style null-terminated string in the ML layer.

Notable Techniques

  • The POKE 23658,8 at line 315 sets the FLAGS2 system variable bit to suppress the lower screen, providing a cleaner INPUT prompt appearance; it is restored to 0 at line 343.
  • The CLEAR 45928 at line 10 both clears variables and sets RAMTOP, protecting the machine code area from BASIC’s variable heap.
  • The PAUSE 4e4 idiom (approximately 27 minutes) is used as an indefinite pause pending a keypress, a common technique when PAUSE 0 behavior differs across ROM versions.
  • Lines 210–252 define a “loading” animation routine that is branched to by label but never actually called from the menu dispatch — it appears to be vestigial code or a display sequence invoked by the machine code itself.
  • The menu prompt at line 154 uses INVERSE 1 to highlight the instruction, a simple but effective UI touch.
  • Line 2349 checks k<1 OR k>3 after already executing GO SUBs for valid values, meaning invalid entries loop back correctly but the range check is slightly misaligned with the prompt text (“Select 1-5”), which lists more than three options sharing the same selection code of 1.

Bugs and Anomalies

  • At line 649 (Select End Graphic), LET DerrRet=540 incorrectly sets the tape error return address to 540 (Select Start Graphic) instead of 640 (Select End Graphic). A tape error while loading an end graphic will thus restart the start graphic selection instead.
  • The printer menu at line 2340 prompts “Select (1-5)” but only handles values 1, 2, and 3; values 4 and 5 pass through all three IF tests and the range check (k<1 OR k>3) catches them, looping back — so the menu text is misleading.
  • Variables e$, g$, and p$ (holding printer control block data for Epson, Seikosha, and Prowriter respectively) are referenced but never assigned within the visible BASIC listing, implying they are loaded from the “Bdesign” overlay tape file at line 300.
  • Line 474 is the target of GO TO 474 (line 470) but does not exist in the listing, which is a valid BASIC technique — execution falls through to the next available line (480), skipping the icon print call cleanly.

Content

Appears On

Related Products

Create banners that include graphics and text. Includes graphic icons and a program to edit them.

Related Articles

Related Content

Image Gallery

Banner Designer

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
   12 LOAD "Bcode"CODE 45928,8000
   16 POKE 23728,5: POKE 23729,1: POKE 23723,3
   17 RANDOMIZE USR FN a()
   20 REM "BANNER DESIGNER"
   22 PRINT AT 8,11;"Version 1.1"
   42 PRINT AT 19,7;"ZEBRA SYSTEMS, INC."
   44 PRINT AT 18,7;"COPYRIGHT (C) 1985"
   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
  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 "Bdesign"
  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 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 LOAD k$+".G"CODE 45928,256
  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 18,0; BRIGHT 1;"Place  Graphics  cassette   intoyour recorder,  cue to start  ofdesired Graphic,  and  play Tape"
  649 LET DerrRet=540: ON ERR GO TO 5800
  650 LOAD k$+".G"CODE 45928+256,256
  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
 2363 IF k<1 OR k>4 THEN GO TO 2362
 2364 CLS : POKE 49018,k-1: RANDOMIZE USR 49006: REM install printer interface
 2365 INPUT "Do you want LineFeed codes sent (Y or N)? ";k$
 2366 IF k$<>"Y" AND k$<>"y" AND k$<>"N" AND k$<>"n" THEN GO TO 2365
 2367 IF k$="N" OR k$="n" THEN POKE 49021,0
 2368 IF k$="Y" OR k$="y" THEN POKE 49021,10
 2369 GO TO 85
 2433 REM  Epson  
 2435 LET x$=e$
 2437 GO SUB 2230: REM load block
 2440 POKE 49571,10: REM set INDNTchr
 2441 POKE 49583,2: REM set INDNTicn
 2444 RETURN 
 2600 REM  Seik250  
 2610 LET x$=g$
 2620 GO SUB 2230: REM load block
 2640 GO TO 2440
 2700 REM  Prowriter 
 2710 LET x$=p$
 2720 GO SUB 2230: REM load block
 2730 POKE 49571,20: REM set INDNTchr
 2731 POKE 49583,14: REM set INDNTicn
 2740 RETURN 
 5800 REM   tape error  
 5815 PRINT AT 14,10; FLASH 1;" TAPE ERROR "
 5820 PRINT AT 16,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 SAVE "Bdesign" LINE 12: BEEP 1,40: SAVE "Bcode"CODE 45928,8000
    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
   12 LOAD "Bcode"CODE 45928,8000
   16 POKE 23728,5: POKE 23729,1: POKE 23723,3
   17 RANDOMIZE USR FN a()
   20 REM "BANNER DESIGNER"
   22 PRINT AT 8,11;"Version 1.1"
   42 PRINT AT 19,7;"ZEBRA SYSTEMS, INC."
   44 PRINT AT 18,7;"COPYRIGHT (C) 1985"
   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
  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 "Bdesign"
  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 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 LOAD k$+".G"CODE 45928,256
  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 18,0; BRIGHT 1;"Place  Graphics  cassette   intoyour recorder,  cue to start  ofdesired Graphic,  and  play Tape"
  649 LET DerrRet=540: ON ERR GO TO 5800
  650 LOAD k$+".G"CODE 45928+256,256
  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
 2363 IF k<1 OR k>4 THEN GO TO 2362
 2364 CLS : POKE 49018,k-1: RANDOMIZE USR 49006: REM install printer interface
 2365 INPUT "Do you want LineFeed codes sent (Y or N)? ";k$
 2366 IF k$<>"Y" AND k$<>"y" AND k$<>"N" AND k$<>"n" THEN GO TO 2365
 2367 IF k$="N" OR k$="n" THEN POKE 49021,0
 2368 IF k$="Y" OR k$="y" THEN POKE 49021,10
 2369 GO TO 85
 2433 REM  Epson  
 2435 LET x$=e$
 2437 GO SUB 2230: REM load block
 2440 POKE 49571,10: REM set INDNTchr
 2441 POKE 49583,2: REM set INDNTicn
 2444 RETURN 
 2600 REM  Seik250  
 2610 LET x$=g$
 2620 GO SUB 2230: REM load block
 2640 GO TO 2440
 2700 REM  Prowriter 
 2710 LET x$=p$
 2720 GO SUB 2230: REM load block
 2730 POKE 49571,20: REM set INDNTchr
 2731 POKE 49583,14: REM set INDNTicn
 2740 RETURN 
 5800 REM   tape error  
 5815 PRINT AT 14,10; FLASH 1;" TAPE ERROR "
 5820 PRINT AT 16,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 SAVE "Bdesign" LINE 12: BEEP 1,40: SAVE "Bcode"CODE 45928,8000

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

People

No people associated with this content.

Scroll to Top