Future Pro-Lite Protocol Request

The Pro-Lite sign is a very powerful display mechanism that would be highly useful to owners of personal computers.

I proposed the following minor additions (which should be backwards compatable) to the Pro-Lite protocol to make it useful for developers to perform advanced and reliable functions.

This is a copy of a request I sent to Pro-Lite. To date, I have heard virtually no response from them about it.



                                 Developer's Guide to the

                                      Highly Desired,
                                       But Not Coded

                              PRO-LITE TRU-COLOR II PL-2014R
                                  ROM 7.0  Version 1.03

                                Designed by Walt Stoneburner


PURPOSE

  This guide contains two pieces of information:
  
    1. a re-worked user interface

    2. detailed information about an enhanced protocol that I believe
       Pro-Lite shuld adopt for their signs to make them accessible
       to computer programmers

  The protocol is small, simple, and provides the computer user extra
  control over the sign than is normally possible with the remote.  This
  allows a computer to produce dynamic content on the sign.

  Whenever possible, the protocol presented here adopts the format of the
  5.24Q rom, and extensions from the 6.05 rom.  These will be notated in
  parenthesis.

  Information in this document is provided for the purpose of communicating
  developer needs, so that a Pro-Lite sign can expand into multiple markets,
  particularly the technical one.


TARGET AUDIENCE

  Keep in mind that the remote users don't have to have every detailed
  function available.  Most likely if they aren't using a computer, they
  don't need all the power of the sign to display dynamic messages.

  Users that are familiar with a computer are going to be familiar
  with more techincal aspects and so the protocol doesn't have to
  be human readable, just like the graphic definition isn't.

  Let the techno-weenies have control over the sign to write applications
  that can make use of the sign's extra features.  This in turn generates
  an additional market for the sign.



