You are not logged in.


#1 2005-05-12 01:23:34

smiddy
Active member
Registered: 2005-02-15
Posts: 183
PM

VGA text modes...

Hi All,

I haven't seen any traffic here in a while and figured I spur some chat on VGA text modes. I have been reseraching them a bit and am having difficulty finding definitive information on all the ports. Chris Giese has some good information and sample source. I was wondering what the plans are for BOS and are you intent on providing a MODE command to provide different text modes like 60 by 90, 50 by 80, and so forth?


- [color=red]s[/color][color=blue]m[/color][color=red]i[/color][color=blue]d[/color][color=red]d[/color][color=blue]y[/color]

Offline

 

#2 2005-05-12 13:57:42

bubach
Administrator
From: Trollhättan, Sweden
Registered: 2005-02-15
Posts: 367
PM  Website

Re: VGA text modes...

I have thought about that, but i wont make that until when/after user programs can be runned. I think that I got the info needed for all of them, and btw as I can use the BIOS I wont have any problems anyway.. wink
Things are finally going forward in my development, fixed MM and only a few fdd bugs left before I can start with the VFS.. smile

Check out: http://bos.asmhackers.net/docs/vga_without_bios/
Especially snippet_3 could be good reading.. wink

/ Christoffer

Offline

 

#3 2005-05-13 00:44:43

smiddy
Active member
Registered: 2005-02-15
Posts: 183
PM

Re: VGA text modes...

Hey thanks! I have been looking at Tauron30 and Modes.c for my inspiration. I am also reading for the understanding of programming the ports: http://www.osdever.net/FreeVGA/home.htm

I also found where one person was experimenting with different x by y coordinate sizes. It did seem interesting, but I'm looking for concrete useages like Tauron30 and Chris Giese's 90x60 and 90x30 code, which doesn't realy explain the how and why.

I have read that you can create font sizes 8 or 9 pixels wide, with hieghts of 1 to 32. With the different screen sizes it could be interesting creating a number of fonts for different sizes.

I was going to wait until I was able to load files too, dynamically, but I like seeing the startup of my code on the screen and if I can get it all on there by increasing the number of characters I can display then that is what I'm going to do. But, as an interum step, I use Chris Giese's code with a few modifications (removing the org and DOS dependencies), I call it on bootup. But alas my startup information goes beyond 60 rows, so I will have to devize a buffer for later saving and/or displaying.

I would be interested in seeing your memory manager. I devized one that seems to work ok at present. I haven't put it through the ringer yet though. I strayed away from a bitmap and use a simple database in memory to keep track. This allows me to assign memory to the byte level. It will get interesting however once I access too much memory, since I haven't implemented a safegaurd for too many records, or linking the database, its pretty flat right now. Here's a screen shot of memory display from Bochs:

Code:

000A0000h 000BFFFFh       131,072 02h  VGA Buffer Area
000C0000h 000FFFFFh       262,144 02h  ROM/BIOS Area
00100000h 00FFFFFFh    15,728,640 02h  smiddyOS code
01000000h 010007FFh         2,048 02h  smiddyOS v1.00
01000800h 27FFFFFFh   654,309,376 01h  <Free Useable Memory>
28000000h FFFFFFFFh 3,623,878,656 02h  Unuseable addressable memory area
Start     End       Size (bytes)  Type Owner/Description
--------- --------- ------------- ---  -----------------
00000000h 000003FFh         1,024 02h  Interrupt Vector Table (IVT)
00000400h 000004FFh           256 02h  BIOS Data Area (BDA)
00000500h 000005FFh           256 02h  smiddyOS Data Area (OSDA)
00000600h 0009FBFFh       652,800 02h  smiddyOS code
0009FC00h 0009FFFFh         1,024 02h  Extended BIOS Data Area (EBDA)
000A0000h 000BFFFFh       131,072 02h  VGA Buffer Area
000C0000h 000FFFFFh       262,144 02h  ROM/BIOS Area
00100000h 00FFFFFFh    15,728,640 02h  smiddyOS code
01000000h 010007FFh         2,048 02h  smiddyOS v1.00
01000800h 27FFFFFFh   654,309,376 02h  WISECRACKERS and Cheese!
28000000h FFFFFFFFh 3,623,878,656 02h  Unuseable addressable memory area
Unassigning memory...
Start     End       Size (bytes)  Type Owner/Description
--------- --------- ------------- ---  -----------------
00000000h 000003FFh         1,024 02h  Interrupt Vector Table (IVT)
00000400h 000004FFh           256 02h  BIOS Data Area (BDA)
00000500h 000005FFh           256 02h  smiddyOS Data Area (OSDA)
00000600h 0009FBFFh       652,800 02h  smiddyOS code
0009FC00h 0009FFFFh         1,024 02h  Extended BIOS Data Area (EBDA)
000A0000h 000BFFFFh       131,072 02h  VGA Buffer Area
000C0000h 000FFFFFh       262,144 02h  ROM/BIOS Area
00100000h 00FFFFFFh    15,728,640 02h  smiddyOS code
01000000h 010007FFh         2,048 01h  <Free Useable Memory>
01000800h 27FFFFFFh   654,309,376 02h  WISECRACKERS and Cheese!
28000000h FFFFFFFFh 3,623,878,656 02h  Unuseable addressable memory area
Unassigning memory...
Start     End       Size (bytes)  Type Owner/Description
--------- --------- ------------- ---  -----------------
00000000h 000003FFh         1,024 02h  Interrupt Vector Table (IVT)
00000400h 000004FFh           256 02h  BIOS Data Area (BDA)
00000500h 000005FFh           256 02h  smiddyOS Data Area (OSDA)
00000600h 0009FBFFh       652,800 02h  smiddyOS code
0009FC00h 0009FFFFh         1,024 02h  Extended BIOS Data Area (EBDA)
000A0000h 000BFFFFh       131,072 02h  VGA Buffer Area
000C0000h 000FFFFFh       262,144 02h  ROM/BIOS Area
00100000h 00FFFFFFh    15,728,640 02h  smiddyOS code
01000000h 27FFFFFFh   654,311,424 01h  <Free Useable Memory>
28000000h FFFFFFFFh 3,623,878,656 02h  Unuseable addressable memory area
Start     End       Size (bytes)  Type Owner/Description
--------- --------- ------------- ---  -----------------
00000000h 000003FFh         1,024 02h  Interrupt Vector Table (IVT)
00000400h 000004FFh           256 02h  BIOS Data Area (BDA)
00000500h 000005FFh           256 02h  smiddyOS Data Area (OSDA)
00000600h 0009FBFFh       652,800 02h  smiddyOS code
0009FC00h 0009FFFFh         1,024 02h  Extended BIOS Data Area (EBDA)
000A0000h 000BFFFFh       131,072 02h  VGA Buffer Area
000C0000h 000FFFFFh       262,144 02h  ROM/BIOS Area
00100000h 00FFFFFFh    15,728,640 02h  smiddyOS code
01000000h 01000002h             3 02h  Ducks are better because of their webbed feet!
01000003h 27FFFFFFh   654,311,421 01h  <Free Useable Memory>
28000000h FFFFFFFFh 3,623,878,656 02h  Unuseable addressable memory area
Boot up time> 20:39:51 System Time> 20:39:54 Current Time> 20:40:29

