; Defaults: 1200,8,N,1 ; ; Lynx Scoreboard Script ; ; Copyright (c) 1995-2004 Lynx System Developers, Inc. ; ; Written by Kirk Sigel ; ; script for MicroTabLED, 1 line, 96x16 pixel/LEDs ; by Hannes Mayr, Microgate Srl, 09/25/2012 ; modified script by MichianaTiming.com for the MicroTab 96x16 ; this version takes a modified version of the results from uTabScrolling.lss ; and that is pasted into modified version of uTabMicro.lss for start lists ; results now scroll full last names ; lanes or place numbers are set right so that they don't jump when a double digit happens ; and the names are now left aligned as short names were off the screen originally ; ; Notes: ; + Empty lines and lines that start with a semicolon are ignored. ; + Lines that start with two semicolons indicate a section header. ; They must be one of the following: ; ;;Initialization ; ;;TimeRunning ; ;;TimeStopped ; ;;TimeGun ; ;;TimeBreak ; ;;TimeUpdate ; ;;Wind ; ;;TimeOfDay ; ;;ResultsHeader ; ;;ResultsTrailer ; ;;Result ; ;;MessageHeader ; ;;MessageTrailer ; ;;Message ; Sections may be omitted, appear in any order, and occur more than once. ; + Format lines must begin with a value indicating which variable ; they want to access. The special code \00 indicates that no variable ; is being requested. If a variable is requested it will be inserted where ; a '%s' printf style format specifier appears. There can only be one '%s' ; specifier in lines requesting a variable and no other printf format ; specifiers may appear. Remember, lines requesting a variable are used as ; a printf format string and therefore must behave as such. Lines not ; requesting variables (code \00) can do whatever they want as these ; lines are not fed to a printf statement. ; + Arbitrary 8 bit values are entered as \hh where h is a lowercase hex ; digit. Note that h must be lowercase. ; + Format lines can have the following commands embedded in them. ; Note that only 10 registers (indexed 0-9) are currently implemented. ; \U\hh Set the 'U' value to hh. It is reset after the next command. ; \Ui\hh Set the 'U' value to register[hh]. ; \X\hh Set the 'X' value to hh. It is reset after the next command. ; \Xi\hh Set the 'X' value to register[hh]. ; \=\hh register[hh] = {register[U]|X|1} (assign) ; \*\hh register[hh] = register[hh] * {register[U]|X|1} (multiply) ; \/\hh register[hh] = register[hh] / {register[U]|X|1} (divide) ; \#\hh register[hh] = register[hh] # {register[U]|X|1} (modulus) ; \+\hh register[hh] = register[hh] + {register[U]|X|1} (add) ; \-\hh register[hh] = register[hh] - {register[U]|X|1} (subtract) ; \<\hh register[hh] = register[hh] << {register[U]|X|1} (shift left) ; \>\hh register[hh] = register[hh] >> {register[U]|X|1} (shift right) ; \&\hh register[hh] = register[hh] & {register[U]|X|1} (bit and) ; \|\hh register[hh] = register[hh] | {register[U]|X|1} (bit or) ; \^\hh register[hh] = register[hh] ^ {register[U]|X|1} (bit xor) ; \~\hh register[hh] = ~register[hh] (bit invert) ; \F\hh register[hh] = The result of running Function {U|0} on the ; next {X|} characters. ; \U\00 IDS checksum. ; \U\01 XOR checksum. register[hh] is used as the seed value. ; \U\02 ADD checksum. register[hh] is used as the seed value. ; \O\hh Output register[hh] as an {X|1} byte value using method {U|0}. ; \U\00 Binary little-endian (Intel byte order). ; \U\01 Binary big-endian (Motorola byte order). ; \U\02 ASCII text right justified space padded. ; \U\03 ASCII text right justified zero padded. ; \U\04 ASCII text left justified space padded. ; \U\05 ASCII text left justified zero padded. ; \S\hh Scan the next {X|1} bytes into register[hh] using method {U|0}. ; \U\00 ASCII text base 10. ; \U\01 Binary little-endian (Intel byte order). ; \U\02 Binary big-endian (Motorola byte order). ; \P\hh Run Procedure hh on the next {X|} characters. ; \P\00 Reverse characters. ; \P\01 Convert characters to Colorado Time format. Register[1] ; is the current character position on entry and the ; next character position on exit. ; \P\02 Convert characters to Daktronics AllSport format. ; \B\hh Delete {register[U]|hh} (to beginning of line if zero) characters ; before the cursor or until the string contains X characters. ; \D\hh Delete {register[U]|hh} (to end of line if zero) characters ; at the cursor or until the string contains X characters. ; \I\hh Insert {register[U]|hh} spaces at the cursor or until the string ; contains X characters. ; \Ic\hh Insert {register[U]|hh} {X's|spaces} at the cursor. ; \L\hh Move the cursor {register[U]|hh} positions to the left (to the ; beginning of the line if zero). ; \R\hh Move the cursor {register[U]|hh} positions to the right (to the ; end of the line if zero). ; Note that numbers 0 thru 9 can be entered directly for single character ; embedded commands. For example, '\U\04' is the same as '\U4' and ; '\=\01' is the same as '\=1'. ; + Be very careful about whitespace in each format line. Characters other ; than '%s' specifiers and embedded commands and values will be sent ; exactly as they appear on the line. This means, for instance, that using ; tabs to make a line 'look right' in you favorite editor will cause ; tabs to be sent to the scoreboard instead of the equivalent number of ; spaces (probably not what you wanted). ; ; The format lines follow. ;;Initialization ; This is sent once to initialize the scoreboard. ; Line codes: ; \00 No variable ; ; send a reset \00\X0\=2\1b r\03\L0\U2\F2\R0\X\7f\&2\U0\O2 ;;TimeRunning ; This is sent approximately 10 times per second. ; Line codes: ; \00 No variable ; \01 Formatted time ; \02 Binary time in milliseconds (as a 4 byte little endian integer) ; Setting register[0] to 1 in a format line will cause that line and ; subsequent lines to only be sent once per second (when the second's ; digit changes) instead of approximately 10 times per second. Setting ; register[0] to 0 will resume normal operation for remaining lines. ; ; clear all \00\=0\X0\=2\1b@Q\00\00\00\00\80\00\60\00\10\00\03\L0\U2\F2\R0\X\7f\&2\U0\O2 ; display "hh:mm:ss ", right aligned \01\=0\X0\=2\1b@S\60\00\00\00\00\82%01.12s\B4 \R0\03\L0\U2\F2\R0\X\7f\&2\U0\O2 ;;TimeStopped ; This is sent when the time is stopped by a beam break. ; Line codes are identical to the TimeRunning line codes. ; ; clear all \00\=0\X0\=2\1b@Q\00\00\00\00\80\00\60\00\10\00\03\L0\U2\F2\R0\X\7f\&2\U0\O2 ; display "hh:mm:ss.dc", right aligned \01\=0\X0\=2\1b@S\60\00\00\00\00\82%01.12s\B1\R0\03\L0\U2\F2\R0\X\7f\&2\U0\O2 ;;TimeGun ; This is sent when a gun signal is received. ; Line codes are identical to the TimeRunning line codes. ;;TimeBreak ; This is sent when a beam break is recieved. ; Line codes are identical to the TimeRunning line codes. ;;TimeUpdate ; This is sent approximately 10 times per second. ; Line codes are identical to the TimeRunning line codes. ;;Wind ; This is sent in the time stream when a wind reading is received. ; Line codes: ; \00 No variable ; \01 Formatted wind (same format as ResultsHeader wind) ; \02 Binary wind in hundredths of units (as a 4 byte little endian integer) ;;TimeOfDay ; This is sent when the 'Send time of day' option is checked in the ; Scoreboard pull down menu. ; Line codes are identical to the TimeRunning line codes. ; ; clear all \00\=0\X0\=2\1b@Q\00\00\00\00\80\00\60\00\10\00\03\L0\U2\F2\R0\X\7f\&2\U0\O2 ; display "hh:mm:ss", centered \01\=0\X0\=2\1b@S\30\00\00\00\00\42%01.12s\B4\R0\03\L0\U2\F2\R0\X\7f\&2\U0\O2 ;;ResultsHeader ; This is sent once each time the scoreboard is updated with results. It ; is sent before any result lines are sent. ; Line codes: ; \00 No variable ; \01 OFFICIAL/UNOFFICIAL string ; \02 Event name ; \03 Wind ; \04 Event number ; \05 Round number ; \06 Heat number ; \07 AUTO/MANUAL start type ; \08 Number of participants \00\X0\=2\1b r\03\L0\U2\F2\R0\X\7f\&2\U0\O2 ;;ResultsTrailer ; This is sent once each time the scoreboard is updated with results. It ; is sent after all result lines are sent. ; Line codes are identical to the ResultsHeader line codes. ; ;;StartList[1] ; This is sent once for each result line displayed on the scoreboard. ; Line codes: ; \00 No variable ; \01 Place ; \02 Lane ; \03 Id ; \04 Name ; \05 Affiliation ; \06 Time ; \07 Delta Time ; \08 Cumulative Split Time ; \09 Last Split Time ; \0a Laps To Go ; \0b License ; \0c ReacTime ; \0d Speed ; \0e Pace ; Register[0] is initialized with the index of the current result line and ; will range from 0 through PageSize - 1. ; ; Scrolling string: Lane and Name ; \00\=0\X0\=2\1b@S\00\00\00\00\00\02\L0\U2\F2\R0 \02%2.2s.\L0\U2\F2\R0 \04%-8.8s\L0\U2\F2\R0 \00\03\L0\U2\F2\R0\X\7f\&2\U0\O2 ;StartList[2] ; This is sent once for each result line displayed on the scoreboard. ; Line codes: ; \00 No variable ; \01 Place ; \02 Lane ; \03 Id ; \04 Name ; \05 Affiliation ; \06 Time ; \07 Delta Time ; \08 Cumulative Split Time ; \09 Last Split Time ; \0a Laps To Go ; \0b License ; \0c ReacTime ; \0d Speed ; \0e Pace ; Register[0] is initialized with the index of the current result line and ; will range from 0 through PageSize - 1. ; ; Horizontal Page 2 - Affiliation ; To activate this page - Add semi-colon to Section Header and remove semi-colon from line below ;\05%9.9s\I9\R0\L0\U2\F2\R0 ;;Result[1] ; This is sent once for each result line displayed on the scoreboard. ; Line codes: ; \00 No variable ; \01 Place ; \02 Lane ; \03 Id ; \04 Name ; \05 Affiliation ; \06 Time ; \07 Delta Time ; \08 Cumulative Split Time ; \09 Last Split Time ; \0a Laps To Go ; \0b License ; \0c ReacTime ; \0d Speed ; \0e Pace ; Register[0] is initialized with the index of the current result line and ; will range from 0 through PageSize - 1. ; ; Place, Time and Name (scrolling) in small font ;\00\=0\X0\=2\1b@Q\00\00\00\00\80\00\60\00\10\00\03\L0\U2\F2\R0\X\7f\&2\U0\O2 ;place is next line \01\=0\X0\=2\1b@S\00\00\00\00\00\02%2.2s\03\L0\U2\F2\R0\X\7f\&2\U0\O2 ;time is next line \06\=0\X0\=2\1b@S\60\00\00\00\00\81%1.12s\B1\03\L0\U2\F2\R0\X\7f\&2\U0\O2 line ;\04\=0\X0\=2\1b@O\20\00\08\00\00\01\40\00\05\00%s \03\L0\U2\F2\R0\X\7f\&2\U0\O2 ;the \20 changed to 18 is the pixels from left ;the \08 is pixels from top ;the \01 is font apparently? ;following line is results name \04\=0\X0\=2\1b@S\18\00\08\00\00\01%1.15s\03\L0\U2\F2\R0\X\7f\&2\U0\O2 ;comments on above line the \01%15.15s if changed to 02 is huge font double height ;if I change that to \81%-15.15s it scrolls ... but goes away ;the number after 1b@S is pixels from left. ;two spots to left of that is pixels from top ;next line is affiliation ;\05\=0\X0\=2\1b@O\18\00\04\00\00\01\12\00\10\00\00%s \03\L0\U2\F2\R0\X\7f\&2\U0\O2 ;;MessageHeader ; This is sent once each time the scoreboard is updated with the message. It ; is sent before any message lines are sent. ; Line codes: ; \00 No variable ; ; clear all \00\=0\X0\=2\1b@Q\00\00\00\00\80\00\60\00\10\00\03\L0\U2\F2\R0\X\7f\&2\U0\O2 ;;MessageTrailer ; This is sent once each time the scoreboard is updated with the message. It ; is sent after all message lines are sent. ; Line codes are identical to the MessageHeader line codes. ; ; ;;Message ; This is sent once for each message line displayed on the scoreboard. ; Line codes: ; \00 No variable ; \01 Text ; Register[0] is initialized with the index of the current message line and ; will range from 0 through - 1. \01\=0\X0\=2\1b@S\00\00\00\00\00\02%s\03\L0\U2\F2\R0\X\7f\&2\U0\O2