Although I thoroughly enjoyed putting the MarkIII together, programming was a nuisance. I again looked around & didn't find anything that looked good to me. The compilers as a rule were either very slow, very limited, or both. For some reason, I never did try JAL however. They say the best way to truly understand an architecture is to write in assembly. I'd challenge that with the best way to truly understand an architecture is build a compiler for it, so that's what I did. PICbsc is the result. I might even use the PICbsc core to write a C compiler, I've not decided yet.


These were the original goals:
  • be fully backward compatible with CH-Basic
    Not all of the CH-Basic commands are implemented since I only implemented those that I use. Here are the major groups that have been implemented:
    • ADC
    • PWM
    • Port I/O
    • USART
    • Timer
  • print out useful errors (not, ``error in line'')
  • create fast, compact code
  • create a HEX file ready to load into the Mark III
  • written in 100% ANSI C
  • run under Linux and MSDOS
  • be fast
In these goals I think I've succeeded. There is definite room for improvement, but that's true of any software.


Getting it

I've separated the package out as follows: It is important to read differences.txt or chances are your code will not run!


Why did I chose to implement CH-Basic? A few reasons:
  • example code exists
  • it's reasonably well defined
  • it could be very easy to use if implemented correctly
  • if my children decide they want to program my MarkIII, BASIC is a good beginner language

Contact me