If you are on beginning on OS developing, you have five choices:
1.
Real mode. Simplicity. BIOS does all the work for you, you can access the machine ports with IN and OUT just like pmode does. In pure real mode exists a segmentation - each segment is splitted to 64K. Simple. You can use multitasking too, without worries.
They are also the limitations - you can access no more than 1 MB of RAM and BIOS is not good for every action your OS does, like RS232 COM terminal - i have this written by hand, not using BIOS (except basic text I/O routines etc.). In other words, you will have 16-bit operating system, and, dated.
2.
Unreal mode, a.k.a. Big Real Mode/Flat mode/Voodoo mode.
This is a modification of real mode - you can access more than 1 MB of RAM, theoretically, to pmode segment limits - 4 GB (!). BIOS, of course, allowed. But unreal mode has some limitations too:
Accessing up to 4GB RAM is accepted only by data segment registers; CS, IP, SS,SP and other seg registers are unaffected. So the code size must be less than 64K or UPXed, just like real mode.
BIOS doesn't like that you are combining unreal mode with it - if you want to use unreal mode properly, just load the data from BIOS onto conventional memory (640K) and THEN move above 1 MB limit. (And clear the used memory in 640K limit). Multitasking is, by the way, allowed.
Using unreal mode you will get a 16-bit operating system but the OS will be not that limited as standard RM is. I use this mode too.
3.
Protected mode.
Do you feel the difference between real mode? No 1 MB limit, no 64K code limits anymore, all registers are 32-bit (i think), there is a protection system and many more, like big chaos
![Smile :)](./images/smilies/icon_smile.gif)
if you are converting your OS from real mode to pmode. You will need to learn how to live without BIOS present, also, new memory managment. You must do it all with REP MOVS,OUT,IN,MOV,etc. No INT.
4.
Virtual 8086 mode, a.k.a. V8086 or vm8086 mode.
This is a sub-mode of protected mode, when you can access BIOS and real mode things. You will do all this by multitasking (task switch seg), and in protected mode. Switching and working V8086 mode isn't that easy so most programmers are here using other modes.
5.
Long mode.
I dunno much of information about this mode. But I think this is the native mode of 64-bit processors.
The choice is yours.
![Wink ;)](./images/smilies/icon_wink.gif)
inflater