Mixing Assembly and C-code

0
Mixing Assembly and C-codeWhy mix programming languages?After the last tutorial, you now feel like king of the world! =) You're eager to jump into the action, but there's one problem. Even though assembly is a powerful language, it takes time to read, write and understand. This is the main reason there ARE more programming languages than just assembly =). Now that we have a working 32-bit boot...

LBA to CHS

0
LBA to CHSThis is a (very) simple LBA to CHS tutorial. I assume that you know how to Add, Subtract, Divide and multiply and that you know what Assembly is and possibly the basics of it. (though I go over the basics to remind you in case you have forgotten) Brief idea of what the physical drive is like:A normal floppy drive (which I will use for this example) contains 2 main parts. Sector: The area on the disk Cylinder: aka Track, one circle at the same radius from the center. Head: The top or bottom side of the disk? (In hard disks you have...

Loading Sectors

0
Loading Sectors This tutorial is to show you how to load sectors from a floppy disk. Variations will be needed to get this code to work on most other disks. In the bootloader code you can use a specific BIOS interrupt to load the sectors from the floppy disk for you. But unfortunatly it addresses the drive in the form of heads, cylinders and sectors. Ideally we want to be able to refer to the floppy disk in terms of sectors only (chunks of 512bytes) the code to do that is in the LBA to CHS tutorial. Though to use that you need to first understand...

LBA HDD Access via PIO

0
LBA HDD Access via PIOEvery operating system will eventually find a need for reliable, long-term storage. There are only a handful of commonly used storage devices: Floppy Flash media CD-ROM Hard drive Hard drives are by far the most widely used mechanism for data storage, and this tutorial will familiarize you with a practical method for accessing them. In the past, a method known as CHS was used. With CHS, you specified the cylinder, head, and sector where your data was located. The problem with this method is that the number of cylinders that...

Multitasking Howto

0
Multitasking HowtoThis little HowTo is intended to show, how to set up a multitasking environment for a custom OS. If you have questions: don't hesitate to drop me a mail. For the beginning: you will of course need several Knowledge like how to handle linked Lists or BinaryTrees, which I won't cover in this text. I will show you the basics of a stack-based multitasking subsystem. Multitasking on a single processor machine: to switch between a bunch of processes in a quick manner: each of them posesses for either a certain time or until...

How to program the DMA

0
How to program the DMAIntroductionWhat is the DMA? The DMA is another chip on your motherboard (usually is an Intel 8237 chip) that allows you (the programmer) to offload data transfers between I/O boards. DMA actually stands for 'Direct Memory Access'. An example of DMA usage would be the Sound Blaster's ability to play samples in the background. The CPU sets up the sound card and the DMA. When the DMA is told to 'go', it simply shovels the data from RAM to the card. Since this is done off-CPU, the CPU can do other things while the data ...

GUI Development

0
GUI Development Why use this document?The purpose of this tutorial is to try to explain how to create a simple Graphical User Interface Program for use in a DOS environment or for use in a home-brew type of Operating System. I was actually asked to write this tutorial, which will some day be posted on the internet. Requirements for this tutorialFor this tutorial on GUI developement, I HIGHLY recommend...

Multiprocessing Support for Hobby OSes Explained

0
Multiprocessing Support for Hobby OSes ExplainedReference MaterialsIntel Multiprocessing Specification Intel Software Developer's Manual Volume 3 Intel 82093AA I/O APIC Manual IntroductionMany hobby operating system projects start out with very modest goals of being able to boot off of a floppy and load a kernel written in a high level language like C or C++. Some progress further, to the point that they can manage virtual memory and multiple processes, but very few of these operating systems ever get to the point that they support multi-processing...
 

Total Pageviews

Pageviews