CP/M, originally standing for Control Program/Monitor and later Control Program for Microcomputers,[3][4][5] is a mass-market operating system created for Intel 8080/85-based microcomputers by Gary Kildall of Digital Research, Inc.
Paul_KD7HB:
Apple II DOS is even better and smaller. Why not use it? Or perhaps CPM?
Paul
Thank you for the tip Paul :3
billhowl: Harvard architecture has separate data and instruction busses, allowing transfers to be performed simultaneously on both busses.
A von Neumann architecture has only one bus which is used for both data transfers and instruction fetches, and therefore data transfers and instruction fetches must be scheduled - they can not be performed at the same time.
Arduino ATMEGA is using Modified Harvard architecture and MS-DOS is design for von Neumann architecture.
And i Would imagine that the same thing applies to Apple 2 Dos, right ?
billhowl: CP/M, originally standing for Control Program/Monitor and later Control Program for Microcomputers,[3][4][5] is a mass-market operating system created for Intel 8080/85-based microcomputers by Gary Kildall of Digital Research, Inc.
Thanks for taking the time to explain me and for what i've seen from the people have sent me i think that ill make a CPM machine with the RunCPM Project
It would be also informative to actually discuss MSDOS itself, and it's use of memory. Most of the BIOS calls that get lots of MSDOS work done reference the first section of physical memory which has to be RAM.. The IBM and various other BIOS versions are published (I fought to get IBM to publish the BIOS back in the day)..
I don't know how much of MSDOS as loaded into PC RAM has "self-modifying" code sections..
You do quickly learn, when you start to investigate "old" "operating systems", that a computer with a couple K of bootloader and 48k of RAM is VERY MUCH DIFFERENT from a microcontroller with 128k of flash and a couple K of RAM (that doesn't execute.) The ability to load, add and remove portions of a program from "storage" of some kind is really powerful in ways that have almost been forgotten
Of course, if you're going to emulate an 8088 instruction set, you might as well emulate the RAM that it is running in as well, using some form of external hardware - I think one of the links that I posted earlier used an external SPI RAM chip, and of course there is the 512k RAM expansion for Arduino MEGA... Ugly, and slow, but theoretically possible.
I prefer the "historic" systems that use a genuine CPU, with a modern microcontroller implementing the equivalent of front-panel and other IO devices. See, for example, this 4-chip Z80 system - 1 Z80, 1 RAM chip, one glue logic, and an ATmega32a running an arduino sketch to do Serial, I2C, "floppy disk", RTC, bootstrapping, and ROM functionality... https://hackaday.io/project/19000-a-4-4ics-z80-homemade-computer-on-breadboard
westfw:
You do quickly learn, when you start to investigate "old" "operating systems", that a computer with a couple K of bootloader and 48k of RAM is VERY MUCH DIFFERENT from a microcontroller with 128k of flash and a couple K of RAM (that doesn't execute.) The ability to load, add and remove portions of a program from "storage" of some kind is really powerful in ways that have almost been forgotten
Of course, if you're going to emulate an 8088 instruction set, you might as well emulate the RAM that it is running in as well, using some form of external hardware - I think one of the links that I posted earlier used an external SPI RAM chip, and of course there is the 512k RAM expansion for Arduino MEGA... Ugly, and slow, but theoretically possible.
I prefer the "historic" systems that use a genuine CPU, with a modern microcontroller implementing the equivalent of front-panel and other IO devices. See, for example, this 4-chip Z80 system - 1 Z80, 1 RAM chip, one glue logic, and an ATmega32a running an arduino sketch to do Serial, I2C, "floppy disk", RTC, bootstrapping, and ROM functionality... A 4$, 4ICs, Z80 homemade computer on breadboard | Hackaday.io
Thank you for the tip, this project is what i had in mind to do and now the grind to figure out how to build this
As a little sidenote i want to thank everyone who helped me choose the future of my project and took the time to explain me things about the intricate ways arduino functions :3
Spyrotech:
Im trying to make a "vintage" computer out of a arduino and MS-DOS seems like a good operating sistem for a arduino since it doesnt need that much processing power or ram.
Any help or tip on the subject is welcome :3
I'm pretty new to Arduino, and am playing with some NANO boards. But I have been a systems engineer for many years, and go back far enough the my first assembler code projects were done on an ATARI 8 bit machine. I say that only to point out that despite how marvelous it is that these tiny boards can be easily programmed and incorporated into projects, I'm quickly seeing that despite its slower clock speed, my old 8 bit ATARI (and its now "lowly" 6502) had vastly more power and flexibility than you'll find in these little Arduino boards.
Now I'll get all kinds of flack for saying this, but regarding your DOS question, "Can't", to put it kindly, a "mis-applied" word in the programming world. But although creating a scaled down form of DOS (minus the "D" which stood for "Disk") would arguably be a monumental task that in the end would likely not be worth the effort spent. That's a much truer explanation.
Understand the arduino is intended to be something you can use in a project, that will lend itself to an infinite number of easy modifications without always having change physical parts. But its memory space is small enough that adding any kind of a management framework (like DOS) would quickly eat away at memory best reserved for your actual project. Remeber, both MCUs and garages often fall victim to the same axiom: " a project, like a gas, expands to fill the space available).
PeterPan321:
I'm pretty new to Arduino, and am playing with some NANO boards. But I have been a systems engineer for many years, and go back far enough the my first assembler code projects were done on an ATARI 8 bit machine. I say that only to point out that despite how marvelous it is that these tiny boards can be easily programmed and incorporated into projects, I'm quickly seeing that despite its slower clock speed, my old 8 bit ATARI (and its now "lowly" 6502) had vastly more power and flexibility than you'll find in these little Arduino boards.
Now I'll get all kinds of flack for saying this, but regarding your DOS question, "Can't", to put it kindly, a "mis-applied" word in the programming world. But although creating a scaled down form of DOS (minus the "D" which stood for "Disk") would arguably be a monumental task that in the end would likely not be worth the effort spent. That's a much truer explanation.
Understand the arduino is intended to be something you can use in a project, that will lend itself to an infinite number of easy modifications without always having change physical parts. But its memory space is small enough that adding any kind of a management framework (like DOS) would quickly eat away at memory best reserved for your actual project. Remeber, both MCUs and garages often fall victim to the same axiom: " a project, like a gas, expands to fill the space available).
Yeah, when i initialy asked the question i had no idea of the dimensions of the work need to do such thing, thats why i took a alternate solution by using a z80 in conjuction with an arduino to run CP/M (as sujested by westfw) wich is a lot more doable,again i cant stress enough how thankfull i am for the people who helped me either by explaining me how arduino fundamentaly works and for helping me guide my project
Spyrotech:
i cant stress enough how thankfull i am for the people who helped me either by explaining me how arduino fundamentaly works and for helping me guide my project
I'm pretty new here, but I think it is possible to "thank" those who are helpful, perhaps with the "karma" button?