Jump to content

jaclaz

Member
  • Posts

    21,300
  • Joined

  • Last visited

  • Days Won

    53
  • Donations

    0.00 USD 
  • Country

    Italy

jaclaz last won the day on June 2 2023

jaclaz had the most liked content!

7 Followers

About jaclaz

Contact Methods

  • Website URL
    http://jaclaz.altervista.org/

Profile Information

  • OS
    none specified

Recent Profile Visitors

49,628 profile views

jaclaz's Achievements

2.1k

Reputation

  1. Mind you I am re-building this justification from memory and from re-reading some ten years later the files, so don't count too much on the accuracy of the details, but the general idea should be correct. The idea is (was) that a number of BIOSes (or programs) want to have as first sector a MBR, while some other want to use a volume (i.e. first sector is a bootsector/VBR) The original makebootfat code/approach (only valid for FAT) is to prepend a sector to a normal volume, then: 1) have in this sector the MBR code and a partition table covering itself and the following volume 2) have in this sector a copy of the BPB of the original VBR but with an added "hidden sector" (or "sectors before +1") So, if you look at it with a MBR viewer, it should be valid, and as well if you look at it with a VBR viewer it should be valid. The code is (should be) code. Once executed, it would map the whole stuff, execute the MBR boot code and the PBR boot code sequentially. With NTFS, since we cannot prepend a sector to the $Boot (the 16 sector VBR for NTFS) I tried to have the same effect by simplifying the original MBR code to save space and putting it in holes of the VBR code, hence there is the need to load the same sector twice, the first time as MBR code, the second as VBR code, and this is the purpose of the 42 flag. What happens is (should be) that: 1) sector is loaded (by the BIOS) at 0:7C00h but moved to 0600h (this is in the original makebootfat) 2) a check for 42 at 0602 makes it continue using the MBR code or the VBR code 3) since initially the byte is NOT 42 it continues with MBR code (that sets the 0602h byte to 42) 5) the MBR code execution continues on the copy at 0600h 6) and the sector is loaded at 7C00H 7) the SAME code (since it is the SAME sector) is executed but this time the byte at 7C02h (copied from 0602h) is 42 so it continues with the VBR code
  2. I don't know. The value 42 is written later at 0x0602: at first pass both 0602 and 7C02 should be NOT 42. at second pass BOTH should be 42. Anyway whichever works, works.
  3. From the source code (scarce) comments I wrote at the time, the 42 is just a flag of sorts, it is used to tell the bootcode what to load, if you prefer a switch: And yes, the first part of the "dual-use" mbr/pbr (up to the FA31C0) must be filled wit the original BPB of the NTFS volume, while the "dummy part entry" should be replaced with the actual volume size as partition data.
  4. This is another useful source for NASM fiddling: http://goncharov.pp.ru/en/osboot.htm The makebootfat things always worked for me (with the notable exception of some InsideH2o ones), but as you well know BIOSes are strange things. And yes, the MINI-MBR approach is a very nice one. Unfortunately Nuno has disappeared from radars, so I believe that yes, reboot.pro is gone. I am still in contact (like once a year we send each other a ping) with erwan.l , he does have some old backup/archive of the board (mid 2020 if I recall correctly) that could - in theory - be possible to put again online as read only. But don't count too much on it. I am attaching the result of some of my old fiddling with the Anvin/Mazzoleni code, maybe it is useful to you. Mbr_NTFS_BS_001.zip
  5. As I see it 144/64/32 is a good guess, though I don't think that we will ever know if accurate. I believe the Caleb UHD 144 was never adopted in meaningful numbers, so it is only for completeness. But then you should add also the previous Insite 20.8 Mb "floptical": https://wiki.preterhuman.net/Floptical 755/2/27 with sector size selectable between 256, 512 and 1024 bytes.
  6. Well, you did a lot of work, very good . There is something else that may be of use to the old tinkerers, the makebootfat approach to have a disk that is at the same time a floppy and a partitioned disk: https://www.advancemame.it/doc-makebootfat.html Also (JFYI) check this: http://reboot.pro/topic/12436-usbzipls120-booting-with-minimalist-mbr-code-and-grldr/ it may contain something useful.
  7. Only to clarify, making a partition active doesn't touch at all the partition itself, what "make active" means actually "mark the partition as active in the corresponding MBR partition table entry (by writing 0x80 in the appropriate field)", it is essentially flipping a flag to allow the MBR code to know which partition boot record is to be chainloaded . On a GPT partitioned disk there is not really a MBR, its place is taken by a "protective MBR" that has only a table with a single entry with a special partition type (0xEE) that spans the whole disk and is there to tell older programs that they shouldn't touch the MBR partition table.
  8. They needed this user script: https://msfn.org/board/topic/184051-my-browser-builds-part-4/page/203/#findComment-1258499 but until yesterday they worked just fine with it. Maybe there is another (new) userscript needed. Will try supermium.
  9. It seems that - starting today - Discourse based forums are not anymore accessible (with Palemoon/Newmoon 27.9.6). Is there a (new) version (of NewMoon/Serpent/whatever) that still works (running on XP 32 bit)?
  10. You seem like assigning a value to the DRIVE variable, but later you use the USBDRIVE one. Also, you have bo provision should the file/folder be not found (empty variable). Besides that, depending on the OS and machine, the "IF EXIST" may be not the right way, see starting from here:
  11. Let's first thing remove some basic conceptual errors. 1. there is no such thing as relative physical sector, a physical sector is always absolute, its LBA is the number of sectors before it from the start of the disk, there is very little so absolute as the first sector of a disk. 2. a logical volume inside extended partition is in NO way different from a primary volume (ONLY the way it is addressed, in the chain of EMBR's (sometimes called EPBR's) vs. directly in the MBR is different, which implies that the Sectors Before in the VBR are relative to the EMBR and not to the MBR, but it can be corrected and have a logical volume be bootable), see the usual: https://www.goodells.net/multiboot/index.shtml (i.e. transforming a relative address to its absolute one) 3. alignment: there are only two main types of alignment (in MS world, Linux - generally speaking - does *whatever*), the 63 (actually last sector of cylinder/head, so if the device has CHS of X/Y/63 it is 63, if the device is X/Y/32 it is 32, etc.) and the Megabyte one, which is a (wrong) implementation of the actual new approach (offset being a multiple of sector size, page size and cluster of the filesystem) to all practical effects this could have been done on 128 sectors or less (128 sectors is multiple of 2, 4, 8, 16, 32, 64 sectors) , for whatever reason Microsoft decided that 1 MiB 1024*1024=1048576 bytes was a "better" multiple, this creates the now common initial CHS of the first partition of 0/33/32 or LBA 2048. 4. the gap between partitions. Most if not all partitioning programs leave no gap between partitions, which if you think about it is automatic, the first partition needs a gap to be aligned to the desired standard, then it is created with a size aligned to the same standard, so next partition will necessarily be aligned, and so on. The EMBR chain, of course creates before each logical volume a gap, the same size of the first one. Until you will have fully and completely learned and understood the information on the given goodells.net page you will only get confused, everyone uses a slightly different terminology to call the same things and some concepts need to be digested. jaclaz
  12. It all revolves around the same project by ChrisR, Win10pese that evolved into Win10xpe, now on github: https://github.com/ChrisRfr/Win10XPE
  13. I thought that was SPECTRE: https://en.wikipedia.org/wiki/SPECTRE "Special Executive for Counter-intelligence, Terrorism, Revenge and Extortion" jaclaz
  14. What we, highly specialized technicians, call "sweeping the dirt under the rug".
  15. Only for the record, it wasn't stolen, and it doesn't mean letter. Telegramma means telegramma, NOT lettera. Telegram is an English word alright, and means, like in Italian, a message (a letter if you like, but usually telegrams were way shorter than a letter or would have costed an arm and a leg) sent through the telegraph: https://en.wiktionary.org/wiki/telegram#English https://en.wikipedia.org/wiki/Telegraphy#Telegram_services of course the root is the same of telegraph, from Greek tele (distant) and graph-ma (letter/written message from graphein to write). Telegraph is the method technology, telegram is the message delivered through that technology. Of course the English don't use it, replacing it with wire or cable. Curiously enough, the Russian word for it - besides cyrillic transliteration - is телеграмма more similar to the Italian, or to the French télégramme.
×
×
  • Create New...