As you can see from the info I'm using an E820 like record. There is more to the record that isn't shown, like the handle of it. All in all it seems to work, so I'm about ready to work on loading drivers in unreal mode into a temporary location and then when I hit protected mode I move them to their more permanent spot (I'm still working out the details). At the same time implementing the IDT and interrupts. I expect that will be a barrel of laughs just putting my mind around when, where, how, and why.

Again, thanks for the info...


- [color=red]s[/color][color=blue]m[/color][color=red]i[/color][color=blue]d[/color][color=red]d[/color][color=blue]y[/color]

Offline

 

#4 2005-05-13 06:54:39

bubach
Administrator
From: Trollhättan, Sweden
Registered: 2005-02-15
Posts: 367
PM  Website

Re: VGA text modes...

No problem. I expect it to take some time finding an alternative textmode resolution that looks ok
on my screen. Maybe I'll provide a homemade "textmode" with VESA? That way, i could get the
font looking as nice (and small) as in the BOCHS windows.. wink

I use E801 to get the mem size, I think it's more compatible. And then I let the kernel have (C) on
everything below 1 mb.
So when the computer starts, everything from 1 mb and up is free mem. For allocation and freeing
I do like this: I have one pointer that points to the first free memory location, at that location, f. ex.
at 1mb, I keep a header (only free memory chunks have this header) where I store:

Previous pointer - pointer to the previous free mem block, or 0 if none
Size - Size of this memory block
Next pointer - pointer to next free mem block, or 0 if none

When a "free" is performed, I merge the block with any continuous free memory, so that
I'll always just have: free-used-free or used-free-used, never free-free-used..

As you can see it's not very complicated, but even so I had some problems implementing
it.. :S

/ Christoffer

Offline

 

#5 2005-05-13 08:07:14

smiddy
Active member
Registered: 2005-02-15
Posts: 183
PM

Re: VGA text modes...

I haven't had the oportunity to look at VESA modes yet. But since most people use it I expect that it is pretty powerful. If you've seen SolarOS you can get a good idea of just how powerful it can be. I imagine you could make some real interesting textmodes.

The [i]free[/i] or as I call it [i]unassign[/i] took me a while to implement too just for that same reason. It was easy to unassign a block, but insuring that the database was defragmented meant data arbitration and manipulation. It took some work but it seems to work okay under my limited tests so far.

The way you implemented your MM is very interesting. I look forward to seeing that too.

As for getting the memory size, I use all the more likely used methods and base the outcome of what is installed by the one with the most memory available. Here's a peek:

Code:

smiddy's OS (C) 2004, 2005. All Rights Reserved.
Version 1.00.00.00000093
Linear address: 000C0C30h Bytes/character = 8
Linear address: 000C1430h Bytes/character = 8
Linear address: 000C2230h Bytes/character = 8
CPU: Pentium or equivelent
A20 Gate: Initializing; A20 gate enabled...
E820: 671,088,640 bytes.
E801: 671,088,640 bytes.
88xx: 67,108,864 bytes.
CMOS: 67,108,864 bytes.
Entering UnReal Mode...
Probe: 671,088,640 bytes.
Mapping Memory 1: 671,088,640 installed: E820:
Mapping Memory 2: Bitmap Initialized at 14MB: 654,311,424 bytes free for use.
Stack Initialized at 00FFFFFFh; Growing Down.
We made it to PMode, WOW!
Boot up time> 03:57:48 System Time> 03:57:51 Current Time> 03:58:28

