OK, Like every guy who thinks he knows how to code... I eventually got fed up with all the bells and whistles we have to go thru to open a simple file. Boot up the computer... log on... Wait for the gong (for you mac users) or the "PC windup" for everyone else.

I have done a lot of programming on a lot of systems using many different languages. I am not an expert on any system. And when I get over my head I always ask the smart guys/gals.

I have enough experience to know how to read, understand, and implement code, but most of the time when advanced coders get too far out there I gotta ask them to stop  and use smaller words ;) .

I use the parts of some systems and then throw away the rest. Mostly splices ( i prefer not to call it hacks --- bad connotation) Unix DB needs to talk to windows server and the end user is running mac os 9 Java VM in a IE browser.
Some of you are feeling my pain. 

I also do some really low level electronics projects e.g.  soldering, capacitors, resistors, voltage regulators, IC's and breadboards.  <--- I'm not good at that either.

Here's what I know:
You car has a 12v DC Battery... The maximum amount of power a standard ATX MB expects is 12v DC.  We plug our computers into the wall socket.. the power supply turns AC current to DC current and uses Buck converters to lower the voltage to accomodate the very low volatges that a Motherboard expects.  I know there are dc step down converters for this... $60 retail!!!!

I WANT TO GEEK OUT MY CAR!!!!!!!!

Here's the problem:
1) Shutting down and opening up an O/S on an x86 is a pain in the "caboose". Timewise and CPU cycle (Power) wise.

2) 12v DC battery can't run an A/C ATX board and LCD 15" monitor when the car is off. MB? maybe... if I can get rid of the HD. USB uses < 1.5v. Mass Storage $30 for 512 MB... enough for an O/S.

3) The majority of the constant juice for the MB is from the HD spinning, fans, and floppies, not to mention the processor.  I need to eliminate all three if possible. 

4) A Pentium II is as fast a a processor I should be running (less juice). I only have 5 to "waste"

5) I have a few MotherBoard that I'm using they should be alll x86 compliant.

6) I have virtually no money. So don't say buy this package...

Here's how I expect it to work
On wake up almost all old PC boards seach for IDE or Floppy.... The floppy uses juice, is only fat12, and is slow... the HD uses constant juice when powered up (very bad ).

I want to have a bootloader program that sits on the first 512 of a floppy (system disk) that will boot strap the USB mass storage.

The USB Mass Storage will conatin the O/S in Binary EXE, COM, or SYS files

Heres the twist... I want the O/S to be able to shell another operating system.
2 USB's hooked to the system.  One "My Generic" O/S, the other Linux, Mac, Be, FreeDos, etc..

The O/S should support generic Soundcards (on board or not), Support SVGA, USB Mouse, keyboard and Storage, and run the Java Virtual Machine.  The rest of the GUI will be Java (I Hope).

Heres what I have done and tools I have:

NASM compiler  & MS Debug
I have created my own boot loader but can't figure out how to get mouse support. I've tried the interupt but I think I've coded it wrong... The IBM book is MASM and my compiler is NSAM and the example in the book is a code snippet and not complete source.  I changed the procs to conform to NASM by comparing the examples that compiled and ran without error. but i still get errors during compile.

LEN_DATA  EQU 14
XCOORD    DW  0
YCOORD    DW  0
ASCVAL    DW  ?

LABEL DISPDATA BYTE
XMSG DB 'x = '
XASCII DW ?
DB ' '
YMSG DB 'x = '
YASCII DW ?
;++++++++++++++++++++++++++++++++++++
.CODE
A10MAIN ;PROC FAR
MOV AX,@data
MOV DS,AX
MOV ES,AX
CALL Q10CLR 
CALL B10INIT
CMP AX,00
JE A90
A20: CALL  C10PNTR
CMP BX,01
JE A80
MOV AX,XCOORD  ; MOVE XCOORD TO AX
CALL D10CVRT  ; MAKE IT ASCII
MOV AX, ASCVAL
MOV XASCII, AX
MOV AX,YCOORD
CALL D10CVRT 
MOV AX, ASCVAL
MOV YASCII, AX
CALL E10DSP
JMP A20
A80: MOV AX, 02   ; HIDE POINTER
INT 33H
A90: CALL Q10CLR  ; CLEAR SCREEN
MOV AX, 4C00H  ; END PROCESSING
INT 21H
;A10MAIN ENDP
; INIT MOUSE
; ++++++++++++++++++++++++++++++++++++++++
B10INIT ;PROC NEAR
MOV AX,00H ; INIT POINTER
INT 33H
CMP AX,00  ; IS THE POINTER THERE? 00 MEANS NO
JE B90
MOV AX,01H ; SHOW POINTER
INT 33H
B90: RET
;ENDP B10INIT
; GET MOUSE POINTER LOCATION
; ++++++++++++++++++++++++++++++++++++++++

