7 ms·
SymbOS Z80 multitasking operating system
- dang 3y agoRelated: SymbOS: Graphical Z80 Multitasking Operating System - https://news.ycombinator.com/item?id=16078915 https://news.ycombinator.com/item?id=16078915 - Jan 2018 (98 comments) SymbOS: preemptive multitasking OS that can play mp3s, video on 8-bit Z80 PCs - https://news.ycombinator.com/item?id=10749206 https://news.ycombinator.com/item?id=10749206 - Dec 2015 (36 comments) Z80 Symbos OS now has networking support on MSX - https://news.ycombinator.com/item?id=9634634 https://news.ycombinator.com/item?id=9634634 - May 2015 (25 comments) SymbOS: preemptive multitasking OS that can play mp3s, video on 8-bit Z80 PCs - https://news.ycombinator.com/item?id=4653232 https://news.ycombinator.com/item?id=4653232 - Oct 2012 (1 comment)
- _joel 3y ago> Preemptive multitasking - 1024 Kb dynamic memory - 2 terabyte filesystem For those occasions you need 2TB attached to a z80...
- snvzz 3y ago2TB is a familiar limit (MBR). 512 byte blocks addressed by 32bit block number.
- GeorgeTirebiter 3y agoCongrats on taking this concept far beyond 'proof of concept'; well done. Done many years ago now, there is a preemptive multitasking OS for the Z80 for the "kiss TNC" used in ham radio: https://github.com/cheponis/KISS-TNC2/blob/master/KISS-TNC.asm https://github.com/cheponis/KISS-TNC2/blob/master/KISS-TNC.a... This only used the interrupts to permit the modem (receive) side to generate interrupts, but the concepts are the same as if the interrupt would have come from a timer source. Yes, it uses the EXX and EX AF,AF' instructions. The best Z80 book, which describes the little-known W and Z registers is http://www.z80.info/zip/zaks_book.pdf http://www.z80.info/zip/zaks_book.pdf start on page 86 for their description.
- jbverschoor 3y agoI recently played around with this at MSXGOTO40. Crazy to see an MSX do all of this. Videos at https://www.youtube.com/@Prodatron https://www.youtube.com/@Prodatron
- jbverschoor 3y agoNotable videos: lymings (lemmings) with sound https://www.youtube.com/watch?v=PfkJLP45FWk https://www.youtube.com/watch?v=PfkJLP45FWk multitasking with pacman https://www.youtube.com/watch?v=Ish4ReOjdIw https://www.youtube.com/watch?v=Ish4ReOjdIw networking with wget and IRC https://www.youtube.com/watch?v=bB6X7V6fVyE https://www.youtube.com/watch?v=bB6X7V6fVyE
- FullyFunctional 3y agoThanks, that gave a good impression of SymbOS which is boggling my mind a bit.
- jbverschoor 3y agoYeah, I was totally flabbergasted.. Seeing an old rusty MSX of almost 40 years old pulling off multitasking. They had quite a few apps and games (even the z80 doom haha). I talked to one of the members for a while. So basically they use none of the BIOS, so it's purely Z80, which makes it super portable. They do have different drivers for different videocards. So some configurations work faster than others. I saw a stock MSX and one with some videocard, but I can't remember exactly. The stock one was slow with redrawing at times, but the other one was very smooth.
- FullyFunctional 3y agoI was very regretful that my first (Nascom 2) didn’t leverage interrupts more. I hated that loading/saving to tape were simultaneously insanely slow and blocking operations. The slowness would have been easier to stomach if I could do something else while waiting. It wasn’t a technical problem. I had seen concurrent CP/M in action and that was amazing.
- PaulHoule 3y agoI’ve looked at a lot of the old architectures from the 1980s and gradually came to the conclusion that I liked the Z80 the best, particularly because it has a follow on https://en.wikipedia.org/wiki/Zilog_eZ80 https://en.wikipedia.org/wiki/Zilog_eZ80 which has a 24 bit address space without the horrible compromises of this guy https://en.wikipedia.org/wiki/WDC_65C816 https://en.wikipedia.org/wiki/WDC_65C816
- cmrdporcupine 3y agoI was a 6502 guy back in the 80s, before I went 68k, and never had a machine with the Z80, so have no nostalgia for it. But when I look on paper, the Z80 really does look like it stood the test of time better. How does the eZ80 extend out into 24 bits without having an awkward banking system like the '816? (EDIT: I see, it actually adds a 24-bit register mode.) The biggest problem I found with the 816 was that having no registers larger than 16-bits meant, well, there's no way to store a pointer in a register, or work with data larger than 64k. Well, that and the awful 8/16 mode switching. Oh, and the fact that the stack and direct page are stuck in the first 64k bank. Damn, I really wish Mensch had designed and built a 65xx with a proper 16bit (or higher) architecture instead of the meh that is the 816.
- alexisread 3y agoI'd imagine the ez80 uses an extended register fusion setup ie. You can use 3 8bit registers as a 24bit register. I think that would take 3 cycles to use the full address space, but for the first 8bit space I guess it would work like utf8 in that you just use 1 register (byte).
- PaulHoule 3y agoThey extended the length of the registers for the eZ80, which they didn’t do for the 816, it is explained really well here http://www.zilog.com/docs/um0077.pdf http://www.zilog.com/docs/um0077.pdf I made it through (most of) the 1980s with a 6809-based TRS-80 Color Computer but I think the 6502 was the most popular CPU in the US then, as the 6502 based PET, Apple ][, C64, Atari 400, Atari 2600 and NES used them. I think it was rare to see Z-80 computers with color graphics, framebuffers, sprites, etc. but it was used in arcade boards and they had this https://en.wikipedia.org/wiki/MSX https://en.wikipedia.org/wiki/MSX in some other countries. I wonder if you could build a OS for eZ80 that could run CP/M software, that would get you a pretty large base of software to run. In an alternate timeline, Apple comes out with the iiGS a few years earlier than it did instead of the Mac but no the ‘816 was not that chip and they would have been looking for a replacement around the time they got looking for a 68k replacement.
- andyjohnson0 3y agoI'd be very interested to know how preemptive (rather than cooperative) multi-tasking is implemented. It's been a while but I don't remember the Z80 having any suitable primitives upon which to implement preemption. I poked around the website but it seems light on implementation details. Super-impressive piece of work though. Edit to say: thank you to the responders who've backfilled the gaps in my memory. Interesting what you forget given enough time.
- dfawcus 3y agoEven DRI's MP/M from 1979 had preemptive multi-tasking, as long as the platform supported an clock interrupt. You can find the documents on bitsavers, the binaries may well be there and/or on Gaby's site.
- becurious 3y agoThere was a program called Switcha published as a listing in Your Sinclair. You could make a 48K Sinclair Spectrum appear as three 16K machines. It installed an interrupt mode 2 handler and checked for a key combination to swap out the lower 16K of RAM. No reason it couldn’t have time sliced them.
- JNRowe 3y agoWhat a time to be alive, 1980s pdf at your fingertip¹. The tool is described on page 84 of the linked doc. ¹ https://ia903206.us.archive.org/19/items/Your_Sinclair_003/Your_Sinclair_003.pdf https://ia903206.us.archive.org/19/items/Your_Sinclair_003/Y...
- becurious 3y agoThanks! I remember that cover now! The article has both the hex and the asm listing. I think I did an update to it to use the bank switched memory on the 128K to get 8 16K Spectrums. Of course with something like a MGT +D with the 8K ROM and 8K SRAM it would have been possible to use the NMI button to switch between two 48K Spectrums on a 128K and have them run a game in one and BASIC in the other.
- tempodox 3y agoAmstrad CPC! I can remember when you could buy one at the department store. Computing was adventurous exploration then.
- sedatk 3y agoTwo friends and I started an impromptu coding session last night on my first Amstrad CPC464 bought in 1988. It turned out to be my name sinusoidally moving over the screen. It was so fun to discover BASIC commands and implement effects together. Only photos of the event left though because there was no tape to save the work :)
- pkaye 3y agoMy dad got me a Amstrad system here in the US when I was a teenager. It was sold as a word processer system with a high resolution green monitor and a nice printer. But it was not of use for anything else due to the nonstandard floppy form factor. And any games I could get would have to come form the UK so very expensive and hard to get. It did have CP/M, BASIC and Logo so I also learned about that. The biggest use out of that system was once I typed up an Eliza chatbot BASIC program from a library book. Its quite simplistic but turned out very entertaining to young children like our close neighbors young kids and much later my young nephew/niece. They would always ask for the "Green monitor" anytime they visited and spend hours on it. Much later when we meet up they still recall that "Green monitor" they had fond memories of.
- sedatk 3y agoThat was probably an Amstrad PCW series computer. Never used one, but heard a lot about them. The machines of the era were very remarkable that they made the most of its users write programs, something we see rarely these days.
- pkaye 3y agoYes I looked it up and it was one of those Amstrad PCW computers.
- notorandit 3y agoWhen I see this type of marvels I stare at my mobile phone and think about the amount of wasted power. Such powerful hardware should be able to let me do a lot of things and instead it doesn't.
- deleted 3y ago[deleted]
- rogerkirkness 3y agoBattery life. Compute has overshot battery life.
- Affric 3y agoIs it battery life and thermals?
- rogerkirkness 3y agoThat too!
- jbverschoor 3y agoMaximum power dissipation 0.79 Watt
- actionfromafar 3y ago99% of compute power is wasted. You just know a 1GHz Z80 mobile phone with SymbOS would be smooth as silk...
- nxobject 3y agoIn line with that, it’s crazy to think how portable 8-bits could once be powered off standard AA batteries…
- jhbadger 3y agoOh, even 32-bit machines (the pre-ARM Palm PDAs in the 1990s which used the 32-bit Dragonball processor) used standard alkaline batteries (3 AAAs)