PROGRAMMING WITH THE REMOTE  (new)

  The majority common features may be accessed by the sign's remote.

  Advanced features for prividing dynamic messages are only available 
  using a computer.

  The remote consists of 44 buttons (4 across, 11 down); each button
  may perform more than one particular task.


              Power        Trivia       Menu         Esc
               __           __           __           __
              [__]         [__]         [__]         [__]     


              Color        Font         Graphic     Effect
               __           __           __           __
              [__]         [__]         [__]         [__]     


              Shift       Num/Sym      AltChar       Enter
               __           __           __           __
              [__]         [__]         [__]         [__]     


              <---         --->        F1/Up         F2/Down
               __           __           __           __
              [__]         [__]         [__]         [__]     


              A 1 !        B 2 ;        C 3 :        D  $
               __           __           __           __
              [__]         [__]         [__]         [__]     


              E 4 '        F 5 `        G 6 "        H  £
               __           __           __           __
              [__]         [__]         [__]         [__]     


              I 7 &        J 8 \        K 9 %        L  ¥
               __           __           __           __
              [__]         [__]         [__]         [__]     


              M * ?        N 0 [        O # ]        P  @
               __           __           __           __
              [__]         [__]         [__]         [__]     


              Q ~ +        R _ -        S | /        T  =
               __           __           __           __
              [__]         [__]         [__]         [__]     


              U { (        V } )        W  <         X  >
               __           __           __           __
              [__]         [__]         [__]         [__]     


              Y ^ .        Z  ,         Space        Del 
               __           __           __           __
              [__]         [__]         [__]         [__]    
              
              
This is not a complicated layout to maintain; you just have a table for
each shift state possible.




BUTTON EXPLAINATIONS

  The keypad is divded into two sections: the top controls functions,
  the bottom keys are for entering text.


  Power   This button turns on and off the display, it does not control power
  (5.24Q) to the sign.  When the display is off, the sign will not respond to
          any other buttons on the remote.  The sign if left off for five
          minutes will go into sleep mode where it conserve power.


  Menu    This button will bring up a menu for programming the sign.  The 
  (new)   first menu presented will be:

                                  Pag   Tim   Gfx

          Pressing Menu again will present the following menu:

                                  Ver   Rst   Set

          Menu will toggle between these two menus, pressing Esc will exit 
          the menus.

          NOTE that despite what menu is being shown, the letters P, T, G,  
          V, R, and S will always work as short cuts!

              P: Edit a page


   <--    While editing, this button moves to the left.

   Up     While editing, this button moves to the start of the message.

   -->    While editing, this button moves to the right.

   Down   While editing, this button moves to the end of the message.


  Shift   Goes into alpha mode, toggling between upper and lower case
          (The orange column)

Num/Sym   Toggles between numeric and symbols (the white and green columns)

AltChar   Cycles letters through their European equivalents (6.05)
          Other assorted letters will toggle through symbols (new)

  Color   Presents Color Options

  Font    Presents Font Options

Graphic   Presents Graphic Options

 Effect   Presents Effect Options  

 Trivia   Toggle Trivia




COMPUTER PROTOCOL DETAILS 

  With this simple data structure, it is possible to perform all
  the advanced page operations:


  Master Sequence Buffer                             SIZE = 0 .. 32

  |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|
   1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3
                     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 
   ^
   `-Current Page Index Being Displayed


  Effectively, the sign holds a list of 0 to 32 pages that it is sequencing
  through.  Size 0 = go blank

  A run page command is nothing more than a special case of one page in the
  sequence.

  When a timer becomes active, it simply copies it's seqence into the
  master sequence list.




STATUS CODES (6.05)

  Each sign has an ID number, from 01 to FF in hex.  This allows the computer
  to uniquely address 255 indiviual signs.

  Anytime a sign is individually address, the sign responds with it's ID
  number and a status (for instance, sign 01):

    <ID01>S      Success
    <ID01>E      Error                 (error condition)
    <ID01>F      Memory Full           (error condition)

  If signs are addressed with the set-time command or as ID00, the request is
  honored by all signs -- however none of them will respond with an 
  acknowledgement.

  If status messages came across in numeric form, they'd be easier to test,
  and there would be more expansion room in the future.

    <ID01>E01    Protcol Error
    <ID01>E02    Memory Full
    ...



MONITOR (new)

  As an extension to the status codes, it is possible to observe when a
  message starts to display.  This can be used to prevent from overwriting
  a message that is currently scrolling on the display.


  To turn on monitoring:

  <ID01><M+>

  Whenever a page starts to display, the sign will echo the page letter
  followed by a carriage-return line-feed sequence.

  Monitoring stops the moment the sign receives a character from the
  computer.

  Note: This command would not work for the <ID00> sequence, since you
        don't want a bunch of status messages coming from different
        signs.

  This mechanism can be used to control when a message should be updated
  in a sequence by the computer.



DUMP (new)

  This is useful for diagnostics and storing the state of the sign.

  The following command dumps all the pages and timers in the sign:

  <ID01><DMP>

  For example, this sequence could return:
    <ID01><PA>Good Morning
    <ID01><PB>Good Afternoon
    <ID01><PX>Mumble Froz
    <ID01><TA>*0000AX
    <ID01><TD>*1200BX
    <ID01>S

  What is important is that the sign send you the input that you'd need to
  restore the sign's state.



WAKE UP (5.24Q)

  A header with no command is treated as a success and is used to wake up
  an inactive sign.

  <ID01>

  The reply will be  <ID01>S



SETTING THE CLOCK  (5.24Q)

  This command sets the clock for all signs on the network:

  <TYYMMDDWhhmmss>



TURNING THE SIGN ON OR OFF  (new - low priority)

  The sign never really turns off.  The only way to cut power to the sign
  is to unplug it -- note this will lose the current time, and pluging back
  in the sign does a soft reset (your pages are not lost).

  <ID01><OFF>

    Stops the sign from shifting text, and blanks the display.

  <ID01><ON>

    The display shows the current message, and shifting resumes.




VERSION INFORMATION  (new - high priority)

  Software developers may want to know exactly which sign is connected
  to the system, so they know what codes to send:

  <ID01><V>

  The sign will respond with:
  <ID01>PL-M2014R ROM 5.24Q MEM 32K/14202 COM 9600

  The developer can detect that <ID01>P was returned and continue
  reading input from the sign until the next end of line.

  The information presented is:

    <ID01>PL-M2014R:ROM 5.24Q:MEM 32K/14202:COM 9600
          ^             ^          ^    ^       ^
          `---Model     |   Sign --'    |       `-- Highest
              Number   ROM  Capacity  Bytes         Baudrate
                     Version          In Use        Allowed



RESETTING THE SIGN  (5.24Q)

  To delete all pages, clear all timers, and reset all graphics, use:

  <ID01><D*>



SETTING A PAGE  (5.24Q)

  A page may be entered into the sign like so:

  <ID01><Px>text content goes here


  If no <Px> command is specified, then page A is assumed by default.


  NOTE:  A page may contain special functions.  Please see the end of
         this section for details.
 
         If no text is provided, the page remains unchanged.

         This IMMEDIATELY updates the page content.  If the sign is
         currently displaying the page, the new page content will
         be shown.





RUNNING A PAGE EXPLICTLY  (5.24Q + new)

  A page may be explictly run:

  <ID01><RPx>

  When a page is run, it stops a timer sequence from running, effectively
  putting it on hold.  

  In this case 'x' can a series of 0 to 32 page letters.  These immediately
  get loaded into the master sequence buffer.  (new)

  <ID01><RP*> will resume the prior sequence.  Only one sequence may be
  buffered.



RUN DEFERRED SEQUENCE  (new)
  
  A deferred sequence acts just like <RPx>, except that it does not load
  the master sequence buffer with the new sequence until the end of the
  current page being displayed has finished, thus preventing a message
  from getting interrupted in the process of displaying.

  <ID01><DSx>

  In this case 'x' can a series of 0 to 32 page letters.  These immediately
  get loaded into the master sequence buffer.  

  This mechanism can be used for creating smooth transitions between
  messages.



TIMERS  (5.24Q + new)

  The sign can handle up to ten concurrent timers.  These are checked once
  a minute.

    <ID01><Tn>WHHMMppp

      W   = Weekday  0=Sun, 1=Mon, 6=Sat, *=Everyday, X=Never
      HH  = Hour     00=midnight, 01=1:AM, 12=noon, 23=11:PM, **=Everyhour
      MM  = Minute   00-59, **=Everyminute
      ppp = a sequence of 0 to 32 pages.  (0=show blank screen)

  The sign starts at timer A and works its way to timer J.  Undefined timers
  are ignored.

  The first matching timer found starts the sign playing it's sequence.
  If no timers are found to match, then the sign's display is not changed.

  This means timer ***** will always match, and therefore it should be LAST
  in a sequence.  (00000 means Sunday at midnight)

  An 'X' for the weekday means the timer will never match.  This is useful
  for storing a sequence to play later.

  NOTE:  When the first timer is defined, it should NOT copy it's sequence
         into the master buffer seequence for immediate display.  Only when
         the timer triggers should the display start.


  Example 1 (Matching timers):

    <ID01><TA>*16**A       
    <ID01><TB>***30B

    At thirty minutes past the hour, show page B, except during the hour
    of 4:PM when page A should be displayed all the time.


  Example 2 (Matching timers):

    <ID01><TB>***30A
    <ID01><TA>*16**B       

    At thirty minutes past the hour show page A.  Page B will be displayed
    from 4:PM-4:29PM.

  Example 3 (Holding a sequence):
    
    <ID01><TC>XXXXXCDE

    Timer C will never trigger.  Ever.  However, the user may explictly run
    timer C with the run-timer command



TIMER ACTIVE BITS (new - low priority)

  Specific timers may be enabled or disabled:

  <ID01><Tx->    Disable timer 'x'
  <ID01><Tx+>    Enable timer 'x', if defined

  This allows a bunch of timers to be defined and then controlled after
  the fact without reloading.


RUNNING A TIMER  (new - high priority)

  After timers, or more specifically timer sequences, have been defined,
  it is possible to play them despite the fact that it may not be the
  right moment to show timer.

  <ID01><RTx>



RESUME SEQUENCE  (5.24Q)

  If <RPx> stops a timer or a sequence, use:

  <ID01><RP*>

  to resume the sequence.

  If no sequence or timer was showing, then <RP*> has no effect and
  returns success.


STREAMING TEXT  (new)

  Sends a continuous stream of text to the sign for immediate display.

  <ID01><STM>

  The moment this code is accepted (after the cr/lf), the sign will take
  ALL input to the RS232 port and display it as it comes in on the
  display.

  If a character is not available (and say the sign is in SHIFT <- mode),
  then the sign stops shifting until the next character arrives.

  When the sign's buffer is 80% full, the sign will send a Control-S to
  ask the computer to stop sending.  When the sign's buffer reaches
  20% (and it has blocked the computer with a control-s), it will request
  a resuming of transmission with a Control-Q.

  To get out of this mode, an ESCAPE (0x1B) character is sent.  The sign
  is then ready to receive <ID01> commands again.


DELETING A PAGE  (5.24Q + new)

  To delete a page:

  <ID01><DPx>

  Note that if you delete a page that is run explictly, then the built in demo
  page will display, such as:

    <ID01><DPA>
    <ID01><RPA>

  However, if you delete a page that a timer sequence is showing, then the page
  is skipped as if it wasn't part of the series:

    <ID01><PA>Page A
    <ID01><PB>Page B
    <ID01><PC>Page C
    <ID01><DPB>
    <ID01><TA>*****ABC

  This will show page A, skip over page B, and then page C.  If no pages exist, the
  sign will display blank content.  (new)





INTERSPERSED MESSAGES "TRIVIA MODE"  (5.24Q)

  This will load the sign with text messages to be displayed interspered with the
  playing sequence of messages.

  <ID01><Q+>
  <ID01>line of text
  ...repeat as many as desired...
  <ID01>line of text
  <ID01><Q->

  Messages may contain functions, colors, alternate characters, etc. just like any
  other page.

  There do not have to be an even number of lines.

  Text presented may use up to half of the sign's 32K.

  Having no lines of text is the same as turning Trivia Off and reclaims the unused 
  portion of the full 32K for programming messages.




GRAPHIC BLOCKS (5.24Q)

  There are 26 (A - Z) user alterable graphic blocks available, the basic 
  format is as follow:

  <ID01><Gn>...CCC...cr lf 

  This is unchanged from the 5.24Q roms.




STREAMING GRAPHICS (new - low priority)
  
  The LEDs may be controled individually and scrolled as well by computer control.
  This allows you to create your own fonts and pictures.


  Inserting columns on the left:
  <ID01><LCL>xxxxxxx 

  Inserting columns on the right:
  <ID01><LCR>xxxxxxx 

  For column replacement mode entry:

  <ID01><LCn>xxxxxxx ...

    n = starting column, 0 - 79

    xxxxxxx = A group of seven color codes from top to bottom that will go 
              in column 'n'.  Additional groups can be added for each subsequent column.
                   

  Inserting a row from the top (pushing down):
  <ID01><LRU>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

  Inserting a row from the bottom (pushing up):
  <ID01><LRD>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  

  For row mode entry:

  <ID01><LRn>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

    n = starting column, 0 - 6

    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx = 
      A group of eighty color codes from left to rightthat will go 
      in row 'n'.  Additional groups can be added for each subsequent row.

                   
    A = Dim Red                   U = Black (unlit)
    B = Red                       X = Don't change
    C = Bright Red
    D = Orange
    E = Bright Orange
    F = Light Yellow
    G = Yellow
    H = Bright Yellow
    I = Lime
    J = Dim Lime
    K = Bright Lime
    L = Bright Green
    M = Green
    N = Dim Green


   Scrolling can be done:
   <ID01><LUx>     Scroll up 'x' lines
   <ID01><LDx>     Scroll down 'x' lines
   <ID01><LLx>     Scroll left 'x' columns
   <ID01><LRx>     Scroll right 'x' columns





PAGE CHAINING CODES
<GA> Immediatly run page A
<GB> Immediatly run page B
<GC> Immediatly run page C
<GD> Immediatly run page D
<GE> Immediatly run page E
<GF> Immediatly run page F
<GG> Immediatly run page G
<GH> Immediatly run page H
<GI> Immediatly run page I
<GJ> Immediatly run page J
<GK> Immediatly run page K
<GL> Immediatly run page L
<GM> Immediatly run page M
<GN> Immediatly run page N
<GO> Immediatly run page O
<GP> Immediatly run page P
<GQ> Immediatly run page Q
<GR> Immediatly run page R
<GS> Immediatly run page S
<GT> Immediatly run page T
<GU> Immediatly run page U
<GV> Immediatly run page V
<GW> Immediatly run page W
<GX> Immediatly run page X
<GY> Immediatly run page Y
<GZ> Immediatly run page Z

  This allows a message to be constructed as:

    <ID01><PA>Hello<GC>
    <ID01><PB>World<GA>
    <ID01><PC>There<GB>
    <ID01><RPA>

  and it will display as  "HelloThereWorld"  repeatedly.



SPECIAL EFFECTS CODES

<FA> AUTO             <Fa>                  <F0>                  
<FB> OPEN             <Fb>                  <F1>                  
<FC> COVER            <Fc>                  <F2>                  
<FD> APPEAR           <Fd> DATE ONLY        <F3>                  
<FE> CYCLING          <Fe> DAY              <F4>                  
<FF> CLOSE <--        <Ff> MONTH            <F5>                  
<FG> CLOSE -->        <Fg> YEAR             <F6>                  
<FH> CLOSE            <Fh>                  <F7>                  
<FI> SCROLL UP        <Fi>                  <F8>                  
<FJ> SCROLL DOWN      <Fj>                  <F9>                  
<FK> OVERLAP          <Fk>                                        
<FL> STACKING         <Fl>                                        
<FM> COMIC 1          <Fm>                                        
<FN> COMIC 2          <Fn>                                        
<FO> BEEP             <Fo>                                        
<FP> PAUSE            <Fp>                                        
<FQ> SLEEP            <Fq>                                        
<FR> RANDOM           <Fr>                                        
<FS> SHIFT <--        <Fs>                                        
<FT> TIME/DATE        <Ft> TIME ONLY                              
<FU> MAGIC            <Fu> HOUR                                   
<FV> THANK YOU        <Fv> MINUTE                                 
<FW> WELCOME          <Fw> SECOND                                 
<FX> SPEED 1          <Fx> TARGET                                 
<FY> SPEED 2          <Fy> COUNT                                  
<FZ> SPEED 3          <Fz>                                        



CHARACTER FONT SIZE CODE TABLE

Code      Bold   Italic    Flashing

<SA>       No     No        No
<SB>       Yes    No        No
<SC>       No     Yes       No
<SD>       Yes    Yes       No
<SE>       No     No        Yes
<SF>       Yes    No        Yes
<SG>       No     Yes       Yes
<SH>       Yes    Yes       Yes


COLOR TABLE

<CA> Dim Red
<CB> Red
<CC> Bright Red
<CD> Orange
<CE> Bright Orange
<CF> Light Yellow
<CG> Yellow
<CH> Bright Yellow
<CI> Lime
<CJ> Dim Lime
<CK> Bright Lime
<CL> Bright Green
<CM> Green
<CN> Dim Green
<CO> Yellow/Green/Red
<CP> Rainbow (Default)
<CQ> Red/Green 3D
<CR> Red/Yellow 3D
<CS> Green/Red 3D
<CT> Green/Yellow 3D
<CU> Green on Red
<CV> Red on Green
<CW> Orange on Green 3D
<CX> Lime on Red 3D
<CY> Green on Red 3D
<CZ> Red on Green 3D


GRAPHICS

<BA> Telephone
<BB> Glasses
<BC> Tap
<BD> Rocket
<BE> Monster
<BF> Key
<BG> Shirt
<BH> Helicopter
<BI> Car
<BJ> Tank
<BK> House
<BL> Teapot
<BM> Knife & Fork
<BN> Duck
<BO> Motorcycle
<BP> Bicycle
<BQ> Crown
<BR> Sweet Heart
<BS> Arrow Right
<BT> Arrow Left
<BU> Arrow Down-Left
<BV> Arrow Up-Left
<BW> Mug of Beer
<BX> Chair
<BY> High-heeled Shoes
<BZ> Wine Glass


EUROPEAN CHARACTERS

The characters shown page 26 of the 5.24Q manual should be
exactly as shown and all codes shown should work.

This page last updated