C10PNTR ;PROC NEAR
C20: MOV AX,03H ; GET POINTER LOCATION
INT 33H
CMP BX, 00000001B ; LEFT BUTTON?
JE C90 ; YES THEN EXIT
SHR CX,03 ; DIVIDE PIXEL
SHR DX,03 ; COORD BY 8
CMP CX,XCOORD ; POINTER DIFFERENT?
JNE C30
CMP DX,YCOORD
JE C20 ; NO? DO IT AGAIN
C30: MOV XCOORD,CX ; ELSE SAVE LOCATIONS
MOV YCOORD,DX
C90: RET
;ENDP C10PNTR
;     CONVERT BINARY
; ++++++++++++++++++++++++++++++++++++++++
D10CVRT ;PROC NEAR
MOV ASCVAL,2020H ; CLEAR ASCII FIELD
MOV CX,10 ; SET DIVIDE FACTOR
LEA SI,ASCVAL+1 ; LOAD ASCVAL ADDR
CMP AX,CX ; COMPARE TO 10
JB D20 ; LOWER, BYPASS
DIV CL ; HIGHER, DIVIDE BY 10
OR AH,30H ; INSERT ASCII 3s
MOV ,AH ; STORE IN RIGHTMOST BYTE
DEC SI
D20: OR AL,30H ; INSERT ASCII 3s
MOV ,AL ; STORE IN LEFTMOST BYTE
RET
;ENDP D10CVRT
;       DISPLAY X, Y
; ++++++++++++++++++++++++++++++++++++++++
E10DSP ;PROC NEAR
MOV AX,1300H ; REQUEST DISPLAY
MOV BX,0031H ; PAGE ATTRIB
LEA BP,DISPDATA ; STRING ADDRESS
MOV CX,LEN_DATA ; NUM OF CHARS
MOV DX, 0020H ; SCREEN ROW:COLUMN
INT 10H
RET
;ENDP E10DSP
;   CLEAR SCREEN SET ATTRIB
; ++++++++++++++++++++++++++++++++++++++++
Q10CLR ;PROC NEAR
MOV AX,0600H ; REQUEST CLEARSCREEN
MOV BH,30H ; COLOR
MOV CX,00 ; FULL
MOV DX, 184FH ; SCREEN
INT 10H
RET
;ENDP Q10CLR 
; END A10MAIN


I have an HP USB System disk tool ( HP has a tool that will allow you to take any system disk floppy and copy the boot sector to a USB) I've done this to my flash drive but the Motherboard Bios doesn't have a boot from USB option so I have to go to floppy first unless someone can tell me how to reprogram my BIOS?

My goal is to be able to

Turn on my car and a start typing reports that are saved on an external USB Thumb drive which I can take with me

Listen to Mp3's off the same thumbdrive.

And have a Graphical interface using keyboard, mouse, and sound.


Ok Experts where should I start?
Posted on 2006-10-26 10:16:45 by Duh_Newbie
You mean with all of the sharp minds on this site... none of you have any suggestions?
Posted on 2006-10-28 09:44:07 by Duh_Newbie
Since they don't fancy this topic, :
A thing called "protected mode", 32-bit mode of the cpu, for instance :)
A thorough look at SolarOS and MenuetOS are a must.

Maybe they don't fancy the topic, since you literally ask to be spoon-fed on OS design, for which there are Stickies right here with links to the materials.
Posted on 2006-10-28 16:21:47 by Ultrano
Which stickies are you refering to? I only need help with ASM mouse support... I'm certain your first attempt was done with someone else's code... As has everyone here.

The rest I can figure out on my own... that's how we used to do it... but if you're guarded about your ASM secrets I understand your paranoia. But if everyone acts as you.. where will you turn for help in the end?


Anyone have a helpful suggestion?
Posted on 2006-10-28 22:30:36 by Duh_Newbie
rofl  no comment, dude, no comment.  FYI, I never even started making anything OS-like in x86... so I don't even have "secrets" about this topic. But you're true... now that I sought for the stickies I mentioned, they're gone ... probably removed after one of the restructures of the board.
Posted on 2006-10-29 06:55:11 by Ultrano
Hi,

I don't know which stickies you are referring to except maybe the one inside the Operating System Development board having a ton of links on many different aspects of OS design, but I don't know for sure if that will be of any help.

If you find those threads that were supposed to be sticky please msg me or any of the board staff and we surely sticky them up again ;)

Cheers,
Jimmy
Posted on 2006-10-29 07:46:26 by JimmyClif
some links that may help:

http://www.osdever.net/documents.php?cat=0&sort=1
(Also check the root of the domain, there maybe lots of useful things there)

http://www.osdev.org/

http://www.osdev.org/osfaq2/

Another thing that you may want to consider is to develop the system by using an LFS (Linux From Scratch) approach or maybe trying to costumize the "Damn Small Linux" sources for your needs. Coding an OS from scratch needs lots of time. Indeed you'll learn such a lot of thing from it. However, very probably it will take a "very" long time to arrive to your goal. Customizing existing "infrastructure" may take you there faster than working on it from scratch  ;)

greetz,
Pinczakko
Posted on 2006-11-27 23:11:59 by Pinczakko