sburrow wrote:
drogon wrote:
And I think that's the crux in our 6502 land. Too many solutions and the "not invented here" Or "it's not like the first 6502 I used" ... I want my X16 ... Ben Eater, etc ...
I had to go look up what "not invented here" meant. Now I see! I am a *big* NIH person, personally. A lot of the solutions that were posted have some type of licensing involved. I'm ok with some of those, but I'm a strict anti-copyright kind of person by nature. So I do tend to re-invent the wheel every time, but that's just my nature and I won't be changing anytime soon. It has nothing to do with 6502-land, it's just a "Chad" thing.
I went looking at some of the DOS/65 stuff just now. It seems like (and correct me if I'm wrong) DOS/65 gives some basic 'assumed subroutines' that any program can use, such as "print character" or "read bytes" or something? It probably also gives a basic structure to how files should be organized. But is that it? Could someone use one of these programs intended for use with DOS/65 but simply modify those basic 'assumed subroutines' to suit their own SBC? Or is that just called "porting"?
DOS/65 gives a "standard" set of functions which programs can use. It also provides a filing system - a way to store files on disk (which these days is typically CF or SD, etc.)
Broadly speaking it's CP/M for the 6502. (Which does the same thing)
See:
https://en.wikipedia.org/wiki/CP/MThe lowest level might be a "monitor" with simple routines for "print character" and "get character from keyboard" level. Other monitors may be more clever.
Some history (in my timeline/experience anyway):
So the Apple 1 had "WozMon" - a tiny utility (250 bytes) that provided print and get characters and utilities to manipulate memory.
Apple II had an enhanced version for more screen manipulation in addition to simple print character, as well as facilities to manage plug in cards, etc. it included a mini assembler and disassembler.
At the same time commodore had their "kernal" - not a "monitor" as such but a set of routines to aid screen manipulation and character entry. That carried on to the VIC20 and C64 range (and now the Commander X16)
Similarly OSI/Compukit/UK101 had a 2K monitor to do the screen/keyboard "stuff" and support BASIC.
There were a few other 6502 systems in the late 70s/early 80s doing their own thing too - Oric and Microtan-65 to name just 2...
Meanwhile Acorn was developing their MOS - Machine Operating System - larger and more feature full - but that's the benefit of being a few years later and full of Cambridge graduates - the Acorn MOS does sophisticated graphics and screen modes, sound, tape and ROM filing systems as well as providing a standard way for applications to access a filing system - which was in separate ROM (or ROMs as there were several different types of filing system including network). For it's time it was quite sophisticated - it allowed for a 16K "language" ROM (e.g. Basic, or a Word processor) and a 16K filing system ROM to occupy the same physical address space - the OS was at a separate address space and as long as you called the OS routines correctly it could switch off the language and switch on the filing system ROMs and return as required. It's probably the most sophisticated of the 6502 monitor/OSs and it's what I modelled my RubyOS on - to the point I can run some Acornsoft ROMs unchanged - e.g. BBC Basic.
Quote:
So far it seems there is no perfect solution. Perhaps an assembler with some good keywords would actually be best in the end... I know I would not be capable of meeting all of the requirements for Pascal or C, but I can make my own flavor of BASIC without too many folks thinking less of me I suppose.
Thank you all for the responses so far!
Chad
when I wrote my TinyBasic, I originally used the routines in RubyOS - it provided not only character in and out, but a means to print strings and get lines of text with line editing and command-line history recall. As I moved it to the '134 system I had to "port" it to use the built-in ROM in the '134 and then I eventually worked out how to turn that off and replace it with my own code - it's not even a monitor, literally 2 routines that hook into the serial port Tx and Rx interrupts which TinyBasic call call for character IO. My 6507 version has nothing - there is just putchar and getchar which bit-bang the serial pins. No interrupts, no buffers, no "monitor" commands...
For a brand new system then DOS/65 may well be a good choice - you will need to port it to your hardware which may involve writing/re-writing the character IO parts and the methods to access the disk hardware, but other than that, you should then get a usable system with some utilities to make it work...
Or... Throw it all away, design your own and off you go...
-Gordon
_________________
--
Gordon Henderson.
See my
Ruby 6502 and 65816 SBC projects here:
https://projects.drogon.net/ruby/