Northern Software Programmer in action!




This is a great story of 'getting a programming microcontroller from Northern Software (Buy), add the components (Make) and use the software ( Use).


Buy: William Roth (Bill) one of the senior developers of Great Cow BASIC recently ordered several  5v Northern Software programming microcontrollers.  The whole project cost less then $10 USD.


Make: The project was simple, taking less than an hour. You need some skills to assemble and solder the components. 


Use:  Bill put a Northern Software programmer microcontroller  on a bread board and connected it up as per the diagrams on the Northern Software  website and connected it to a PIC18F25K42.  Installed and started the NSPROG application, selected the hex source file to program the PIC18F25K42 with, and hit the "Program" button.   Wow!! His words.

Instead of taking the usual 20 seconds to program a PIC using a PicKit3 programmer using MPLAB IPE,  programming was completed in less than 0.3 seconds.   That is more than 50 times faster and he no longer has time to refill his coffee, (or plant a new garden...) while waiting for the PIC to be programmed.

There are software options to programmer a PIC microcontroller with Northern Software - the user interface software and a command line utility.  The command line utility can be used with Great Cow BASIC so that one click PIC programming (Hex/Flash) can be used from the Great Cow BASIC IDE . 

For a more details on using the Northern Software programmer  with Great Cow BASIC please see  the forum at this link



Microchip Development Boards




This quick review of the 8-bit boards available from Microchip. 

This includes Curiosity, Xpress, PICDEM and others.  This is not intended to be comprehensive or a complete review of every board product - we collated this information for a discussion with Microchip and we thought this may be useful to see the information all in once place.


Bill Roth, Chris Roper and Evan Venn authored and edited this information.



Part #








Curiosity LPC Development Board

