Got called off to a problem and didnt get to complete my last post... sorry for double post here, but more info I wanted to share based on my experience with modern computer hardware and writing your own OS. With my experience being alteration of Linux Kernel 2.4xxx for slackware and helping a friend in college with his Micro Computer Electronics Degree in which I had to assist him with his projest to make a computer using the Z80 processor similar to this project:
http://cpuville.com/Z80.htm.
Regarding the statement of:
That wouldn't help me much do not know c would rather start from scratch.
My suggestion is starting from scratch with C if you plan on making anything that will interface easily, and in a more timely manner, with already existing hardware that is out there. What can be performed in say 20 lines of C could take 200 lines in assembly language or more depending on the complexity of what is to be achieved.
However if you are creating your own language and your own computer hardware that it functions on, you can make anything happen in any way that logically functions as intended. Depending on complexity it can be a simple computer with a small shift register or someing even more powerful.
If you plan on anything to the scale of modern computers, unless you have a team of engineers working for you at your direction, and money is no problem, you will want to use already existing hardware that will work with your language for your OS that you create.
The best way to learn how to interface with modern hardware would be to look at the Linux Kernel and learn from it as for Microsoft will not share the source code with you.
To understand the source code you would need to know C in order to read and understand the Linux Kernel, so thats why I suggest learning C as the foundation to start from if you are planning on making an OS that is for modern computer hardware.
BUT if you are making your own computer that will interpret the language that you create that does not follow the same rules as Intel, AMD, Motorola CPU's for example in (calls), then have at it ... you dont need to conform to anyone elses rules on how their CPUs function you can make your own rules with your own CPU that abides rules you created and understands calls you created.