Nascom Basic

Working in the scientific instrument field, I have amassed a huge collection of unique and powerful analog and digital control chips. I plan to design and build a bunch of custom interface boards, with ADC, DAC, digital I/O, optical, relay, etc. I’ll then need a way to control these, allowing me to write control software easily.

With my large and growing collection of retro computers, I toyed with writing an OS from scratch. However, an OS without any software to run on it isn’t of much use, so I gave up on that idea. The Basic language was too limiting for driving hardware, and CP/M can only take you so far. Then it struck me that if I could modify Basic to include built in commands and functions to control my hardware, I wouldn’t need a true OS, custom or CP/M.

Microsoft’s Nascom Basic has been ported to run on all of my Z80 hardware, and full source code is included. If I could just figure out the command structure, I would be able to add some custom commands to control my different boards. An example would be an ADC function to which I’d pass an ADC channel number, and the function would return the analog value. Then in Basic I could use a statement like “LET A = ADC(3)” to read the ADC value for channel 3.

A search online brought up a few hits where other users had added commands, but the methods weren’t always clearly explained, and they lacked information on passing values to and from the commands and functions, etc. So using the online examples as a starting point, I spent a couple of days playing with the system, making changes, writing to an EEPROM, booting and failing, until I finally figured out enough to get me started.