I like it Jim From: n8vem...@googlegroups.com [mailto:n8vem...@googlegroups.com] On Behalf Of nbreeden I'm wondering if there is any interest in having BASIC in ROM allowing turn-key BASIC programming; if so then please read on. One of my design goals was for my S-100 projects was to get BASIC in ROM running. I wanted to do this for several reasons: - It takes me back to the days of my Radio Shack Model I with BASIC in ROM - I find BASIC really useful for debugging boards; PEEK, POKE, INP, OUT and WAIT are really useful - BASIC gives me a turn key solution; turn the power on and I have the BASIC prompt - For quick and dirty code I find BASIC easier to use / manage The chosen BASIC: I looked at the source for several BASIC interpreters and finally settled on using the NASCOM BASIC that had been ported to the "Space Time Productions" SBC. Joel Owens (http://www.joelowens.org/z80/index.html) had ported it, converted it to Console I/O, documented it and provided clean commented source on his web site. Joel gave me the go ahead to use the source for this project. What I did: - One of my design goals was to use common tools to manage the code; NOTEPAD++.EXE as the editor and TASM as the assembler. I wanted to code to be compiled on a PC then using a USB EPROM programmer to program the EPROM. - I formatted the code so it looks clean using NOTEPAD++.EXE - I added code to allow it to use 16550 UARTS; this was tested using the UART on the prototype S-100 Utility (MSX2) Board. - I added code to allow it to use the USB serial adapter on the S-100 Serial IO Version 02 board. - The original code had BASIC at the bottom of MEMORY; I wanted it in high MEMORY instead so that the low memory areas are RAM based to allow CPM to run; I made edits to move it to the $E000-$FFFF address space. - I modified the CLS command to use ANSI escape sequences to home the cursor and clear the screen. - I added a HOME command to use ANSI escape sequences to home the cursor. Revisions: There are two versions (source branches) - One meant to run in LOW memory targeting the EPROM socket on the S-100 Utility (MSX2) card (16550 UART). - One meant to run in HIGH memory on my S-100 Z-80 CPU V2 board - I had to make a minor change on the board to allow a full 8K of EPROM to be used. BASIC's Features include: - Floating point maths with a full set of functions - For, Next, Step, Goto, Gosub, Return, Stop, On, Wait, End - PEEK, POKE, INP, OUT, HEX - String functions MID$, RIGHT$, LEFT$, LEN, STR$, VAL, ASC, CHR$ - USR function - AND OR NOT - DATA READ RESTORE INPUT - UPPER and LOWER case - Fully tokenized BASIC - Auto detection of MEMORY size Games: - I've updated STAR TREK to run - I've updated HUNT THE WUMPUS to run Still to do: - Fully test it - Add drivers for other Serial IO devices such as the Z-80 DART - Clean up the build environment - currently it's just a BAT file - Clean up the source so there is only one source code file that used #DEFINES to control how it's compiled - Update the BASIC documentation - Have more fun -Neil -- |