Category Archives: Operating System Development

My OS Programming Is Lacking Motivation

I’ve been lacking motivation on making an OS, little bursts of energy scramble about here and there, but there’s nothing really driving me. On the other hand making a SubOS seems like a lot of fun right now. The reason is, I know I can do it, and I have the motivation (from competition). The competition at the operating system’s communities doesn’t seem to be too high, and it seems more lonely and loose-knitted. I’m having trouble finding good tutorials for things, things don’t work due to version differences, and code acts weird depending on your assembler compiler. I’m having trouble with the linker, and I want to write my own bootloader, but everything seems to point to using GRUB. Things don’t match up, it’s hard code, and I would really rather develop something I know some people will try. Where as with most homebrew x86 (PowerPC ones too, but the things it there aren’t too many of those) OS’, people don’t give them much thought. No one wants a DOS prompt, when they can have another OS. With a SubOS, at least people download and try them. You might get flamed, but you get some good comments too. With OS programming, the homebrew audience is small (unless your involved with the Linux Kernels), like a kid running a puppet show in his backyard. If I do decided to develop one, or get something from my small bursts of energy, it will probably be a 16 bit one for starters. Then I’ll move on to tougher territory. Some people say switching later is a pain the arse, but for me it will probably be easier once I learn a little more about it all in general. So even though it might be tough to switch, it will probably be tougher to go right to 32 bit programming. Well, there’s my rant. So long folks.




Filed under Coding, General, Motivation, Operating System Development, Operating Systems, Software, SubOS

My Work Unrecognized

I’ve been searching a lot for a problem recently with this kernel tutorial.  I don’t know the problem, I compile all the assembler and c, then comes the linker and I get a problem.  It says it cannot recognize the object file.  Oh well, I’ll figure something out.  Anyways, about the title, my scripts, they are being downloaded.  I have thrity-one downloads, but almost no replies on them.  I don’t get it.  Oh well, I guess that’s just how people are.  There’s my short little rant for today folks.



Leave a comment

Filed under Coding, Open Source, Operating System Development, Scripting

SubOS News Blog

I’m learning a little bit more about assembler and trying to learn some more each day. I want to assembler the resouces and then learn how to make my own operating system. I also started a SubOS News site, if you don’t know waht a SubOS is, a SubOS is an application that is also commonly called a “GUI'”, “Fake OS”, or “Shell”. I like them, some people don’t. I guess it just depends. The site can be found here. It’s going to be worked on soon, don’t worry!



Leave a comment

Filed under Blogging, Coding, General, Links, Operating System Development, Operating Systems, SubOS

Assembler and OS Programming, VBScript and GML, and an E-Zine

I’ve been doing a lot of thinking/working. I’ll start from the beginning. Yesterday after looking at the bootloader I decided to learn some Assembler(Asm) before moving onto actually coding my own bootloader and learning more about the kernel. It will definitely be better in the long run. I found a great tutorial, but some of it doesn’t work with NASM, so I got A86. It can generate objects so I could use it to write an OS. Not sure if I will though. Anyways, I also had a bright(wink) idea to make a script that can use the SAPI and Microsoft Agent for the wonder game making program Game Maker by Mark Overmars. So I used the built in language GML, and used it to generate VBS script files and execute them during the game since GML is a little limited with internal use. It can use DLL’s and external files well though, opening up a world of possibilities. Some people have their antivirus programs set to alert for VBScript, but there’s no virus. Check for yourself if you run the example or create one, it will create the VBS files in C:\. As for the e-zine, it’s just a hunch, but I’ve been thinking about mixing a slew of my articles, writing new ones, and maybe gathering some contributors (if they like the initial few issues), and making an e-zine on coding. I was recently inspired by showing somebody some Asm and C++ stuff on the wonderful site 64digits, they are my file hosting service of choice. It’s also a Game Maker (GM) community, so it’s not a place similar to MegaUpload or another on of those services. So check out my links, there’s only eight of them. Check ’em out. So I guess this is the end, that is until I blog again.



