Good one Paul.
Completely different way, and saved 18 words.
And you're right. The multiplication uses a lot of code space.
So I thought I'd remove it from my last version too and see what happened.
268 wordsCode:<font color="#000000"><b>CMCON </b>= <font color="#800000"><b>7 </b></font><font color="#0000FF"><b><i>' Disable Comparators </i></b></font><font color="#008000"><b>DEFINE </b></font><b>DEBUG_BAUD </b><font color="#800000"><b>2400 </b></font><font color="#0000FF"><b><i>'Debug baud rate </i></b></font><font color="#008000"><b>DEFINE </b></font><b>DEBUGIN_REG PORTB </b><font color="#0000FF"><b><i>'Debugin pin port </i></b></font><font color="#008000"><b>DEFINE </b></font><b>DEBUGIN_BIT </b><font color="#800000"><b>0 </b></font><font color="#0000FF"><b><i>'Debugin pin bit </i></b></font><font color="#008000"><b>DEFINE </b></font><b>DEBUGIN_MODE </b><font color="#800000"><b>1 </b></font><font color="#0000FF"><b><i>'Debugin mode: 0 = True, 1 = Inverted </i></b></font><b>Uin </b><font color="#008000"><b>VAR BYTE </b></font><b>B0 </b><font color="#008000"><b>VAR BYTE </b></font><b>BarCount </b><font color="#008000"><b>VAR BYTE </b></font><b>BarValue </b><font color="#008000"><b>VAR WORD </b></font><b>MsgAddr </b><font color="#008000"><b>VAR WORD </b></font><b>Carry </b><font color="#008000"><b>VAR </b></font><b>STATUS</b>.<font color="#800000"><b>0 </b></font><font color="#0000FF"><b><i>; Hardware carry flag </i></b></font><font color="#008000"><b>GOTO </b></font><b>Main </b><font color="#0000FF"><b><i>; Jump over data ;============================================================================= </i></b></font><b>BarSteps</b>: <b>POKECODE </b><font color="#800000"><b>22</b></font>,<font color="#800000"><b>33</b></font>,<font color="#800000"><b>41</b></font>,<font color="#800000"><b>51</b></font>,<font color="#800000"><b>62</b></font>,<font color="#800000"><b>72</b></font>,<font color="#800000"><b>91</b></font>,<font color="#800000"><b>111</b></font>,<font color="#800000"><b>130</b></font>,<font color="#800000"><b>151</b></font>,<font color="#800000"><b>169</b></font>,<font color="#800000"><b>180</b></font>,<font color="#800000"><b>190</b></font>,<font color="#800000"><b>200</b></font>,<font color="#800000"><b>209</b></font>,<font color="#800000"><b>219 </b></font><b>_BarSteps </b><font color="#008000"><b>CON </b></font><b>EXT </b><font color="#0000FF"><b><i>; create a PBP constant that points to the Table </i></b></font><b>TooLow</b>: <b>POKECODE </b><font color="#800000"><b>$FE</b></font>,<font color="#800000"><b>1</b></font>,<font color="#FF0000">"TOO LOW "</font>,<font color="#800000"><b>0 </b></font><b>_TooLow </b><font color="#008000"><b>CON </b></font><b>EXT </b><font color="#0000FF"><b><i>; PBP constant pointing to the "Too Low " string </i></b></font><b>TooRich</b>: <b>POKECODE </b><font color="#800000"><b>$FE</b></font>,<font color="#800000"><b>$C0</b></font>,<font color="#FF0000">"TOO RICH"</font>,<font color="#800000"><b>0 </b></font><b>_TooRich </b><font color="#008000"><b>CON </b></font><b>EXT </b><font color="#0000FF"><b><i>; PBP constant pointing to the "Too Rich" string </i></b></font><b>FlashSize </b><font color="#008000"><b>CON </b></font><b>EXT </b><font color="#008000"><b>ASM </b></font><font color="#000080">ifdef BSR FlashSize = 2 </font><font color="#0000FF"><b><i>; 18F has byte addressing (2) </i></b></font><font color="#000080">else FlashSize = 1 </font><font color="#0000FF"><b><i>; 12F/16F has words (1) </i></b></font><font color="#000080">endif </font><font color="#008000"><b>ENDASM </b></font><b>MidChar </b><font color="#008000"><b>CON </b></font><b>EXT </b><font color="#0000FF"><b><i>; MidChar is the border between </i></b></font><font color="#000080">@MidChar = 8 * FlashSize </font><font color="#0000FF"><b><i>; 8 char segments of the 1x16 LCD being used </i></b></font><b>CountLength </b><font color="#008000"><b>CON </b></font><b>EXT </b><font color="#000080">@CountLength = 15 * FlashSize </font><font color="#0000FF"><b><i>;============================================================================= </i></b></font><b>Main</b>: <font color="#008000"><b>DEBUGIN </b></font>[<b>Uin</b>] <font color="#0000FF"><b><i>; Serial Input </i></b></font><font color="#008000"><b>LCDOUT </b></font><font color="#800000"><b>$FE</b></font>, <font color="#800000"><b>2 </b></font><font color="#0000FF"><b><i>; LCD Home Cursor </i></b></font><font color="#008000"><b>FOR </b></font><b>BarCount </b>= <font color="#800000"><b>0 </b></font><font color="#008000"><b>TO </b></font><b>CountLength </b><font color="#008000"><b>STEP </b></font><b>FlashSize </b><font color="#008000"><b>IF </b></font>(<b>BarCount </b>= <b>MidChar</b>) <font color="#008000"><b>THEN LCDOUT </b></font><font color="#800000"><b>$FE</b></font>,<font color="#800000"><b>$C0 </b></font><font color="#0000FF"><b><i>; Second half of 1x8 LCD </i></b></font><b>PEEKCODE </b>(<b>_BarSteps</b>+<b>BarCount</b>),<b>BarValue </b><font color="#0000FF"><b><i>; Get BarValue from Table </i></b></font><b>R0</b>.<b>LowByte </b>= <b>Uin </b>- <b>BarValue </b><font color="#008000"><b>IF </b></font><b>Carry </b><font color="#008000"><b>THEN </b></font><font color="#0000FF"><b><i>; Uin > BarValue </i></b></font><font color="#008000"><b>LCDOUT </b></font><font color="#800000"><b>255 </b></font><font color="#0000FF"><b><i>; show a Full char </i></b></font><font color="#008000"><b>ELSE </b></font><font color="#0000FF"><b><i>; Uin <= BarValue </i></b></font><font color="#008000"><b>LCDOUT </b></font><font color="#FF0000">" " </font><font color="#0000FF"><b><i>; show a blank </i></b></font><font color="#008000"><b>ENDIF NEXT </b></font><b>BarCount R0</b>.<b>LowByte </b>= <b>Uin </b>- <font color="#800000"><b>22 </b></font><font color="#0000FF"><b><i>; if Uin < 22 </i></b></font><font color="#008000"><b>IF </b></font>!<b>Carry </b><font color="#008000"><b>THEN </b></font><b>MsgAddr </b>= <b>_TooLow </b>: <font color="#008000"><b>GOSUB </b></font><b>ShowMsg R0</b>.<b>LowByte </b>= <b>Uin </b>+ <font color="#800000"><b>29 </b></font><font color="#0000FF"><b><i>; if Uin > 227 </i></b></font><font color="#008000"><b>IF </b></font><b>Carry </b><font color="#008000"><b>THEN </b></font><b>MsgAddr </b>= <b>_TooRich </b>: <font color="#008000"><b>GOSUB </b></font><b>ShowMsg </b><font color="#008000"><b>GOTO </b></font><b>Main </b><font color="#0000FF"><b><i>;============================================================================= </i></b></font><b>ShowMsg</b>: <b>PEEKCODE MsgAddr</b>, <b>B0 </b><font color="#008000"><b>IF </b></font><b>B0 </b>= <font color="#800000"><b>0 </b></font><font color="#008000"><b>THEN RETURN LCDOUT </b></font><b>B0 MsgAddr </b>= <b>MsgAddr </b>+ <b>FlashSize </b><font color="#008000"><b>GOTO </b></font><b>ShowMsg </b><font color="#008000"><b>RETURN </b></font>






Bookmarks