Wednesday, 24 February 2010

Smooth as a baby's bum

Well I didn't end up getting out, but I had a break for a while. I also started thinking about what I want to do now I have interrupts working and decided I couldn't be bothered doing too much with the vblank demo. But since there was nothing on TV for a bit I tidied it up and committed it as is.

It's moving smoothly, honest.

Yes, not much of a screenshot, but I thought the page needed some colour and a break from all the text of late. It just smoothly scrolls from one screen to the other and back again, drawing one box on the lower screen every time it's fully hidden. Demo in irq-scroll.c, with the interrupt code from yesterday in exceptions.S.

So what to do next. Well there's still the idea of a little game or demo or so, but i'm lacking a bit of inspiration, and besides, a bit of support to actually run the code in, for things like sound. So i'm starting to think about working on a little real-time micro-kernel.

Many months ago I had been writing one for x86 but got a bit pissed off with all the PC crappyness, and found something more interesting to do instead. So i'll probably start with that, although i'm not sure how much i'll end up using (not that I can remember the state I left it in anyway). For example, currently it does all the VM and process management inside the kernel (it made it simpler at the time), but I want to move that to a process instead so the kernel can work without any pre-emption or locks. Basically the goal is to make the kernel as simple as possible (nano-kernel?) without the simplification getting in the way. What I had been working towards was something like a mix of Minix 3 and AmigaOS; taking features like memory protection and processes from Minix, in addition to the asynchronous non-copying message passing, shared libraries, tasks, and the device mechanism from AmigaOS, with a bit of a reworking to make it all fit. Ahh well, maybe a tad on the optimistic side so I wouldn't hold my breath, on the other hand apart from device drivers there's not all that much to the core of such a design.

Not sure if i'll put it in PuppyBits or another project, but for now I still need to work out some basic routines like context switching and so on so i'll definitely put that stuff in PuppyBits at the least.


Ender said...

I don't suppose you ever managed to get a proper signal out on svideo? There's a test bit somewhere that brought up the timing bar (NTSC only, I think) but when I disabled it, I got nowt.

Also, I've been working on raw audio, it's a pain. Somethings seriously distorting my signal. I've looked at your code a little, going to try some of it tomorrow but the docs are absolutely, breathtakingly difficult to follow :)

NotZed said...

(hmm, finally found the post - bloody blogspot makes it impossible to find recent comments)

... I just haven't had the inclination to work on this for some time, but ... I'm pretty sure I got svideo output working ok. It turned out I had a broken cable to start with, but once I replaced that I got a decent enough signal. Most of the graphical demos (should?) output a portion of the window to s-video too.

As for sound ... yeah the sound chip is surprisingly complex for what it does. At a complete guess it sounds like some gain setting along the chain is out. Took me days to get it all turned on properly and I still didn't understand it all. Hmm, I have a tickle of a memory coming back through the grog haze ... definitely some issue with gain settings. Check the audio code i did, I think there's some comments about some weirdness there IIRC.