Translating from BS2 to BS1 coding styles
Buck Rogers
Posts: 2,187
Hello!
I'm in the process of sorting out how to translate one of my BS2 programs who when running displays its thoughts on a Parallax display.
This is the fragment that needs solving:
The whole idea of initializing the variables that the program needs is what is confusing the stamp's tokenizing process.
And this is the full program that came from:
It is the framework for the whole Idea I started up with back a good many years after buying from RS an LCD display that Parallax had designed the daughterboard for it. When running the program passes data out to a connected programmable logic chip, and then displays its response. It works well enough on the BS2 device I have here, but I wanted to translate it to the recently arrived BS1 device.
I'm in the process of sorting out how to translate one of my BS2 programs who when running displays its thoughts on a Parallax display.
This is the fragment that needs solving:
X VAR Word Z VAR Word Z1 VAR Word SEROUT TX,LcdBaud,[LcdBLon] SEROUT TX,LcdBaud,[LcdCls] Z = 16 FOR X=32 TO 127 SEROUT TX,LcdBaud, [X] 'PIN 12 PAUSE 750 SEROUT PL1,LcdBaud,[X] 'PIN 1 PAUSE 375 PULSIN PL2, Z, Z1 'PIN 2 PULSIN PL5, Z, Z1 'PIN 5 SEROUT TX, LcdBaud, [Z1] 'PIN 12 PULSOUT PL3, Z1 'PIN 3 PULSOUT PL4, Z1 'PIN 4 PULSOUT PL0, 7 'PIN 0 SEROUT TX,LcdBaud,[65] PAUSE 100 SEROUT TX,LcdBaud,[66] PAUSE 100 SEROUT TX,LcdBaud,[67] PAUSE 175 SEROUT TX,LcdBaud,[32] ' DEBUG X NEXT SEROUT TX,LcdBaud,[LcdBLoff] SEROUT TX,LcdBaud,[LcdCls] PAUSE 5 ' GOTO Main END
The whole idea of initializing the variables that the program needs is what is confusing the stamp's tokenizing process.
And this is the full program that came from:
' ========================================================================= ' ' File...... Serial_LCD_Template.BS2 ' Purpose... Template for Parallax Serial LCD ' Author.... (c) Parallax, Inc. -- All Rights Reserved ' E-mail.... support@parallax.com ' Started... ' Updated... 11 FEB 2005 ' ' {$STAMP BS2} ' {$PBASIC 2.5} ' ' ========================================================================= ' -----[ Program Description ]--------------------------------------------- ' -----[ Revision History ]------------------------------------------------ ' -----[ I/O Definitions ]------------------------------------------------- TX PIN 15 ' serial output to LCD PL0 PIN 0 PL1 PIN 1 ' To the PAL PL2 PIN 2 ' From the PAL PL3 PIN 3 PL4 PIN 4 PL5 PIN 5 ' -----[ Constants ]------------------------------------------------------- #SELECT $STAMP #CASE BS2, BS2E, BS2PE T2400 CON 396 T9600 CON 84 T19K2 CON 32 #CASE BS2SX, BS2P T2400 CON 1021 T9600 CON 240 T19K2 CON 110 #ENDSELECT LcdBaud CON T2400 LcdBkSpc CON $08 ' move cursor left LcdRt CON $09 ' move cursor right LcdLF CON $0A ' move cursor down 1 line LcdCls CON $0C ' clear LCD (use PAUSE 5 after) LcdCR CON $0D ' move pos 0 of next line LcdBLon CON $11 ' backlight on LcdBLoff CON $12 ' backlight off LcdOff CON $15 ' LCD off LcdOn1 CON $16 ' LCD on; cursor off, blink off LcdOn2 CON $17 ' LCD on; cursor off, blink on LcdOn3 CON $18 ' LCD on; cursor on, blink off LcdOn4 CON $19 ' LCD on; cursor on, blink on LcdLine1 CON $80 ' move to line 1, column 0 LcdLine2 CON $94 ' move to line 2, column 0 LcdCC0 CON $F8 ' define custom char 0 LcdCC1 CON $F9 ' define custom char 1 LcdCC2 CON $FA ' define custom char 2 LcdCC3 CON $FB ' define custom char 3 LcdCC4 CON $FC ' define custom char 4 LcdCC5 CON $FD ' define custom char 5 LcdCC6 CON $FE ' define custom char 6 LcdCC7 CON $FF ' define custom char 7 ' -----[ Variables ]------------------------------------------------------- ' -----[ EEPROM Data ]----------------------------------------------------- ' -----[ Initialization ]-------------------------------------------------- Reset: HIGH TX ' setup serial output pin PAUSE 100 ' allow LCD to initialize HIGH PL1 'PIN 1 ' LOW PL1 LOW PL2 'PIN 2 LOW PL3 'PIN 3 LOW PL4 'PIN 4 LOW PL5 'PIN 5 ' -----[ Program Code ]---------------------------------------------------- Main: ' your code here X VAR Word Z VAR Word Z1 VAR Word SEROUT TX,LcdBaud,[LcdBLon] SEROUT TX,LcdBaud,[LcdCls] Z = 16 FOR X=32 TO 127 SEROUT TX,LcdBaud, [X] 'PIN 12 PAUSE 750 SEROUT PL1,LcdBaud,[X] 'PIN 1 PAUSE 375 PULSIN PL2, Z, Z1 'PIN 2 PULSIN PL5, Z, Z1 'PIN 5 SEROUT TX, LcdBaud, [Z1] 'PIN 12 PULSOUT PL3, Z1 'PIN 3 PULSOUT PL4, Z1 'PIN 4 PULSOUT PL0, 7 'PIN 0 SEROUT TX,LcdBaud,[65] PAUSE 100 SEROUT TX,LcdBaud,[66] PAUSE 100 SEROUT TX,LcdBaud,[67] PAUSE 175 SEROUT TX,LcdBaud,[32] ' DEBUG X NEXT SEROUT TX,LcdBaud,[LcdBLoff] SEROUT TX,LcdBaud,[LcdCls] PAUSE 5 ' GOTO Main END
It is the framework for the whole Idea I started up with back a good many years after buying from RS an LCD display that Parallax had designed the daughterboard for it. When running the program passes data out to a connected programmable logic chip, and then displays its response. It works well enough on the BS2 device I have here, but I wanted to translate it to the recently arrived BS1 device.
Comments
I think the serial constant is correct but the values used in the "PAUSE" commands will need to be changed to compensate for the slower clock on the BS1.
And I'm inclined to agree. I remember your efforts regarding translating a BS2 program that would talk to a TI Calculator, to a BS1 version.
Naturally I tried out both versions. I found that the BS1 version ran faster as applied to the BS2 version.
I changed the flag from "unsolved" to "solved" simply because Duane's translation looks perfect both in here and on the IDE tools.