Your first attempt to make a OS
Your first attempt to make a OS
Hey everyone,
i started with OS dev straight away from my "kernel" named TextLiner OS, that was full in ASM and ran on all 8086's. And what's your first attempt at a OS?
inflater
i started with OS dev straight away from my "kernel" named TextLiner OS, that was full in ASM and ran on all 8086's. And what's your first attempt at a OS?
inflater
My web site: http://inflater.wz.cz (Slovak)
Derrick operating system: http://derrick.xf.cz (Slovak and English )
Derrick operating system: http://derrick.xf.cz (Slovak and English )
My first attempts were a little sad to say the least. It was when I first started programming. I started creating a command shell for my Windows 95 system. (Obviously the best version of Windows.) It never really got anywhere.
However, my first real OS was about a year later, after I had tried booting some Windows programs from a floppy disk, not currently knowing about external dependencies. Yet, to try to get something booted, I had found a C++ OSdev tutorial on the web somewhere, and got that working.
Then I started my own OS, based off the OS Development for Dummies Kernels kernels. Granted, I didn't know much of programming at the time, but I improved it bit by bit. That is, until I got to creating a memory manager and couldn't realize why anyone would want to dynamically located memory. That's when I went back to application programming for a while.....I'm just now restarting my OS. Although, I'm starting from a new code base written in assembly instead of C.
Toodles.
However, my first real OS was about a year later, after I had tried booting some Windows programs from a floppy disk, not currently knowing about external dependencies. Yet, to try to get something booted, I had found a C++ OSdev tutorial on the web somewhere, and got that working.
Then I started my own OS, based off the OS Development for Dummies Kernels kernels. Granted, I didn't know much of programming at the time, but I improved it bit by bit. That is, until I got to creating a memory manager and couldn't realize why anyone would want to dynamically located memory. That's when I went back to application programming for a while.....I'm just now restarting my OS. Although, I'm starting from a new code base written in assembly instead of C.
Toodles.
C8H10N4O2 | #446691 | Trust the nodes.
- Combuster
- Member
- Posts: 9301
- Joined: Wed Oct 18, 2006 3:45 am
- Libera.chat IRC: [com]buster
- Location: On the balcony, where I can actually keep 1½m distance
- Contact:
The first go at a true operating system, i started off with a lousy bootloader displaying "Welcome to my OS", which later loaded a second stage that contained a prompt that accepted the cliche commands: help, info, reboot.
Before that i tried a few times to kick DOS' butt out of conventional memory and go run a stack-switcher between programs saying A and B in real mode, which horribly failed. Wether that was an true attempt at osdeving I leave up to you to decide. But at that time assembly was still a foreign language to me...
I should have backup copies of both somewhere...
Before that i tried a few times to kick DOS' butt out of conventional memory and go run a stack-switcher between programs saying A and B in real mode, which horribly failed. Wether that was an true attempt at osdeving I leave up to you to decide. But at that time assembly was still a foreign language to me...
I should have backup copies of both somewhere...
My first OS, other than "hello world" ones, were made up of a template to get me into pmode, from this template i added as many parts to a OS as possible, but unless it needed some other part, i tyred to keep them like simple demos of doing a part of a OS, in other words, i did not just keep adding the parts.
Then after i had a lot of there demos coded, i glued then togeather by adding a CLI.
Still have all the parts on disks.
Then after i had a lot of there demos coded, i glued then togeather by adding a CLI.
Still have all the parts on disks.
Last edited by Dex on Wed Apr 04, 2007 10:10 pm, edited 1 time in total.
- AndrewAPrice
- Member
- Posts: 2299
- Joined: Mon Jun 05, 2006 11:00 pm
- Location: USA (and Australia)
My first OS project was a graphical shell/desktop for DOS I made in QuickBasic. Programs were big scripts (using a cut down version of BASIC) that were interpreted by the shell. Multitasking was achieved by switching the current interpreted line and local variables. I wrote a web browser, paint program, and word processor in my interpreted BASIC..
I thought it was impressive back when I was 12 (6 years ago).
EDIT: It was called BINX (something Interactive something something).
I thought it was impressive back when I was 12 (6 years ago).
EDIT: It was called BINX (something Interactive something something).
Last edited by AndrewAPrice on Mon Apr 09, 2007 4:26 pm, edited 1 time in total.
My OS is Perception.
That sounds like my Qbasic GUI, thouse filled box's, with two dark line on one side and top, and two light lines on other side and bottom. Boy did they look good or so i thoughtMessiahAndrw wrote:My first OS project was a graphical shell/desktop for DOS I made in QuickBasic. Programs were big scripts (using a cut down version of BASIC) that were interpreted by the shell. Multitasking was achieved by switching the current interpreted line and local variables. I wrote a web browser, paint program, and word processor in my interpreted BASIC..
I thought it was impressive back when I was 12 (6 years ago).
- Kevin McGuire
- Member
- Posts: 843
- Joined: Tue Nov 09, 2004 12:00 am
- Location: United States
- Contact:
The very first programming in me inside began with writing .BATs for MS-BOSS and Windows. The "products" I've made was preferably system detection and games.
I was playing with QBASIC too when i was 10 (and with MS VC++ too ), after that I got a, well, QBASIC that could compile to EXE. The process how I found it was not very legal though...
I found on my local library a "Do you want to try it with programming?", when I was 11. It was a bit dated book from year 1984 or so, oh sweet communism . Actually, it was programming in BASIC for microprocessors Z80 and MOS 6502. The code was magically backward-compatible with Qbasic on my former 80486DX4 and Windows 95. So I've made a simple "racing" games, jokes ("CMOS damaged" with flickering screen and bleeping noises), and text adventure games. It was fun alright, and simple.
In 12, I discovered emu8086 and I saw a simple operating system "kernel" there. That was my first attempt to make a OS, it was a curious boot sector with kernel no larger than 3 kB
inflater
I was playing with QBASIC too when i was 10 (and with MS VC++ too ), after that I got a, well, QBASIC that could compile to EXE. The process how I found it was not very legal though...
I found on my local library a "Do you want to try it with programming?", when I was 11. It was a bit dated book from year 1984 or so, oh sweet communism . Actually, it was programming in BASIC for microprocessors Z80 and MOS 6502. The code was magically backward-compatible with Qbasic on my former 80486DX4 and Windows 95. So I've made a simple "racing" games, jokes ("CMOS damaged" with flickering screen and bleeping noises), and text adventure games. It was fun alright, and simple.
In 12, I discovered emu8086 and I saw a simple operating system "kernel" there. That was my first attempt to make a OS, it was a curious boot sector with kernel no larger than 3 kB
inflater
My web site: http://inflater.wz.cz (Slovak)
Derrick operating system: http://derrick.xf.cz (Slovak and English )
Derrick operating system: http://derrick.xf.cz (Slovak and English )
My first project was a microkernel back in 2003. It was written as a single threaded kernel (it did have multi-tasking, but only for user threads) which turned out to be rather painful approach, and while I had a basic keyboard driver running as a normal process, that was more or less how far it got.
The second iteration then, was a multi-threaded kernel in the same spirit. It actually advanced to the point where it had relatively straightforward messaging IPC, with capability transfers and long messages working, but the idea of having memory management in user processes proved a bit hard to get right, so I kinda forgot the project. While the kernel was more advanced in several ways, it actually never supported stuff like a keyboard.
This year then, I picked up the previous kernel, hacked some minor things with it, fixing some features, until I'd actually have to figure out the memory management problem. Once I got there, I came to the conclusion that it was simply too much trouble to put everything into the userspace, and I'd love to do OS development, but if I continued with the pure microkernel approach, I'd just get frustrated, and forget the project again.
So I started my current project, this time writing a more traditional kernel, with at least device drives in kernel, so I could actually get it somewhere, and not get stuck with non-sense.
Ofcourse my current kernel advanced to the point where it is quite fast, since I could get most of the basic support code (virtual memory manager, interrupts, scheduling/semaphores, timers) from my previous kernel, more or less simply by copypasting and removing a few dependancies here and there. In fact, some of the code in my current kernel was originally written for my first project. In that sense it was good to design a generic microkernel first, because the basic code doesn't rely much on what's on top of it.
The second iteration then, was a multi-threaded kernel in the same spirit. It actually advanced to the point where it had relatively straightforward messaging IPC, with capability transfers and long messages working, but the idea of having memory management in user processes proved a bit hard to get right, so I kinda forgot the project. While the kernel was more advanced in several ways, it actually never supported stuff like a keyboard.
This year then, I picked up the previous kernel, hacked some minor things with it, fixing some features, until I'd actually have to figure out the memory management problem. Once I got there, I came to the conclusion that it was simply too much trouble to put everything into the userspace, and I'd love to do OS development, but if I continued with the pure microkernel approach, I'd just get frustrated, and forget the project again.
So I started my current project, this time writing a more traditional kernel, with at least device drives in kernel, so I could actually get it somewhere, and not get stuck with non-sense.
Ofcourse my current kernel advanced to the point where it is quite fast, since I could get most of the basic support code (virtual memory manager, interrupts, scheduling/semaphores, timers) from my previous kernel, more or less simply by copypasting and removing a few dependancies here and there. In fact, some of the code in my current kernel was originally written for my first project. In that sense it was good to design a generic microkernel first, because the basic code doesn't rely much on what's on top of it.
The real problem with goto is not with the control transfer, but with environments. Properly tail-recursive closures get both right.
- AndrewAPrice
- Member
- Posts: 2299
- Joined: Mon Jun 05, 2006 11:00 pm
- Location: USA (and Australia)
Do you mean that text skiing/racing game that looked similar to below?inflater wrote:So I've made a simple "racing" games,
Code: Select all
# !! #
# !! #
# !! #
# !! #
# !! #
#!! #
#! #
GAME OVER. PRESS ANY KEY TO CONTINUE.
My OS is Perception.