As you can see, I go through three BIOS calls, CMOS, and Probe memory. Each BIOS call has it's own ability to determine if the information is ok or nonsense. On a couple of BIOSes I found weird numbers from E801. Also some emulators like DOSBox don't implement it correctly, so I ensured the code could recognize these potential errors.

I'll have to share my recipe with you once I finish device driver installations (and uninstalls) and have had a chance to beautify the code without al my rants on fixes and my elementary ASM coding practices. ;-)


- [color=red]s[/color][color=blue]m[/color][color=red]i[/color][color=blue]d[/color][color=red]d[/color][color=blue]y[/color]

Offline

 

#6 2005-05-13 10:45:44

bubach
Administrator
From: Trollhättan, Sweden
Registered: 2005-02-15
Posts: 367
PM  Website

Re: VGA text modes...

You could do some intresting things with VESA. Like maybe a CLI-GUI hybrid? smile
BTW, I know of at least one standard VGA mode that can be used both for normal text 80*25
and 16 color graphics. Thats intresting (IMO).

I would have used more then E801 if I wouldn't be so damn lazy.. I found Chris Giese's
http://my.execpc.com/~geezer/osd/boot/biosmem.asm much helpful when coding that.

BTW, I basiclly don't know anything about your OS, except for the things you wrote here,
what "kind" is it? What languge(s) are you using? Etc, etc.. Any homepage?

/ Christoffer

Offline

 

#7 2005-05-13 11:43:33

smiddy
Active member
Registered: 2005-02-15
Posts: 183
PM

Re: VGA text modes...

At the risk of being off-topic <cough> I suppose I can give a few tidbits here about smiddyOS.
It is written in FASM as well. I initially started in NASM (sound familiar?).
I was forced over due to the lack of support from NASM. I see a future for FASM where I didn't for NASM.