P.S.: This blog is tagged Open Source because the scripts are open source. Have fun. Bye,and no, I won’t edit again.

Edit: Actually, I didn’t edit the above. I just wrote it after the usual Cheers statement. So this is the first actual edit. I edited this to tell you I ran spell check. Just thought I’d let you know, because it’s polite (I also like acknowleging I made an edit).

Leave a comment

Filed under Coding, Game Programming, Ideas, Open Source, Operating System Development, Scripting, Software

OS Devloping Tutorial, Easy As Pie

Easy OS Developing Tutorial

I’ve found some articles on developing a REAL operating system, easier than most. I’ll give you a slight tutorial, but don’t think I know a lot about OS development, beacase I know next to zero. I just give you the steps that worked for me:

1. Download NASM. Extract in folder C:\OS and re-name all the NASM-????? funky crap to nasm.
2. Paste this code into Notepad:

[BITS 16] ; 16 bit code generation
[ORG 0x7C00] ; Origin location

; Main program
main: ; Label for the start of the main program

mov ax,0x0000; Setup the Data Segment register
; Location of data is DS:Offset
mov ds,ax; This can not be loaded directly it has to be in two steps.
; ‘mov ds, 0x0000’ will NOT work due to limitations on the CPU

mov si, HelloWorld; Load the string into position for the procedure.
call PutStr; Call/start the procedure

jmp $ ; Never ending loop

; Procedures
PutStr: ; Procedure label/start
; Set up the registers for the interrupt call
mov ah,0x0E; The function to display a chacter (teletype)
mov bh,0x00; Page number
mov bl,0x07; Normal text attribute

.nextchar; Internal label (needed to loop round for the next character)
lodsb ; I think of this as LOaD String Block
; (Not sure if thats the real meaning though)
; Loads [SI] into AL and increases SI by one
; Check for end of string ‘0’
or al,al; Sets the zero flag if al = 0
; (OR outputs 0’s where there is a zero bit in the register)
jz .return; If the zero flag has been set go to the end of the procedure.
; Zero flag gets set when an instruction returns 0 as the answer.
int 0x10; Run the BIOS video interrupt
jmp .nextchar; Loop back round tothe top
.return ; Label at the end to jump to when complete
ret ; Return to main program

; Data

HelloWorld db ‘Hello World’,13,10,0

; End Matter
times 510-($-$$) db 0; Fill the rest with zeros
dw 0xAA55 ; Boot loader signature

3. Save the file in C:\OS (so when you use DOS directory changing is easier) as mybootloader.txt
4. Go to Start, Run, Cmd, Ok.
5. cd C:\OS\nasm\nasm
6. nasm C:\OS\mybootloader.txt, this should produce a file called mybootloader in your C:\OS folder.
7. Insert a floppy into your drive and format it (My Computer, Right-Click, Format[/i).
7. Get rawwrite, and extract.
8. Open it up rawwritewin.exe, make sure you are on the [i]Write
tab, and browse for an image file, make sure you select All Files under Files of Type: at the bottom of the dialog.
9. Find the mybootloader file, generated by NASM.
10. Select it and click Write.
11. Next to run your OS off the floppy you could leave it in and reboot your system, or as I did pop it in a less important computer’s drive and boot that one up. Just in case.
12. Presto! A hello world OS!
13. I accept no responsibilty for any errors that might result.

Thanks for reading,



Note: This was copy and pasted from my original here. It’s what I think is an easier version of this hello world bootloader by Daniel Rowell Faulkner, who’s code this is. Thanks Daniel. I learned about the RawWrite tools from here.



Edit: Make sure that the file generated by NASM is exactly 512 bytes.

Edit 2:  This is code is called the bootloader of your OS.


Filed under Coding, Open Source, Operating System Development, Operating Systems