flat assembler
Message board for the users of flat assembler.
Index
> OS Construction > Assembly OS that will boot after burned into CD. Goto page Previous 1, 2, 3 Next |
Author |
|
den010 03 Aug 2014, 08:15
i'm really lost here thank you.
|
|||
03 Aug 2014, 08:15 |
|
smiddy 03 Aug 2014, 13:05
sinsi wrote: If you are using no emulation, the boot sector (2048 bytes, not 512) is usually loaded at 1000:0000, not 7c0:0000. 2048 is correct, but the loading is always 07C0:0000h unless specified in the Initial/Default Entry at offset 2 (word)[Of the Boot Catalog]. El Torrito Specification wrote: Load Segment. This is the load segment for the initial boot image. If this Code: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Boot Catalog ;; ;; Sector 19 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BOOTCatalog: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Validation entry ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; db 1 ; Header ID db 0 ; Platform ID (80x86) dw 0 ; Reserved/unused db "Smiddy OS ",0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; ID string dw ("Sm" + "id" + "dy" + " O" + "S " + 0AA55h) and 0FFFFh ; Checksum dw 0AA55h ; Key bytes (FASM Intel does Little Endian, apparently) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Initial/Default Entry ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; db 88h ; Boot indicator db 0 ; Media type (0 = "no emulation") dw 0060h ; Load segment (0 = default or 7C0) db 0 ; Partition type (assumed to be unused for "no emulation") db 0 ; Unused, must be 0 dw (BootLoader.End - BootLoader + 511) / 512 ; Sector count (virtual 512-byte sectors) dd (BootLoader - CDROMImageStart) / 2048 ; First sector number for boot loader times 20 db 0 ; Unused, must be zero ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Padding ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; times 62*32 db 0 ; 62 unused entries ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Boot Loader ;; ;; Sector 20 to Sector ? ;; ;; This is where I write the CD-ROM boot loader for SmiddyOS. It is assumed ;; that the CDBOOT.BIN will be on a 512 byte boundary. It can however span ;; multiple 2048 sectors on a CD-ROM. ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BootLoader: file 'CDBOOT.BIN' .End: TIMES (2048-($-BootLoader)) and 07FFh DB 0 ; aligns this block to an even 2048 bytes (per sector on CD-ROM) Smiddy |
|||
03 Aug 2014, 13:05 |
|
den010 03 Aug 2014, 14:20
Thank you so much again for your kindest reply. I know my question below is like spoon feeding but I'm desperate.
With the code you provided. Should I create a different file for it? Or Should I insert it in my code for my OS? I'm ready to be scolded or get shamed. I really need my first to get it run using a CDROM. _________________ I'm a Completely Newbie : Need help much |
|||
03 Aug 2014, 14:20 |
|
smiddy 03 Aug 2014, 14:44
Read the El Torrito Specification: http://en.wikipedia.org/wiki/El_Torito_(CD-ROM_standard)
The code above it part of a CD-ROM image I create. It is separate from OS code, in that it is its own entity as a part of the CD-ROM image. You'll have to learn CD-ROM images, how they are laid out and work, then you can perhaps, load your code, from the boot image you're creating above. |
|||
03 Aug 2014, 14:44 |
|
den010 03 Aug 2014, 14:47
I know I'm so dumbed guys but I tried to compile smiddy's code. However it giving me an error on lines below.
dd (BootLoader - CDROMImageStart) / 2048 ; FASM 1.71.21 for windows recognize this line as error "CDROMImageStart) / 2048" BootLoader: file 'CDBOOT.BIN' - also this part. |
|||
03 Aug 2014, 14:47 |
|
smiddy 03 Aug 2014, 18:38
You will need to create a CD iso from that code, it is a snippet only, not everything. CDBOOT.BIN is your file, put the compiled version of your code there (the name of it).
|
|||
03 Aug 2014, 18:38 |
|
BAiC 03 Aug 2014, 21:12
smiddy: I think den010 is referring to the fact that you don't include the first 18 (decimal) sectors within your post. it's missing the Volume Descriptors portion.
-Stefan |
|||
03 Aug 2014, 21:12 |
|
den010 03 Aug 2014, 23:09
Sounds hard to incorporate.
If you're saying it is separate file. Are saying that I will burn my floopy img file and CDROM file that I will be creating? Can you give a hint on that too? _________________ I'm a Completely Newbie : Need help much |
|||
03 Aug 2014, 23:09 |
|
smiddy 04 Aug 2014, 00:15
BAiC wrote: smiddy: I think den010 is referring to the fact that you don't include the first 18 (decimal) sectors within your post. it's missing the Volume Descriptors portion. I was thinking that he needs to understand the entire item, CDROM booting, and the associated ISO. Which is why I gave him the El Torrito Spec link, so he would at least "try" to build it him (her?) self. Do you think I'm being too egregious in my amount of help? Smiddy |
|||
04 Aug 2014, 00:15 |
|
smiddy 04 Aug 2014, 00:28
den010 wrote: Sounds hard to incorporate. I could but you have to read/learn/understand the entire process. It is hard, not very easy, and took many of us years to learn. I'm not being a dick, I trying to get you to take some time to understand and learn. It doesn't happen over night and you have to allow time for it to absorb. Does that make sense? You have a project, you want to complete for school, yes? Take it seriously, find the time to learn, then apply what you've learned. It is anything but easy! It takes time, a lot of going back and forth before "you get it" for it to make sense. If I did everything for you, are you learning? That's an obvious answer YES? I've given you tons of hints, and ways to approach it, take a couple of days to review the items I've provided you. Do further research, your answers are out there, and then, put something together. If you have specific questions, I'll be happy to answer, what I do know, and I caveat that, I do not know everything! And...I will have sporadic access this next couple of weeks, if at all. So, that means, you are likely on your own, so start learning! |
|||
04 Aug 2014, 00:28 |
|
revolution 04 Aug 2014, 00:31
Indeed. Understanding is the key to it all. Give a person a fish ...
|
|||
04 Aug 2014, 00:31 |
|
smiddy 04 Aug 2014, 00:33
revolution wrote: Indeed. Understanding is the key to it all. Give a person a fish ... Teach her to fish... |
|||
04 Aug 2014, 00:33 |
|
den010 04 Aug 2014, 00:53
Thanks Smiddy and everyone. Yes I've been staying all day and all night researching and also watching over on this thread for hints. I'm trying to put all things together with you guys hints and guidance.
I really appreciate spending your time solving / helping someone else headache. I hope I can make this in time. I really appreciate and thankful for all your help! There are really good people out there like you guys. I hope you will continue helping others. _________________ I'm a Completely Newbie : Need help much |
|||
04 Aug 2014, 00:53 |
|
BAiC 04 Aug 2014, 03:16
smiddy wrote: Do you think I'm being too egregious in my amount of help? nope. I was just pointing out your code was incomplete. btw, your Checksum snippet is wrong. you need to: 1) consider the HeaderID (add 1 to the sum). 2) subtract the sum from 65536. -Stefan _________________ byte me. |
|||
04 Aug 2014, 03:16 |
|
smiddy 04 Aug 2014, 03:37
BAiC wrote:
Thanks, I don't recall why/where I decided to use that. It does pass the sniff test with MagicISO, but perhaps they are also incorrect. I did find this: Code: Calculation of checksum The last byte of a message contains a checksum. This checksum consist of the 8-bit two's complement of the sum of the MID and all data bytes in the message. A simple way to decide if a message has been correctly transmitted is to add the checksum to the 8-bit sum of all data bytes plus the MID of a received message. The 8-bit sum should be zero (0) if the message was transmitted correctly. As an example (using the sample message in the figure above), 44+23+61+114+62+208 = 512 (512 AND 0xFF) = 0, so the message is correct. This is what I think I implemented, add each up, then and it with 0FFFFh for 16 bits. Then from El Torrito: El Torrito Spec pg 9 wrote: Checksum Word. This sum of all the words in this record should be 0. I will re-look at it tomorrow sometime. The Header ID and Platform ID are not words, but bytes. |
|||
04 Aug 2014, 03:37 |
|
BAiC 04 Aug 2014, 06:59
I do wonder what kind of fucked up instructor would expect knowledge of the CD-ROM structure (for boot purposes) before covering images in general. I've avoided CD-ROM usage simply because I test with a real system and can't expend CDs just to for that. that said; it didn't help that CD booting has such a significantly higher complexity. from the way it's written it looks like a File System is forced on users of CD booting: atleast with VMware it doesn't require a File System.
- Stefan _________________ byte me. |
|||
04 Aug 2014, 06:59 |
|
den010 04 Aug 2014, 09:57
(I do wonder what kind of fucked up instructor would expect knowledge of the CD-ROM structure (for boot purposes) before covering images in general. I've avoided CD-ROM usage simply because I test with a real system and can't expend CDs just to for that. that said; it didn't help that CD booting has such a significantly higher complexity. from the way it's written it looks like a File System is forced on users of CD booting: atleast with VMware it doesn't require a File System. )
My sister told me "I think your instructor is having his masteral or doctorate degree on his profession. He is required to create a project the same as what he has given to you. He is getting ideas on his students". My sister seems true about it. _________________ I'm a Completely Newbie : Need help much |
|||
04 Aug 2014, 09:57 |
|
BAiC 04 Aug 2014, 10:41
well.. a CD-ROM boot loader would be valuable to prove yourself in undergraduate work but a graduate or even a Masters degree is really pushing it. it only takes about 40 lines of assembly data declarations to build a CD-ROM image.
-Stefan _________________ byte me. |
|||
04 Aug 2014, 10:41 |
|
smiddy 04 Aug 2014, 11:43
BAiC wrote: I do wonder what kind of fucked up instructor would expect knowledge of the CD-ROM structure (for boot purposes) before covering images in general. I've avoided CD-ROM usage simply because I test with a real system and can't expend CDs just to for that. that said; it didn't help that CD booting has such a significantly higher complexity. from the way it's written it looks like a File System is forced on users of CD booting: atleast with VMware it doesn't require a File System. I think if you search hard enough on here, someone has left a CDROM iso image that can be used for what he wants. |
|||
04 Aug 2014, 11:43 |
|
Goto page Previous 1, 2, 3 Next < Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2024, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.