I have a list of features I intend to implement upon first release (I'll share them later, the list is at home).
It is basically going to host new hardware implementation I hope to work on later down the road.
It is a hobby OS, so as I go I'm learning the different aspects of each phase I work on myself.
Looking at the initial code it is apparrent that I'm learning as I go since some of the code could be severely optimized. For instance, I am inserting commas into numbers.

While I was learning ASM all over again (used to program it in the early 80's), I forgot how division was done and which registers were used. I figured I could divide eax by ebx and all would be fine.
But I ran into overflow issues and have done a compare for each magnitude of 10 in order to make certain I don't do an overflow.
I've since realized that division is a little more complex and I can avoid overflow errors if I use the conventions for ASM and division of registers.
That's one example, there are many more.

I don't have a web site as of yet.
I am currently looking to move across country and once there I will setup a website at my home where I'll have direct access to the server.

BTW, I liked your text to screen implementation so I used it as a template for my own.
As you point out in 0.03 you need to make it dynamic for different screen sizes, I have done that as well as setup an initialization routine so that you can keep track of certain parameters.
I also made most calls uniform in the registers it uses for passing varaibles too.

The current state of the OS is that the memory manager is setup and ready to be worked.
I am working on VGA text modes the passed couple of days. I'm nearly ready to implement it.
After that I am ready to setup driver management along with introducing interrupts via the IDT.
I expect that will be some fun until and may take some time to implement.

My plan is to make drivers installable and uninstallable real time.
This as you may expect will go hand in hand with hot swapping hardware that I intend to implement down the road.
This also means learning how to implement USB drivers and scanning the bus etcetera which may be time consuming...
I will be looking at hot-swapping on the PCI bus, but I expect there may be too many issues there to do it successfully.
I looked at ISA and PC-40 and they are both unable to due to the power on the bus, it isn't resilient enough to handle the power fluctuations. I'll post my list of goals when I return home this evening.

I used Chris Giese's code as a template as well as the information from his site. I experimented with probing which is against most forums/wiki ideals of memory detection. At this point I haven't ran into any problems. I expect to run smiddyOS on a limited number of machines which I hope are at least Pentium caompatible. I am thinking of it as an experimentor's OS or scientist's OS. I hope to implement an extreme calculator with a WYSIWYG interface eventually.

I must run, work, that four letter word, calls.


- [color=red]s[/color][color=blue]m[/color][color=red]i[/color][color=blue]d[/color][color=red]d[/color][color=blue]y[/color]

Offline

 

#8 2005-05-13 13:15:20

bubach
Administrator
From: Trollhättan, Sweden
Registered: 2005-02-15
Posts: 367
PM  Website

Re: VGA text modes...

I hope you don't mind me editing your post so that i becomes readable.. wink

smiddy wrote:

At the risk of being off-topic <cough> I suppose I can give a few tidbits here about smiddyOS.
It is written in FASM as well. I initially started in NASM (sound familiar?).
I was forced over due to the lack of support from NASM. I see a future for FASM where I didn't for NASM.

Well, yeah. Thats familiar.. wink

smiddy wrote:

While I was learning ASM all over again (used to program it in the early 80's)....

Haven't you done _any_ programming since then, or is it just asm you forgot? As for me, stuff like which registers that are used/affected by "mul" never really stick. I've to look it up in my printed version of Paul Carters asm tutorial.. smile

smiddy wrote:

I don't have a web site as of yet.
I am currently looking to move across country and once there I will setup a website at my home where I'll have direct access to the server.

Ok, that would be nice.. Broadband in general would be nice.. The damn town I live in was supposed to fix it for the "outsiders" that live more then 8 km from the city, but it got delayed due to the goverment withdrawing this years support for broadband "building".. Luckily my city already signed the papers for new fiber optics and radio towers ( wireless broadband for me).. But it's still delayed. *Hate living in the forrest*

smiddy wrote:

BTW, I liked your text to screen implementation so I used it as a template for my own.
As you point out in 0.03 you need to make it dynamic for different screen sizes, I have done that as well as setup an initialization routine so that you can keep track of certain parameters.
I also made most calls uniform in the registers it uses for passing varaibles too.

Hehe, I have finally fixed all those things, so in the next version it will look nicer.

smiddy wrote:

The current state of the OS is that the memory manager is setup and ready to be worked.
I am working on VGA text modes the passed couple of days. I'm nearly ready to implement it.
After that I am ready to setup driver management along with introducing interrupts via the IDT.
I expect that will be some fun until and may take some time to implement.

The IDT code won't take too long (with exchangable INT's etc), if you don't run into trubble, but the driver managment... That can take some time.. tongue

smiddy wrote:

My plan is to make drivers installable and uninstallable real time.

Thats trickier then i first thought when I started with OS-dev.

smiddy wrote:

I'll post my list of goals when I return home this evening.

Sure. But I suspect that you'll change them more and more as time goes by. Unless you'r a
good planner, and knows what your doing, compared to me when i started dreaming of
all the things my OS would do.

My first drafts must have been from when I was around 13 years old, at that time I had never done anything
harder then a few BASIC programs (and html/cgi), and didn't even know if it was possible to make your own OS.

My more serious plans started when i was 18 (2003), and had found the fasm board ( and it's osdev section), which led me to osdev.org, and osdever.net...

smiddy wrote:

I used Chris Giese's code as a template as well as the information from his site. I experimented with probing which is against most forums/wiki ideals of memory detection. At this point I haven't ran into any problems.

Same here, but as long as BIOS reports anything at all, I can settle for that.. wink

smiddy wrote:

I must run, work, that four letter word, calls.

Never heard of it.. tongue

/ Christoffer

Offline

 

#9 2005-05-14 09:26:18

AxelDominatoR
Member
From: Reggio Calabria, Italy
Registered: 2005-03-07
Posts: 43
PM  Website

Re: VGA text modes...

Wow... taking on account all of our new OSes... some big bad Redmond company will fear competition very soon wink

...maybe...
tongue


---
Axel DominatoR ^^^ HC

Offline

 

#10 2005-05-14 12:52:35

smiddy
Active member
Registered: 2005-02-15
Posts: 183
PM

Re: VGA text modes...

bubach wrote:

I hope you don't mind me editing your post so that i becomes readable.. wink

Of course not…works for me. When I’m at work and time is in a pinch, thoughts tend to run together…

bubach wrote:

Haven't you done _any_ programming since then, or is it just asm you forgot? As for me, stuff like which registers that are used/affected by "mul" never really stick. I've to look it up in my printed version of Paul Carters asm tutorial.. smile

I am a Systems Engineer by trade. That means that I usually don’t get the opportunity to do any low level work, mainly integration and testing. However, when I started out I programmed in ASM and C back in 1980-ish. So, since then it has been quite a while and several processors since then. So for the most part this is really only my hobby. I mainly deal with large-scale systems that integrate hardware and software.

bubach wrote:

Ok, that would be nice.. Broadband in general would be nice.. The damn town I live in was supposed to fix it for the "outsiders" that live more then 8 km from the city, but it got delayed due to the goverment withdrawing this years support for broadband "building".. Luckily my city already signed the papers for new fiber optics and radio towers ( wireless broadband for me).. But it's still delayed. *Hate living in the forrest*

When I lived in Felixstowe, England there was a short period of time before they privatized phone service that the government would provide services; though at that time it was cable television service. Then along came the competition of private companies. I never gave any real thought to the differences until you mentioned government run utilities. I expect that you’re at the mercy of where they intend to put broadband. Perhaps they’ll consider a country-wide wireless network? It would be less expensive than fiber runs all over to each home; though there are limitations there with wireless where fiber will continue to be viable for a very long time.

I was born in San Francisco, so I am a real urban-ite I suppose (way-way back when there was a thing called free-love and it was known for Height-Ashberry). I’ve lived in or have been to many of the more populated cities in the world. I like the convenience, which you allude to, from within the bigger cities. However, there is a primal urge to be amongst the trees and animals.

bubach wrote:

Hehe, I have finally fixed all those things, so in the next version it will look nicer.

Very cool! I look forward to comparing our code. I suspect you’re a lot neater about it than I am.

bubach wrote:

The IDT code won't take too long (with exchangable INT's etc), if you don't run into trubble, but the driver managment... That can take some time.. tongue

Yeah, I suspect you’re right. I will probably do a standard IDT like what is in Dex4, where he’s put all the possible interrupts into one table. Currently I have only planned for the first necessary ones and a system call. I also have to look at PIC reprogramming for the IRQs to ISRs. This all comes into play with the driver management though, to which I haven’t entirely worked out the scheme yet. This also leads into the type of executable I intend to run since I want drivers to be installable and uninstallable at the command line (or what ever interface like a GUI). This too interfaces with the usage of multitasking…so this will be a huge process and I realize it will take several months of coding and learning to get it right.

smiddy wrote:

My plan is to make drivers installable and uninstallable real time.

bubach wrote:

Thats trickier then i first thought when I started with OS-dev.

Yeah, I think so too. I’m in no hurry though. It is fun keeping my mind busy with it.

smiddy wrote:

I'll post my list of goals when I return home this evening.

bubach wrote:

Sure. But I suspect that you'll change them more and more as time goes by. Unless you'r a
good planner, and knows what your doing, compared to me when i started dreaming of
all the things my OS would do.

My first drafts must have been from when I was around 13 years old, at that time I had never done anything
harder then a few BASIC programs (and html/cgi), and didn't even know if it was possible to make your own OS.

My more serious plans started when i was 18 (2003), and had found the fasm board ( and it's osdev section), which led me to osdev.org, and osdever.net...

You are right it has changed a lot, but I have a first phase or release 1.00 list of thing I want to finish, which I’m keeping stable as a baseline. Versions 2.00 and 3.00 are within this list too:

Code:

-------------------------------------------------------------------------------
ToDo For 1.0
----------------------------------------------------------------------------

X DONE X - Review DetectCPU for logical sequence and CPUType Identification (1 - 8)
 X DONE X -- Remove false types in code (there for testing)

X DONE X - Write C application:
          -- Opens Version.ASM to update build number with an increment per call

X DONE X - Write Batch file:
          -- Run C Application
          -- Archive the build with unique zip file
          -- Build OS
          -- Copy OS to floppy

X DONE X - Incorperate Memory Probing from PMode (done for UnReal Mode)
           This stays in flat-real mode, no need to change.

X DONE X - Fix individual types for return to DOS or REBOOT

X DONE X - Check to see if we're in DOS or Windows or something else

X DONE X - Update realmode text driver to update BIOS cursor locations (not needed, using BIOS)

X DONE X - Implement Time Stamp at boot time and calculate boot processing time (CMOS). (INW)

- Default text screen size 90 x 60 (INW; using Chris Giese's code, works for now)
  (Working on LoadFont)
 -- Save location of 8 by 16, 8 by 14, and 8 by 8 fonts
 -- Have to be able to return to 80 x 25 (INW)
 -- Need to copy existing video screen and replace the updated screen with the information

X DONE X - Memory mapping scheme using mapped document (Read document and incorperate)
          -- Remove 1MB DEBUG boundary to BIOS and CMOS memory routines
          -- Memory allocation and deallocation scheme
          -- Fix CMOS to Probing Not Needed
          -- Fix E801 recognition error (only sees 1MB and says it is ok)
          -- Analyze required variables for Protected Mode

X DONE X - Update Protected Mode text screen driver (may make seperate from kernel)

X DONE X - Memory Manager (Bitmap is there, but went with data-record notation)

X DONE X - PCI Enumeration (in real mode) Not needed found PM edition works

X DONE X - If error before protected mode, get ready to reboot...

X DONE X - Go To Protected Mode

- PM PCI Enumeration (INW)

- Device Manager (complete in PM)

- Begin reading IDT stuff (INW)
 -- Add OS Call for IDT Adds and Subtracts

- Create Driver Interface to OS
 -- Load when needed; Release when done.

- Keyboard Driver
 -- Include ALT+decimal number to 255 translation for input.
 -- regular characters
 -- Shift characters
 -- CAPS lock characters (shifted and not)
 -- Ctrl characters
 -- Alt characters

- Text Windowing from OS calls (create OS calls)

- Read up on TSS and implement
  -- Write two simple tasks to thread with (with text windowing)

- Partition Manager

- Floppy Driver

- File System Manager

- FAT Driver (12/16/32 and Longfile Names)

- ATA Driver

- Basic Command Line shell

- RealTek 8139 NIC Driver
 -- Ethernet Driver
  --- TCP/IP Driver

- OS Utilities:
 -- FORMAT Utility (smiddyOS Format, and regular DOS on 3.5 2MB drive)
 -- CHKDSK Utility (for known drives above)
 -- MEMory Utility (Display Memory as the OS know's it).
  X DONE X Rudementary display of listed memory items.

- Internal Commands:
 -- DIRectory
 -- CD
 -- MD
 -- VERsion
 -- EXIT (option to REBOOT; Shutdown; Return to DOS)

- Applications:
 -- Network Analyzer (may make as its own boot tool)
 -- Calculator (very basic)

-------------------------------------------------------------------------------
For 2.0
-------------------------------------------------------------------------------

- (X)VGA text modes
- Text mode windowing scheme taking advantage of video modes available/written
- Mouse driver (COM and PS/2)
- CDFS Driver 
- NTFS Driver
- COM Driver
- LPT Driver
- Extensive Memory Command/Utility
- CPUID Utility
- OS Utilities:
 -- Update FORMAT to all known formats and floppy drives (may need to narrow list)
 -- Update CHKDSK
- Internal Commands:
 -- Extend the list (along with Utilities)
- Applications:
 -- Update existing ones to 2.0
  -- Calculator to be more scientific
  -- Network Analyzer; Add realtime analysis
 -- Editor
 -- Port FASM
 -- Port GRDB and make it PMode
 -- IDE for FASM and GRDB integration

-------------------------------------------------------------------------------
For 3.0
-------------------------------------------------------------------------------

- USB Driver
 -- Printer Driver (Text ASCII only)
- Bus speed determination
- Games

-------------------------------------------------------------------------------
For 4.0
-------------------------------------------------------------------------------

- Graphics drivers and modes

I am not changing anything in 1.0, however the others are open for change.

smiddy wrote:

I must run, work, that four letter word, calls.

bubach wrote:

Never heard of it.. tongue

Yeah…I am officially retired from one career and drawing a pension. I only wish my ambitions weren’t as aspiring as they are and I wouldn’t have to work. But alas I want too much not to work since the income helps me get the toys I want. big_smile

AxelDominatoR wrote:

Wow... taking on account all of our new OSes... some big bad Redmond company will fear competition very soon wink

...maybe...
tongue

Well, I have to think about this. The magnitude of your statement is interesting. As an ex-Program Manager, I have an optimistic approach to [i]getting things done[/i]. Though I am a realist too. The OSes I have seen are not in anyway potential competition to Microsoft. None of them have the leadership, financial backing or the man-power to come close to producing an Operating System that could compete. I am a mere hobby-ist. Others might have more aspiration...though they will need to carefully consider their direction and competition. Though it is fun to dream...smile


- [color=red]s[/color][color=blue]m[/color][color=red]i[/color][color=blue]d[/color][color=red]d[/color][color=blue]y[/color]

Offline

 

#11 2005-05-14 13:20:07

AxelDominatoR
Member
From: Reggio Calabria, Italy
Registered: 2005-03-07
Posts: 43
PM  Website

Re: VGA text modes...

Talking about desktop OS, unfortunately M$ is still the market leader... but make a nice desktop with alpha-blended icons is really a limited application for an OS wink
Take for example embedded devices, scientifical machines, robots, gaming/multimedia boxes, cellular phones, home automation... a really stable, feature-rich and nice OS for one of these devices is much more feasible than a "generic OS" for a desktop computer and could lead to a much more "inexplorated" market ( still not saturated by big companies )
Upss a bit off topic hmm ( I hope Bubach will forgive me O_o )

However all this to say that every OS has to be designed accurately around the application it should be able to accomplish. smile


---
Axel DominatoR ^^^ HC

Offline

 

#12 2005-05-14 17:52:35

smiddy
Active member
Registered: 2005-02-15
Posts: 183
PM

Re: VGA text modes...

AxelDominatoR wrote:

Talking about desktop OS, unfortunately M$ is still the market leader... but make a nice desktop with alpha-blended icons is really a limited application for an OS wink
Take for example embedded devices, scientifical machines, robots, gaming/multimedia boxes, cellular phones, home automation... a really stable, feature-rich and nice OS for one of these devices is much more feasible than a "generic OS" for a desktop computer and could lead to a much more "inexplorated" market ( still not saturated by big companies )
Upss a bit off topic hmm ( I hope Bubach will forgive me O_o )

However all this to say that every OS has to be designed accurately around the application it should be able to accomplish. smile

Humm, well, it was bubach who started the off-topic-ness, so I suppose we're okay. I suspect he'll tolerate it for now. big_smile

That is a great observation. Microsoft was once just an OS writting company. They've seriously expanded beyond just an OS. XBox seems to be very popular (I don't own one, I have an older Sega Genisis; its collecting dust). However, they have staunch competition with PS/2 and Nintendo. I beleive PS/2 has the market share.

As for multimedia, Microsoft has released a second edition Media Center. I own the first edition and it looks okay. They have said they're updating a few things. I plan on researching it more for my new house to employ total house automation.

The other area are open for sure though...but you're talking about abscure CPUs and conventions in comparison to x86 environment. It sounds interesting though...

Ciao for now!

Last edited by smiddy (2005-05-14 17:52:59)


- [color=red]s[/color][color=blue]m[/color][color=red]i[/color][color=blue]d[/color][color=red]d[/color][color=blue]y[/color]

Offline

 

#13 2005-05-14 19:27:25

bubach
Administrator
From: Trollhättan, Sweden
Registered: 2005-02-15
Posts: 367
PM  Website

Re: VGA text modes...

Hehe, don't worry.. I'm just glad that I get any forum posts at all.. smile
Don't have time to answer right now, but I'll be back..

/ Christoffer

Offline

 

#14 2005-05-14 20:51:07

DennisCGc
Member
From: Zoetermeer, The Netherlands
Registered: 2005-03-01
Posts: 49
PM  Website

Re: VGA text modes...

Hi,

At the risk of being off-topic <cough> I suppose I can give a few tidbits here about smiddyOS.
It is written in FASM as well. I initially started in NASM (sound familiar?).
I was forced over due to the lack of support from NASM. I see a future for FASM where I didn't for NASM.

Not familiar smile (am using NASM now)

Anyway, it looks interesting. Although you have a lot of work todo wink
Could you please tell me more about your KERNEL design ? As far as I can conclude you have a microkernel based kernel ? I might be wrong of course. Anyway, I'd like to hear about it.

Talking about desktop OS, unfortunately M$ is still the market leader... but make a nice desktop with alpha-blended icons is really a limited application for an OS wink

OMG, not yet another attempt to create a desktop OS ? tongue I simply am not. I admit, it could be handy sometimes, but I wanted to create an OS which can be used for networking, programming, etc.

DennisCGc.

Offline

 

#15 2005-05-15 01:50:27

smiddy
Active member
Registered: 2005-02-15
Posts: 183
PM

Re: VGA text modes...

DennisCGc wrote:

Hi,

Anyway, it looks interesting. Although you have a lot of work todo wink
Could you please tell me more about your KERNEL design ? As far as I can conclude you have a microkernel based kernel ? I might be wrong of course. Anyway, I'd like to hear about it.

DennisCGc.

Humm, well, I haven't categorized it in KERNEL terms. Initially when I started out I was just wanting to get something up and running. As was the case it evolved into more when I started working on implementing hardware on a similar bus to PCI. This got me to thinking that I could develop my own OS. I'm more of a scientist/engineer where there are times when I have to make calculation of an obscure nature to facilatate my work. I like most of the products available like MatLab, MathCad, and Maple. I was hoping to implement something along those lines but without the overhead imposed by Windows, since simulations I run tend to run a number of days. The PC is more powerful than that so I was hoping to eliminate that overhead. Thus my want to be able to install and uninstall, at will, devices (and anything else for that matter). So, I suppose, given the definitions as they currently stand on the net, it would most likely be a microkernel. Originally though it would have been considered a Non-kernel, or system application. Though I've decided to add the ability to run it on other systems by having device drivers. There are elementary managers that I will employ too; memory manager, device manager, file system manager, partition manager, console manager, to name the few that come to mind.  From that you wouldn't expect it to be an exo-kernel, there's too much built into it. Though I don't expect to PROTECT the user from the resources either. In otherwords, they'll have the ability to hose themselves if they don't know what they're doing with respect to the hardware or the OS. Less abstraction than a true microkernel per se'.

I think that pretty much explains it. I still need to find the time to look at your's but I haven't yet. Perhaps this evening.


- [color=red]s[/color][color=blue]m[/color][color=red]i[/color][color=blue]d[/color][color=red]d[/color][color=blue]y[/color]

Offline

 

#16 2005-05-15 02:28:47

smiddy
Active member
Registered: 2005-02-15
Posts: 183
PM

Re: VGA text modes...

I just looked at your OS Dennis. Your website is correct there's not much to it currently. Here's a snap-shot of what it did on my machine:

Code:

Loading.........................................................................
.done
kernel.s: Rerouting IRQs...done
kernel.s: Installing IDT..done
kernel.s: Scanning IDE0.
kernel.s: *HD0
kernel.s: Measured CPU speed: 2171 MHz
kernel.s: Welcome to DennisOS v 0.1 by DennisCGc(C) 2004.
0
16

I tried typing commands in but nothing seemed to work. I suspect no commands are implemented, is this right? Ctrl+Alt+Del did reboot however. From reading your information I couldn't ascertain specifically where you're headed only that you didn't like Windows or Linux, and you thought MenuatOS was crap; that you expect your OS to be better than those OSes.

I am unfamiliar with *.s file types. I suspect that is an assembly type file? Is that a Linux convention?

What is the 0 and the 16 displayed for?


- [color=red]s[/color][color=blue]m[/color][color=red]i[/color][color=blue]d[/color][color=red]d[/color][color=blue]y[/color]

Offline

 

#17 2005-05-16 09:26:22

bubach
Administrator
From: Trollhättan, Sweden
Registered: 2005-02-15
Posts: 367
PM  Website

Re: VGA text modes...

smiddy wrote:

Very cool! I look forward to comparing our code. I suspect you’re a lot neater about it than I am.

What makes you think that? Do you think that any code for 0.03 is neat? tongue

smiddy wrote:

Yeah, I suspect you’re right. I will probably do a standard IDT like what is in Dex4, where he’s put all the possible interrupts into one table.

I finally got something cooler working..
I've set mem 0x6c00 or something as the IDT address, and builds the IDT dynamically by calling set_IDT with a pointer to the unhandled_int function.
After that I can add INT's whenever I feel like it by calling add_int. I'm pretty proud of it. Way cooler then a static table.. wink

smiddy wrote:

I tried typing commands in but nothing seemed to work. I suspect no commands are implemented, is this right?

Last time I tried, it echoed chars, but had no working commands.

*.s isn't that what they call GNU (AT&T) assembly files? for example in the linux kernel..

/ Christoffer

Offline

 

#18 2005-05-16 11:45:07

smiddy
Active member
Registered: 2005-02-15
Posts: 183
PM

Re: VGA text modes...

bubach wrote:

smiddy wrote:

Very cool! I look forward to comparing our code. I suspect you’re a lot neater about it than I am.

What makes you think that? Do you think that any code for 0.03 is neat? tongue

big_smile Why yes, it is all neat…but with that double meaning, yes too. Neat in the respect that you clean up your code real nicely so that it is [b][i]very[/i][/b] readable. You also pointed out how you prefer separating the different parts into their respective files too. I like that convention. I try to adhere to that myself, so thanks for influencing me.

bubach wrote:

smiddy wrote:

Yeah, I suspect you’re right. I will probably do a standard IDT like what is in Dex4, where he’s put all the possible interrupts into one table.

I finally got something cooler working..
I've set mem 0x6c00 or something as the IDT address, and builds the IDT dynamically by calling set_IDT with a pointer to the unhandled_int function.
After that I can add INT's whenever I feel like it by calling add_int. I'm pretty proud of it. Way cooler then a static table.. wink

WOW! Excellent idea! I am going to place a static IDT into memory though, especially to handle those required one’s (0 thru 2F). I really like the idea of dynamic IDT…this goes hand-in-hand with my thoughts on dynamic device drivers.

Right now I’m working on a FAT12 driver (no long file names, yet) and (pre) loading it along with VENDORS.TXT (manipulated data elements) from pcidatabase.org (for PCI enumeration finally). I think (pre) loading files before I get into protected mode will get rid of the chicken or the egg syndrome (analogy). I am using unreal mode to facilitate this. While INT 13h is 16-bit, I can move the files to 32-bit offsets rather easily this way. A potential problem I will have is setting up the memory as the memory manager is currently in protected mode only and gets setup in unreal mode. I may have to devise a way to make dynamic updates to some of the static information I already have, so more will be done with my initial memory detection/assigning scheme in order to make things [i]dynamic[/i].

When do you expect to release your next version?

If all goes as planned for me, I should be in a new house by September. I don’t know if I will meet all my requirements before then with my own OS (doubtful), but I will setup a web site and provide an initial glimpse of it then.

What executable file type are you planning on using? I have been juggling the idea around my head for some time and I think I may go with PE. While I won’t be using Windows API, I like the structure and the flexibility of the code and data elements. I am having difficulty with the idea of dynamic data elements though, so that may be why I’m not considering my own executable type. Perhaps while I’m putting together this FAT12 driver, I’ll research the executable types too more further.


- [color=red]s[/color][color=blue]m[/color][color=red]i[/color][color=blue]d[/color][color=red]d[/color][color=blue]y[/color]

Offline

 

#19 2005-05-16 13:40:30

DennisCGc
Member
From: Zoetermeer, The Netherlands
Registered: 2005-03-01
Posts: 49
PM  Website

Re: VGA text modes...

Hi,

smiddy wrote:

I just looked at your OS Dennis. Your website is correct there's not much to it currently. Here's a snap-shot of what it did on my machine:

Code:

Loading.........................................................................
.done
kernel.s: Rerouting IRQs...done
kernel.s: Installing IDT..done
kernel.s: Scanning IDE0.
kernel.s: *HD0
kernel.s: Measured CPU speed: 2171 MHz
kernel.s: Welcome to DennisOS v 0.1 by DennisCGc(C) 2004.
0
16

I tried typing commands in but nothing seemed to work. I suspect no commands are implemented, is this right? Ctrl+Alt+Del did reboot however.

Correct, I simply don't have any commands built-in, because I really want to have the shell and the kernel seperated. (So eventually you can change the shell to your favourite one smile)

From reading your information I couldn't ascertain specifically where you're headed only that you didn't like Windows or Linux, and you thought MenuatOS was crap; that you expect your OS to be better than those OSes.

Prolly there's a rather huge mistake. First of all, I like Linux and I think MenuetOS is not "crap". My opinion is that Windows is simply bloated, has too much bugs and the price is a bit too... well expensive IMO.
My problems with MenuetOS are that; 1. they say the GUI is responsive, IMO it isn't and 2. I can't configure it probably, but I think this will change. And 3. the so-called fan club thinks everyone who doesn't use MenuetOS is just an idiot. (okay, I overreact, but sometimes I really do get the feeling it really is like it). Don't take me wrong, I used MenuetOS (well, merely watched and tested) since version, IIRC, 0.58.
Linux, okay, I like it, and am using it when I could use it. But the problem with linux is that I simply CAN'T program assembly programs, which for example can create sockets to access the internet. Of course you can, but the source will be quite big. So the C compiler is the choice to do such operations. But I can't do C smile .

Hope you'll understand it now, it's not that I dislike other OSes, it's more the problem how I want to use it. That's why I'm programming an OS. And no, I seriously don't expect my OS to be better than those OSes. (though I hope so smile ). I expect it to be better for me. Not in general. And please keep in mind, "better" is just a matter of your taste. tongue

I am unfamiliar with *.s file types. I suspect that is an assembly type file? Is that a Linux convention?

Don't mind it, it's just an extension I use. And no, I don't use AT&T assembly.

What is the 0 and the 16 displayed for?

0 and 16 are just tests of my early version of my malloc, etc. Just ignore them tongue

DennisCGc.

Offline

 

#20 2005-05-16 13:42:46

bubach
Administrator
From: Trollhättan, Sweden
Registered: 2005-02-15
Posts: 367
PM  Website

Re: VGA text modes...

Well, thanks for the compliments about my code.. smile

First I call init_idt which sets all int's to the undhandled_int, then I have a table like:

ASM code:

idt_table:
          dd   IRS0
          dd   IRS1
          dd   IRS2
   times 50   dd   0               ; no predefines IRS's for these INT's
          dd   IRS_whatever

That sets the basic exceptions etc for me.. if a entry in that list is zero, it skips it, and it remains "unhandled_int".
In the add_int function I add the interrupt both in the list and in the IDT.. User programs may want to have the address for int 0x32, then they can, with the help of that INT list.. wink

The next version will be released when I get the bloddy fdd code to work (don't know whats wrong yet)...  mad
I'll use a flat binary, but without the ORG restriction. I am planning on bypassign it by giving each user program it's own GDT selectors where the base is set to where the program was loaded... For "global" access to memory I'll problably leave GS with a GDT selector that can access all mem, like 0xB8000 or 0xA0000.. tongue
Not 100% sure yet, though..

Anyway I need a VFS first, that can handle a uniform access to all kinds of drives and FS's.
Must go, missing my bus as usual.

/ Christoffer

Offline

 

 

Board footer

Powered by PunBB
BOS homepage © Copyright 2005 Christoffer Bubach
Strict XHTML and valid CSS.