When this program is LISTed we want the character to print literally and not be interpreted as a token (0xFF is not assigned to any token). mkdir -p pet I had a KIM-1 around 1980 and designed and built my own RAM boards from scratch. Intellivision BASIC replaced LOAD and SAVE by PLOD, PSAV, VLOD, VSAV and SLOD, PRT, GETC and VER were added, and PEEK, POKE and WAIT were removed. The following symbols can be defined in addition: Changing symbol definitions can alter an existing base configuration, but it is not guaranteed to assemble or work correctly. How significant is ), reconstructing the family tree, and understanding when bugs were fixed and when new bugs, features and easter eggs were introduced. some rights reserved under this Creative Commons license. Similarly, the two extra constants used for generating random numbers (CONRND1, CONRND2) are 4 bytes in all versions, which is one byte short for 9 digit BASIC. 1.1 fixed this by setting the flags on the value again. Could Take a look: Repeat the last step until the assembly process outputs the same file. in the second issue of Byte Magazine (October 1975), See another seminal Microsoft Working on figuring it out so I can have M$ BASIC on my virtual 6502 platforms. – I still can’t figure out, why you can use c-style comments in your source. All machine-specifics were properly abstracted by calls into the KERNAL jump table, the upper 7 KB of the 16 KB ROM – except for one call out into the screen editor part of the PET ROM: This code fixes the garbage collector by doing the missing ldy/asl/adc in the patch code. or did they just, demonstratel idea, concept with no machine in mind. Or look at the release date or the family tree to find a version which is similar. The Keyboard is such an interesting beast, to be sure. What happens is that the POS function does not check whether its argument is numeric or string, and so in the event it is a string, it fails to clear the “temporary string stack”, resulting in the above error. There seems to be atleast one more version of Microsoft Basic for 6502: http://www.atarimagazines.com/computeii/issue1/page3-c.php, COMPUTE II ISSUE 1 / APRIL/MAY 1980 @Mike: Yes, the source shows that this was fixed in Intellivision BASIC: The “.ifdef KBD” should probably be an “.ifdef CONFIG_2”. * It does a memory test by reading/writing memory (without preserving the data) until it hits unassigned memory or ROM – if you link cbmbasic2 to another address in RAM, it will overwrite itself. I believe this only appeared in CBM versions after the PET machines I used. Just like Apple, Commodore went back to Microsoft for an updated version of BASIC, and integrated its changes into the new version. Some of us had a lot of utilities, and Ham Code such as Morse Code Readers and Writers installed in place of the BASIC or as Plug-in memory that slotted into a socket on the Main PCB. Reply. Without the extra string, they could have saved 21 bytes. FP: Whether the 6 digit or 9 digit floating point library was included. Now create a new version in the source base, as described earlier. Make sure to read on to the end of the article, as it explains more about the source and what you can do with it. But they also introduced another bug: In input handling, again concerning the location of the input buffer, there is the following code: This code has been in place since 1.0 and assumes that INPUTBUFFER is above $0100. Extensions: What BASIC extensions were added by the OEM, of any. and improve some nasty shortcomings in KIM Basic, like no working save and load. So this indicates that Commodore wrote the fixes. I’m still musing over some of the unique aspects of the Intellivision Keyboard port. vice_dir=$(dirname $(readlink -f $(which xpet)))/.. It did use 9-digit floating point math. Ohio Scientific sold a wide series of 6502-based machines for several years, but they all shipped with the same version of 6 digit BASIC bought from Microsoft in 1977. Ric Weiland, Bill Gates and Monte Davidoff at Microsoft wrote MOS 6502 BASIC in the summer of 1976 by converting the Intel 8080 version. There were, of course, several enhanced versions of Basic sold for the Commodore 64. It used 9 digit precision FP math instead of the usual 6 digits. Also make sure that, in case you are compiling for RAM, the init code does not try to detect the memory size and overwrite itself. And versions after the KIM fixed this by replacing the BNE with a BEQ in case the input buffer is in the zero page. OSI did have a high-end(i.e. A single binary image could run on any 6502 system, if the start of RAM was set correctly, the calls to “MONRDKEY”, “MONCOUT”, “LOAD” and “SAVE” were filled with pointers to the machine-specific I/O code, and the “ISCNTC” function was filled with code to test for Ctrl+C. Monte Davidoff mentioned integer variables were part of BASIC-PLUS that formed the pattern for MS BASIC. :/. I’m sure that Bill Gates, Ric Weiland, and Monte Davidoff never imagined in their worst nightmares that the same BASIC would be built in to a computer 5 years later (i.e. don’t do a very volatile trick that saves one byte, support for the NULL statement (send sync 0s for serial terminals), optimizations for RAM version of BASIC, only use on 1.x. If I manually edit the memory to include that statement it produces an error at runtime. Since the first KIM-1 systems shipped in late 1975, their CPUs had the 6502 ROR bug, so KIM-1 BASIC had to work around this: Every ROR instruction is replaced by a corresponding sequence using LSR instead. Also, the memory test pattern has been changed from $92/$24 to the more standard $55/$AA. Note that the idea of all versions of BASIC in the current source code is that they are all direct forks from Microsoft’s codebase. Here is another bug that’s in every version of Microsoft Basic, which I have never seen mentioned anywhere. disable support for Microsoft-style “@”, “_”, BEL etc. There are several other missing checks for string type expressions glutting the string descriptor stack like: results also into “?formula too complex”. some light on this subject for me? probably, a silly question, but when Microsoft was making this basic (OS) version 1,2,3 etc. will print out 3.14159265 when run. And of course, Commodore’s later computers (like the C128, as well as the C16 and Plus/4) included versions of Basic with commands dedicated to the graphics and sound features found in those computers. I am now working on restoring the original BASIC software written for that platform, and will keep an eye out for any code that actually uses the VER function. prompt. have forwarded this on to the Microsoft Museum for analysis. The most important feature of the Apple II was probably its eight expansion slots. …but what the hell am I going to do with Microsoft BASIC coded in 6502 assembly! The rest of the ISCNTC code just drains the keyboard input FIFO either up until the ^C, or until it’s empty. AppleSoft II is the oldest version of Microsoft BASIC 2. this tape have been personally made by Paul Allen? So, it looks like it can return a version byte for either the BASIC or the Keyboard Component itself. I just tried: Since the Apple II character output code ignored the uppermost bit, this text could be hidden in ROM by setting the MSBs of every character: This version introduced another easter egg present in all later versions: BASIC 1.1 was the first version to include the “MICROSOFT!” easter egg text, as described in a previous article. It was a great computer that weighed a lot due to it’s thick steel cabinet with a bolted on 9″ Amber monitor. I believe this is MS version 2.x? Microsoft maintained this source tree internally and, at different points in time, handed their current version of the source to OEMs, which adapted and/or extended it for their machines.