These two boards (#1 and #2) will support development and testing of MikroBUS drivers on many of the current generation 8, 14, 20, 28 and 40 Pin PIC devices.  


These are suitable for beginners as a known working environment to learn on and are also suited to be used to develop revised Tutorial Guides and Videos as they have an integrated Programmer.

A DIP board with interchangeable devices, rather than a board with a dedicated processor, as a major part of the appeal of Great Cow BASIC is portability amongst devices in the 8 Bit family.




Very limited populated board,

Can add PK3 programming port

Users & Developers




Curiosity HPC Development Board




Very limited populated board,

Can add PK3 programming port

Users & Developers




Explorer 8 Development Kit

Whilst the Curiosity boards are suitable for development, testing and training, there is a large body of PIC devices in the 18 PIN packages as well as other older devices in use by the Great Cow BASIC community.  


This board will support testing the libraries and drivers on these older devices with HVP as well as the newer LVP devices.

Supports all 8-bit Chips,


Ext. programmer required





MPLAB Xpress


Evaluation Board

Great Cow BASIC demonstrations suite produced in 2016.



Integrated Programmer,

Bed of nail port * 2

Users & Developers




MPLAB Xpress

PIC16F18345 Evaluation Board

No Great Cow BASIC demonstrations



Integrated Programmer,

Bed of nail port * 2

Users & Developers




MPLAB Xpress PIC16F18877 Evaluation Board

No Great Cow BASIC demonstrations



Integrated Programmer,

Bed of nail port * 2

Users & Developers




PICDEM Lab II Development Platform.

This board supports MikroBUS drivers, that have been developed on the Curiosity Boards, with older Devices like the 18 PIN or older 14/20 pin PIC devices.   It would be assumed that the developer has a suitable PICKit available to use in that case.


However, as the PICDEM Lab has no onboard programmer, it is not really suited for developing beginner tutorials.

IO Pins no, MikroBus,

Ext Programmer Required





PICkit Serial SPI demo board

This board will allow testing of SPI drivers against a known good reference source when  developing for and debugging, unknown SPI based Click Boards and user programmes.

SPI Interface only





PICkit Serial I2C demo board

This board will allow testing of I2C drivers against a known good reference source when  developing for and debugging, unknown I2C based Click Boards and user programmes.

I2C Interface only



Full Circle Magazine


Great Cow BASIC on the front page of the November issues of the Full Circle Magazine.



Full Circle Magazine #127

Northern Software Review


This is a review of the Northern Software solution.

I needed a faster method of programming microcontrollers when developing Great Cow BASIC and I went on the hunt for an alternative to the MicroChip PICKit I was using.   The Northern Software solution is an alternative method to program Microchip PIC microcontrollers. 

I did some research and this is a summary of my research and how I have integrated this into the Great Cow BASIC IDE.

Northern Software

Northern Software’s is not just about a programmer(s). Northern Software has a mission to provide high quality tools tailored to microcontroller firmware development.     

What is the intent of Northern Software Development System?

To be the fastest method to program Microchip PIC microcontrollers.    

The tool suite is called Northern Software Development System (NSDS) and it is designed to support most Microchip PIC® microcontrollers. 

The system is still under development – the developer has completed the hardware programmers and he is developing a programming suite for Microchip PIC microcontrollers.  


What are the components of NSDS?


NSDS is a suite of programmers and supporting software.  There are two main components the programmers and the software are:


Northern Software Development Programmers (NSDP)

NSDPs are programmer/debuggers for Northern Software Development System, but , NSDPs can also be used with software programs like Great Cow BASIC. 


NSDS features

  • USB connectivity - interfaced to the host computer via USB that did not require any special drivers 
  • In-circuit programming and on-chip debugging
  • Uses low voltage programming (LVP) and by never applying high voltage to the target microcontrolllers
  • Can use High Volt Programming (HVP) with an external circuit
  • Can supply up to 200mA of USB power to the target circuit
  • Very easy to use.  The NSDP does not require firmware changes to program the microcontroller.  The same NSDP firmware works for all supported microcontrollers

The NSDSP’s use a 10-pin connector designed to keep it attached in the breadboard for prototyping.    If breadboard is not used.... just use a short cable to connect to your development board through Microchip 6-pin ICSP connector!  Very simple.


Northern Software - NSDS

The main software program is used to setup and program a microcontroller.   The software can be used for development as well as production programming, including serialized or parallel programming.


Software features

  • The operating speed of the NDSP can be set from 6MHz  to 50kHz to support a wide variety of operating conditions.
  • Supports for multiple NDSP devices connected to the host computer at the same time.
  • Serial communications – the NSDSP can work as UART-to-USB converter for the target PIC (as well as for any other device) with speeds from 1200 baud to 2Mbaud.
  • Supports Windows, Linux and Mac OS X



Installation is simple – I downloaded from the website and follow the dialogs.  

The main programming software has a MS-Window like interface.   It is easy to use but is not a user interface that I personally like.  The  main programming software enables you to select the parameters like the microcontroller type, the hex file and other tweaks that you may need.   From my experience the software is robust and very usable – small improvements to the user experience would make me very happy!

The software suite also has a number of command line utilities that support command line programming, serial communication and device discovery – again, these command line utilities are very good.   See below for the use of the command line utility when using with Great Cow BASIC.

The serial software is published for user development programs.

What are the five NSDSP options?

There are four NSDSP models, which operate at different target voltages, plus a pre-programmed chip for embedded into solutions.

  • NSDSP-1-3V3 - 3.3V
  • NSDSP-1-5V - 5V
  • NSDSP-1-U - 1.7 to 5.5V
  • NSDSP-1-I - 2.5 to 5.5V with galvanic isolation
  • Pre-programmed NSDSP chips to mount a NSDSP directly into a production circuit. This is a cost effective alternative to USB bootloader, but also works as a USB-to-UART converter for the application.

I have and use the NSDSP-1-U - 1.7 to 5.5V.  The green one - I have made a 3D case for mine to protect it.

What is the status of the development program?


The development program is active.    The hardware and software is available from

The software is highly usable with issues being resolved quickly.  I was very impressed with requests for information and the resolution for a specific microcontroller to be supported was very fast.

What does the NSDS look like?


The user interface is shown below.  


Not my favorite user interface but as I use the command line utilities this very usable.

Does NSDS work?


Programming is fast.  Very fast.  From my benchmarks  - 13s to 0.4s!! Stunning.


Works from the user interface, as shown above and it works from the command line, see later in this article.


How does NSDS work?


This is my overview... the architecture is relatively simple.   


At the core of the solution is the NSDSP Chip. A pre-programmed PIC16LF1454.  This chip handles the USB interface to the host computer and the programming and the serial interface to the target microcontroller.  There are other key passive components but the PIC16LF1454 is the smart part of the architecture.


The software is key.  This has the details ‘how to’ program the microcontroller.  The software is where the developer has embedded the ‘knowledge’ of vast array of supported microcontrollers.  When I started the review a specific was microcontroller not supported – I contacted the developer and the same day  I downloaded and installed the latest software with the specific microcontroller support. 


The software is a closed development.  Critics of closed developments will easily say 'the closed software means that there an issue' (not a risk as risk needs to be a specific stated time/date!) 'with respect to the future support of microcontroller in the future'.  This issue can be resolved by requesting licensing the software with an escrow agreement.



How does NSDS work with Great Cow BASIC?



Download and install the command line utilities to the GCB@SYN directory into folder called ..GCB@SYN\NS.
Edit FLASHPIC.BAT and add the following to call the command programmer. You may wish to review the following TOPIC to enable the support  of multiple programmers.


"ns\nsprog.exe" p -d "PIC%2" -i %1 -v

Then,  in you user program you need to ensure you have Low Voltage Programming enable by adding the following to your user program.

#config LVP=ON

The compile, program and enjoy the speed!



But... NSDS needs LVP and I have used HVP on my  microcontroller?

If you have used a PICKit or another HVP then the microcontroller will have the LVP flag unset.


Very simple to resolve.


Using High Voltage Programmer, either a PICKit2 / PICKit3 or alternative, and use the approoiate software for the specific chip.  Erase the program and this will reset the LVP flag within the microcontroller.  


Remember, PIC microcontrollers are shipped with LVP enabled - so if you use a brand new microcontroller you can use it in LVP mode with ease.  You just may to erase previously programmed microcontrollers.




NSDS suite works.  


NSDS is a development program.  

  • There may be issues - report this issues via the developer – he can only fix what they are told is broken
  • There may be microcontrollers not supported - just ask.

These programmers and the supporting software rock! 


This will save you hours of value time and lots of angst.

Great Cow BASIC Patch Kits




The development of Great Cow BASIC is moving faster and faster.   We have more and more developers on board to grow the libraries, improve the libraries and provide quality improvements to the tool chain, demonstrations and the Help.

Since the last release we have many changes - some major, some minor but all will add value to some users.

So, there is a need to provide a regular patch kit, in a consistent way, to share these new capabilities and improvements.


The community of developers is improving the quality of Great Cow BASIC.

Publishing the Help source here.  Many of you have updated the source to the Help - thank you.

We share the Help on a daily basis.  This is built and published here

Publishing the Demonstration source code here.  Again, a number of the developers have added demonstrations and/or corrected the existing demonstrations.



The release of Great Cow BASIC is about every six months.  We collate changes into a coherent build, package up, test and test and then publish.  These releases are available for a growing range of use cases and operating systems.


Patch Kit

So, what could it be? A patch kit is a distribution that MUST be applied to an existing installation.  Simple put - it would be additive to an existing installation.  Unpack the patch kit distribution and then update with the new files.

The patch kit is going to contain the following mandated components

  • Compiler
  • Latest Help
  • Latest demonstrations
  • Updated hardware libraries
  • Updated lowlevel libraries
  • Updated PPSTool and supporting XML
  • Updated IDE Lex
  • Updated IDE Helpers
  • PPSTool and the XML files
  • Updated readme.txt!

The patch kit is NOT going to contain the following components:

  • Batch files for programming
  • Any tools - programmers etc

The patch kit would be consistent in terms of an operational toolchain.  This means using the compiler and the libraries as a consistent installation is most important - you cannot, and should not, take just the compiler and not the libraries.  Things could break! We do have time to figure what does not work with what.   The patch kit NEEDS to be consistent in terms of an operational toolchain.

The patch kit could have little issues (as I call them.... you may call the bugs!!!) but the purpose of the patch kit is to share the ongoing development so you can leverage the investment of the community.



Look out for the patch kits soon!

Please do not use PatchKits unless you have been asked to via the Forum.



16-bit Pulse Width Modulation Capability

PWM    7-Nov-2017

The Great Cow BASIC development team have published another new capability - Pulse Width Modulation for the 16-bit Microchip module.

You can now add 16-bit PWM to your PIC projects.   The high-precision 16-bit PWM available in various PIC16 devices such as the PIC16F157X product family, provides advanced features beyond those found on standard PWM modules or the CCP/PWM modules.

16-bit PWM allows you to easily enable PWM output.   The high-precision 16-bit PWM is ideal for power supplies, LED lighting, color mixing, and motor control applications. In addition, when not using the PWM outputs the module can be used to add up to four additional general purpose 16-bit timers.

Pete Everett has led the development of the new library - our thanks go to Pete.  The library supports:

  • Support for 12 channels - all independently programmable
  • Optmisation of generated code included
  • Fixed Mode Frequency Mode and Duty with differing frequency and duty across all 12 channels with very few lines of user program and with a very small program size
  • Backwards compatibility with other PWM and CCP/PWM features
  • Variable Mode Frequency and Duty Mode with differing frequency and duty across all 12 channels with a simple to use Public method and with small program size being generated
  • Includes demonstration code on GitHub.   See
  • The library has the capability to support Phase and Offset.
  • The IDE Helpers and Help will be updated as soon as practical

To enable this capability ensure you have v0.98.01 installed, and, obtain the libraries from the Sourceforge Forum and then add to you installation.   Install the three files from to your installation.  Of course, versions of the Great Cow BASIC distribution after v0.98.01 will have this capability installed.  

For more information on 16-bit PWM see


New Website launched

Many updates and features    4-Nov-2017

Say 'Hello' to the new icon!



You got a Feed Reader?

The news is now published via an Rss Feed!

Great Cow BASIC V0.98.01 released

18f2xK42 support and critical patches    1-Nov-2017

The Great Cow BASIC development team have published another release that further enhances the Great Cow BASIC compiler capabilities.   This release is called V0.98.01

This release supports the 18f2xK42 microcontrollers and the critical patches for the v0.98.00 as follows:

  • Improved GLCD  support by updating the ILI9341 driver to support OLED Fonts.
  • Improved CCP/PWM  for fixed mode CCP1/PWM thru CCP5/PWM.
  • Fixes for corrected maths in StrInteger and labels,  HWI2C to resolve a potential lockup in 16f18855 class of chips.
  • Improved IDE for handling IF-THEN-ELSE-IF in the editor.
  • 18F2xK42 chip support with updates to the compiler for i2c, spi, adc, pwm and chipfiles.  See the K42 specific release note.
  • Compiler fix to allow for interrupts on newer PIC18F chips with INTCON0 rather than INTCON register.
  • Fixed I2C module support for I2C LCD and I2C Discovery and updated the LCD.H and HWI2C.H with for new demos.

Great Cow BASIC V0.98.00 released

enhanced I2C Support, many new GLCD Devices    17-Sep-2017

The Great Cow BASIC development team have published another release that further enhances the Great Cow BASIC compiler capabilities.   This release is called V0.98.00

This release include many new features and fixes as follows:

  • Timers: Improved timer support for timers 3 / 5  for chips with TxCLK register, previous release only supported Timer1 and timer support updated to include AVR support.
  • Improved performance and quality improvements
  • New GLCD devices
  • Support I2C (both software and hardware) and performance improvements  by optimising write byte code
  • New driver for GLCD SSD1306 displays with 128*32 pixels
  • Updated GLCD SSD1306 to improve performance within PSET method and corrected errors with variable usage
  • New GLCD Drivers for the ILI9348L and ILI9481L
  • And, a host of library performance enhancement
  • New drivers
    • MPU6050 - 6 Axis sensor demonstration
    • 74XXX_EERAM a library for Microchip EERAM
  • PPSTool
    • Updated software to v0.0.5.5 of the tool and 1.36.1 of XML data files
  • SPI updated to add FastHWSPITransfer ( byte_variable ) to support methods and updated the Help
  • Compiler enhancements and fixes for the following:
    • Else If implemented
    • Added support for word, integer and long arrays
    • 18f large config buffer issue
    • Incorrect error generated when #option explicit used with unary operators on any microcontroller or rotate command on AVR
    • Fix for non-number (includes decimals)type of var in table
    • Fix for issue when additional comma is specified when creating an array
    • Fix for leading 0 in table entries
    • Errors 1 and 2 now create message log entry to ensure user see and resolves the errors
    • Updated message file to support new messages
    • Invalid items in a data table will cause an error message with the error location
  • Updated the ChipData of the chip data files are now added to program as constants (with Chip added to the name - so Pins=28 in the chip data file creates a constant with the name ChipPins and the value 28 in the user program
  • ADC improvements
    • Updated ADC library to further improve quality and improve consistent usage across the commands.
    • Updated ReadAD, ReadAD10 and ReadAD12 to improve Information provided
  • PWM
    • New command HPWMUPdate and another set of improvements in the library
    • New constants for user use PRxPeriodRegister and TimerXprescaleselectValue
    • Support for 8bit call to 10bit PWM (non-CCP) method
    • Memory improvements in terms of PWM methods and program size
    • Support for HPWM_Fast within 10bit PWM (non-CCP) method
    • Removal of script to calculate PR2Temp. Replaced with Sub-routine this reduces code size
    • Removal of complexity by removal of FnLSL in calculateDuty method
    • Added support for HPWMOff ( channel, PWMHardware ). Turns of 10bit PWM (non-CCP) channel
  • Improved documentation and a lot more demonstrations program

Great Cow BASIC v0.97.00 released

new PPSTool    1-Feb-2017

The Great Cow BASIC development team have published another release that further enhances the Great Cow BASIC compiler capabilities.  This release  is callled v0.97.00

  • Introduction of the PPSTool for Great Cow BASIC.  This new PPSTool support the easy configuration of PPS when using Microchip Pics. Thanks go to Pete Reverett.
  • New Software Serial libraries. Optimised for size and performance. Includes Demos and Help. Thanks go to Frank Steinberg.
  • Added priority to #startup to support PPS methods. You can now prioritise the order in which the key methods are called when initialising a chip. Updated 65 demonstration files to use the revised #startup for PPS.
  • Fixes to the installer to handle Windows 10 and revised the Linux installer.
  • Added Oscillator Support for PIC18FxxK40.
  • Refreshed all the .dat files to revert LF files, where required, and, to improve register/bit order.
  • More support for Microchip 8-bit microprocessors. We have updated the compiler to support the new instruction set and changed the format of the .dat files with Interrupt on Change now supports PortChange for any IOC event.
  • GETUseriD. A new library to support ID identification of Microchip microcontrollers. See the demo folder for lots of examples.
  • Improved Help and IDE Context Help.
  • Improved I2C Slave support via a State Library.
  • GLCD driver for the SDD1306 now supports SPI.
  • Improved support for Microchip and Atmel 8-bit microprocessors with over 900 different processor types now supported.
  • Over 570 demonstration files that showcase the breadth and depth of Great Cow BASIC capabilities with new CLC demonstration for Xpress board.
  • Various fixes for reported bugs and issues.
Back to Top