flat assembler
Message board for the users of flat assembler.
Index
> OS Construction > . Goto page 1, 2 Next |
Author |
|
mikegonta 20 Nov 2005, 22:22
[ Post removed by author. ]
Last edited by mikegonta on 28 Jan 2009, 09:01; edited 13 times in total |
|||
20 Nov 2005, 22:22 |
|
mikegonta 21 Nov 2005, 23:53
[ Post removed by author. ]
Last edited by mikegonta on 17 Oct 2008, 15:49; edited 2 times in total |
|||
21 Nov 2005, 23:53 |
|
revolution 22 Nov 2005, 01:48
Thanks for the info mikegonta. Very useful.
|
|||
22 Nov 2005, 01:48 |
|
mikegonta 23 Nov 2005, 03:07
[ Post removed by author. ]
Last edited by mikegonta on 17 Oct 2008, 15:50; edited 1 time in total |
|||
23 Nov 2005, 03:07 |
|
vid 14 Jun 2006, 21:14
very nice, thanks.
should go to interesting threads/OSdev |
|||
14 Jun 2006, 21:14 |
|
Dex4u 14 Jun 2006, 22:11
I can not see the point, how is it simpler that having a floppy or Hdd image and clicking on the "make bootable" in your burn software ?.
The above method does use emulation of floppy or hdd and emulation stops up on entering pmode. But if you go back to realmode to use int 13h, emulation starts again, and it no slower than a pmode floppy or hdd driver, that why i have two floppy and hdd drivers, theres big advantages in using int 13h by going back and forth, eg: read/write USB pen drives, and being able to load from CD, under emulation. NOTE: I am not ? the code, but rather the mefod, being simpler |
|||
14 Jun 2006, 22:11 |
|
MarcoAlves 19 Jun 2006, 13:06
Dex4u wrote: I can not see the point, how is it simpler that having a floppy or Hdd image and clicking on the "make bootable" in your burn software ?. I'm noob. But, I think that this tool is useful for me because I've a notebook and it doesn't has a floppy drive. If you have other suggestions and how I can put the files into a image file and load them in VMWare, I will appreciate. Best Regards, Marco Alves. |
|||
19 Jun 2006, 13:06 |
|
Dex4u 19 Jun 2006, 14:36
First i want to make it clear that its a nice and usefull peace of code, i was just pointing that making a bootable cd is esaier by using burn software.
Now to answer you ?, although i have not used this mefod my self (as i have a floppy drive), from my understanding, you can with this tool (the free ver) http://ourworld.compuserve.com/homepages/gvollant/download.htm To inject files and directories into an existing disk image, that mean you just need to down load some floppy image and take out there file and inject yours. Hope this helps. |
|||
19 Jun 2006, 14:36 |
|
MarcoAlves 20 Jun 2006, 13:14
I'd downloaded the software but it can't open the bin file generated with
the tool coded by mikegonta. Can you help-me? Dex4u, a simple question: Suppose that I can put the files into the cd. How I can read those files from my asm app? Is this like reading from hd? THX IN ADVANCE. Best Regards, Marco Alves. |
|||
20 Jun 2006, 13:14 |
|
Dex4u 20 Jun 2006, 15:49
Heres the basic way it works, if you put a floppy image or hdd image on to a cd by clicking the make bootable option.
Up on booting, it emulates the floppy or hdd so you A: drive is the floppy image on the cd and your real floppy drive (if you have 1) is your b: drive, as long as your OS code stays in realmode this is how it will work, but if you go to pmode emulation stops or there is a int that can stop emulation in realmode. So to load program from the floppy image on the cd you can go to unreal mode and load the floppy image into a ramdisk like menuet does or you can go back to realmode use int 13h and read a: drive (as soon as you go back emulation starts again, unless you have done the int to stop it. If you want to put other stuff on the cd, other than whats in the images, you need to make a ATAPI driver. If you want i have a ATAPI driver for my OS written in fasm you can look at, if you decide to write one. NOTE: If for example your bootloader normally users the floppy to load your kernel in realmode using int 13h, this will work just the same from the floppy image on the cd. |
|||
20 Jun 2006, 15:49 |
|
kdownload 02 Dec 2008, 01:30
I seem to be having trouble getting this to work for me. I can't even try jmp 0:0 afterwords and cause a triple fault. Can anyone who got this to work post some working code?
|
|||
02 Dec 2008, 01:30 |
|
DOS386 02 Dec 2008, 06:13
WARNING: > 2 years old thread bumped by kdownload
> I can't even try jmp 0:0 afterwords and cause a triple fault. Can anyone who got this to work post some working code? What did you expect ? "jmp 0:0" is a secure GPF in PM and nonsense in RM (you have the IVT at 0:0) |
|||
02 Dec 2008, 06:13 |
|
kdownload 02 Dec 2008, 09:44
DOS386 wrote: WARNING: > 2 years old thread bumped by kdownload 2 year old thread recently modified and happens to be the only topic here that supports. Quote: What did you expect ? "jmp 0:0" is a secure GPF in PM and nonsense in RM (you have the IVT at 0:0) Ok, let's see you try doing something else with it then. I can't get it to print "hello" either. Reading above it clearly worked at one point, trying to find out why it's not working for me. |
|||
02 Dec 2008, 09:44 |
|
baldr 02 Dec 2008, 13:33
kdownload,
Beware, for "No emulation" media type "load segment" from El Torito boot catalog is the segment (i.e. for load segment 07C0 your code will start with cs:ip==07C0:0000, not 0000:7C00 as you may expect). With 1.44 FD emulation it is 0000:7C00 no matter which load segment I supplied in boot catalog entry (at least for my BIOS — your mileage may vary; it appears that BIOS starts FD emulation and boots from this emulated floppy as usual). |
|||
02 Dec 2008, 13:33 |
|
kdownload 02 Dec 2008, 18:25
Doesn't solve my problem, but that does help a bit... I was wondering why it was even there at all, considering everything else i've delt with boots from 0x7c00 (even PXE). Do you have anything i can run? It'd be a big help, because aside from this thing here that i can't get any output from, i'm comparing output files in a hex editor with an existing no-emulation cd booting thing. This wacky standard has me constantly scratching my head, whether it be the ambiguity of the ISO 9660 standard or the fact that the el torito specification uses hex numbers throughout that whole document.
|
|||
02 Dec 2008, 18:25 |
|
baldr 02 Dec 2008, 23:42
kdownload,
You may try this: Code: call @f db "Hello, world!", 13, 10, 0 @@: pop si mov ah, 0x0F @@: int 0x10 mov ah, 0x0E lods byte [cs:si] test al, al jnz @b xor ah, ah int 0x16 int 0x19
_________________ "Don't belong. Never join. Think for yourself. Peace." – Victor Stone. |
|||||||||||
02 Dec 2008, 23:42 |
|
kdownload 03 Dec 2008, 00:40
Still doesn't work... not so new to OSDevelopment, but this ISO thing has my head spinnin'. Good luck to anyone who can make the following peice of code work.
Code: macro msb_dw x { dw ((x and 0FF00h) shr 8) or ((x and 0FFh) shl 8) } macro lb_dw x { dw x msb_dw x } macro msb_dd x { dd ((x and 0FF000000h) shr 24) or ((x and 0FF0000h) shr 8) or \ ((x and 0FF00h) shl 8) or ((x and 0FFh) shl 24) } macro lb_dd x { dd x msb_dd x } macro binary_date year, month, day, hour, minute, second, offset { db year-1900, month, day, hour, minute, second, offset } macro text_date year, month, day, hour, minute, second, hundredth, offset { db year, month, day, hour, minute, second, hundredth, offset } Bootable_CD: Read_Me: db "This is an ISO9660/Joliet bootable cdrom image.",0Dh,0Ah db "Released to the Public Domain 2005, Mike Gonta",0Dh,0Ah .Read_Me: times 2048*9-($-Read_Me) db 0 BootCat.Bin: .Validation_Entry: .Header_ID: db 1 .Platform_ID: db 0 dw 0 .ID_String: db "" times 24 db 0 .Checksum_Word: db 0AAh, 55h .Signature db 55h, 0AAh .Default_Entry: .Boot_Indicator: db 88h .Boot_Media_Type: db 0 ; no emulation .Load_Segment: dw 0 ; the bios will load at 7C0:0 or 0:7c00 .System_Type: db 0 db 0 .Virtual_Sector_Count: dw 4 ; one CD sector .Load_RBA: dd (Boot_Sector-Bootable_CD)/2048 times 2048-($-BootCat.Bin) db 0 Primary_Directory_Records: Primary_1: .size: db 34 .extended_attribute: db 0 .location: lb_dd ((Primary_Directory_Records-Bootable_CD)/2048) .data_length: lb_dd 2048 binary_date 2005, 1, 1, 0, 0, 0, 0 .file_flags: db 2 .file_unit_size: db 0 .interleave_gap_size: db 0 .volume_sequence_number: lb_dw 0 .length_of_file_identifier: db 1 .file_identifier: db 0 Primary_2: .size: db 34 .extended_attribute: db 0 .location: lb_dd ((Primary_Directory_Records-Bootable_CD)/2048) .data_length: lb_dd 2048 binary_date 2005, 1, 1, 0, 0, 0, 0 .file_flags: db 2 .file_unit_size: db 0 .interleave_gap_size: db 0 .volume_sequence_number: lb_dw 0 .length_of_file_identifier: db 1 .file_identifier: db 1 Primary_Readme: .size: db .Primary_Readme-Primary_Readme .extended_attribute: db 0 .location: lb_dd ((Read_Me-Bootable_CD)/2048) .data_length: lb_dd (Read_Me.Read_Me-Read_Me) binary_date 2005, 1, 1, 0, 0, 0, 0 .file_flags: db 0 .file_unit_size: db 0 .interleave_gap_size: db 0 .volume_sequence_number: lb_dw 0 .length_of_file_identifier: db .Primary_Readme-.file_identifier .file_identifier: db "README.TXT",59,49 .Primary_Readme: times 2048-($-Primary_Directory_Records) db 0 Primary_Type_L_Path_Table: .size: db 1 .extended_attribute: db 0 .extent_location: dd ((Primary_Directory_Records-Bootable_CD)/2048) .parent_directory: dw 1 .directory_identifier: dw 0 times 2048-($-Primary_Type_L_Path_Table) db 0 Primary_Type_M_Path_Table: .size: db 1 .extended_attribute: db 0 .extent_location: msb_dd ((Primary_Directory_Records-Bootable_CD)/2048) .parent_directory: msb_dw 1 .directory_identifier: msb_dw 0 times 2048-($-Primary_Type_M_Path_Table) db 0 Supplementary_Directory_Records: Supplementary_1: .size: db 34 .extended_attribute: db 0 .location: lb_dd ((Supplementary_Directory_Records-Bootable_CD)/2048) .data_length: lb_dd 2048 binary_date 2005, 1, 1, 0, 0, 0, 0 .file_flags: db 2 .file_unit_size: db 0 .interleave_gap_size: db 0 .volume_sequence_number: lb_dw 0 .length_of_file_identifier: db 1 .file_identifier: db 0 Supplementary_2: .size: db 34 .extended_attribute: db 0 .location: lb_dd ((Supplementary_Directory_Records-Bootable_CD)/2048) .data_length: lb_dd 2048 binary_date 2005, 1, 1, 0, 0, 0, 0 .file_flags: db 2 .file_unit_size: db 0 .interleave_gap_size: db 0 .volume_sequence_number: lb_dw 0 .length_of_file_identifier: db 1 .file_identifier: db 1 Supplementary_Readme: .size: db .Supplementary_Readme-Supplementary_Readme .extended_attribute: db 0 .location: lb_dd ((Read_Me-Bootable_CD)/2048) .data_length: lb_dd (Read_Me.Read_Me-Read_Me) binary_date 2005, 1, 1, 0, 0, 0, 0 .file_flags: db 0 .file_unit_size: db 0 .interleave_gap_size: db 0 .volume_sequence_number: lb_dw 0 .length_of_file_identifier: db .Supplementary_Readme-.file_identifier .file_identifier: db 0,"R",0,"e",0,"a",0,"d",0," ",0,"m",0,"e",0,".",0,"t",0,"x",0,"t" db 0,59,0,49 .Supplementary_Readme: times 2048-($-Supplementary_Directory_Records) db 0 Supplementary_Type_L_Path_Table: .size: db 1 .extended_attribute: db 0 .extent_location: dd ((Supplementary_Directory_Records-Bootable_CD)/2048) .parent_directory: dw 1 .directory_identifier: dw 0 times 2048-($-Supplementary_Type_L_Path_Table) db 0 Supplementary_Type_M_Path_Table: .size: db 1 .extended_attribute: db 0 .extent_location: msb_dd ((Supplementary_Directory_Records-Bootable_CD)/2048) .parent_directory: msb_dw 1 .directory_identifier: msb_dw 0 times 2048-($-Supplementary_Type_M_Path_Table) db 0 Primary_Volume_Descriptor: .Volume_Descriptor_Type: db 1 .Standard_Identifier: db "CD001" .Volume_Descriptor_Version: db 1 .Volume_Flags db 0 .System_Identifier: times 32-($-.System_Identifier) db " " .Volume_Identifier: db "BOOTABLE_CD" times 32-($-.Volume_Identifier) db " " times 8 db 0 .Volume_Space_Size: lb_dd ((Boot_Sector-Bootable_CD)/2048) times 32 db 0 .Volume_Set_Size: lb_dw 1 .Volume_Sequence_Number: lb_dw 1 .Logical_Block_Size: lb_dw 2048 .Path_Table_Size: lb_dd 10 .Type_L_Path_Table: dd ((Primary_Type_L_Path_Table-Bootable_CD)/2048) .Optional_Type_L_Path_Table: dd 0 .Type_M_Path_Table: msb_dd ((Primary_Type_M_Path_Table-Bootable_CD)/2048) .Optional_Type_M_Path_Table: msb_dd 0 .Root_Directory_Record: .size: db 34 .extended_attribute: db 0 .location: lb_dd ((Primary_Directory_Records-Bootable_CD)/2048) .data_length: lb_dd 2048 binary_date 2005, 1, 1, 0, 0, 0, 0 .file_flags: db 2 .file_unit_size: db 0 .interleave_gap_size: db 0 .volume_sequence_number: lb_dw 0 .length_of_file_identifier: db 1 .file_identifier: db 0 .Volume_Set_Identifier: times 128-($-.Volume_Set_Identifier) db " " .Publisher_Identifier: times 128-($-.Publisher_Identifier) db " " .Data_Preparer_Identifier: times 128-($-.Data_Preparer_Identifier) db " " .Application_Identifier: times 128-($-.Application_Identifier) db " " .Copyright_File_Identifier: times 37-($-.Copyright_File_Identifier) db " " .Abstract_File_Identifier: times 37-($-.Abstract_File_Identifier) db " " .Bibliographic_File_Identifier: times 37-($-.Bibliographic_File_Identifier) db " " Primary_Volume_Creation_Date_and_Time: text_date "2005", "01", "01", "00", "00", "00", "00", 0 Primary_Volume_Modification_Date_and_Time: text_date "2005", "01", "01", "00", "00", "00", "00", 0 .Volume_Expiration_Date_and_Time: times 17 db 0 .Volume_Effective_Date_and_Time: times 17 db 0 .File_Structure_Version: db 1 times 2048-($-Primary_Volume_Descriptor) db 0 Boot_Record_Descriptor: .Volume_Descriptor_Type: db 0 .Standard_Identifier: db "CD001" .Volume_Descriptor_Version: db 1 .Boot_System_Identifier: db "EL TORITO SPECIFICATION" times 64-($-.Boot_System_Identifier) db 0 .Boot_Catalog_Sector: dd (BootCat.Bin-Bootable_CD)/2048 times 2048-($-Boot_Record_Descriptor) db 0 Supplementary_Volume_Descriptor: .Volume_Descriptor_Type: db 2 .Standard_Identifier: db "CD001" .Volume_Descriptor_Version: db 1 .Volume_Flags db 0 .System_Identifier: times 32-($-.System_Identifier) db 0 .Volume_Identifier: db 0,"B",0,"o",0,"o",0,"t",0,"a",0,"b",0,"l",0,"e",0," ",0,"C",0,"D" times 32-($-.Volume_Identifier) db 0 times 8 db 0 .Volume_Space_Size: lb_dd ((Boot_Sector-Bootable_CD)/2048) .Escape_Sequence: db 37, 47, 69 times 32-($-.Escape_Sequence) db 0 .Volume_Set_Size: lb_dw 1 .Volume_Sequence_Number: lb_dw 1 .Logical_Block_Size: lb_dw 2048 .Path_Table_Size: lb_dd 10 .Type_L_Path_Table: dd ((Supplementary_Type_L_Path_Table-Bootable_CD)/2048) .Optional_Type_L_Path_Table: dd 0 .Type_M_Path_Table: msb_dd ((Supplementary_Type_M_Path_Table-Bootable_CD)/2048) .Optional_Type_M_Path_Table: msb_dd 0 .Root_Directory_Record: .size: db 34 .extended_attribute: db 0 .location: lb_dd ((Supplementary_Directory_Records-Bootable_CD)/2048) .data_length: lb_dd 2048 binary_date 2005, 1, 1, 0, 0, 0, 0 .file_flags: db 2 .file_unit_size: db 0 .interleave_gap_size: db 0 .volume_sequence_number: lb_dw 0 .length_of_file_identifier: db 1 .file_identifier: db 0 .Volume_Set_Identifier: times 128-($-.Volume_Set_Identifier) db 0 .Publisher_Identifier: times 128-($-.Publisher_Identifier) db 0 .Data_Preparer_Identifier: times 128-($-.Data_Preparer_Identifier) db 0 .Application_Identifier: times 128-($-.Application_Identifier) db 0 .Copyright_File_Identifier: times 37-($-.Copyright_File_Identifier) db 0 .Abstract_File_Identifier: times 37-($-.Abstract_File_Identifier) db 0 .Bibliographic_File_Identifier: times 37-($-.Bibliographic_File_Identifier) db 0 Supplementary_Volume_Creation_Date_and_Time: text_date "2005", "01", "01", "00", "00", "00", "00", 0 Supplementary_Volume_Modification_Date_and_Time: text_date "2005", "01", "01", "00", "00", "00", "00", 0 .Volume_Expiration_Date_and_Time: times 17 db 0 .Volume_Effective_Date_and_Time: times 17 db 0 .File_Structure_Version: db 1 times 2048-($-Supplementary_Volume_Descriptor) db 0 Terminator_Volume_Descriptor: .Volume_Descriptor_Type: db 255 .Standard_Identifier: db "CD001" .Volume_Descriptor_Version: db 1 times 2048-($-Terminator_Volume_Descriptor) db 0 Boot_Sector: ; org 7C00h ;Doesn't really boot here? call @f db "Hello, world!", 13, 10, 0 @@: pop si mov ah, 0x0F @@: int 0x10 mov ah, 0x0E lods byte [cs:si] test al, al jnz @b xor ah, ah int 0x16 int 0x19 mov cx, 0 div cx ;No crash, no triple fault, no error, nothing X( |
|||
03 Dec 2008, 00:40 |
|
baldr 03 Dec 2008, 08:29
kdownload,
Strange, I'd just compiled your source, burnt image and it works as expected (i.e. displays "Hello, world!", waits for keypress, return to BIOS via int 19). Your mov cx, 0/div cx is unreachable, didn't you notice? By the way, which program are you using to burn CD, and how? |
|||
03 Dec 2008, 08:29 |
|
mikegonta 03 Dec 2008, 22:15
[ Post removed by author. ]
Last edited by mikegonta on 28 Jan 2009, 09:02; edited 1 time in total |
|||
03 Dec 2008, 22:15 |
|
Goto page 1, 2 Next < Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2024, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.