I realized something useful when redoing the boot sector on my drives. I can leave the old 16 byte partition table intact and simply use my own list that derives from it and extends it. I can have a simple list with disk address as LBA and what is there and how to initiate it. It doesn't disturb the existing structure in any way, just makes it more normal. I don't care if partition x is descendant of partition Y and that the partition table is full. Certainly there cannot be overlap in the LBA range as one OS would write in the space of another. The problem I see is that this type of table was created on the fly in the 80's or so and is some childish idea of how to do a partition for a computer that is stupid and slow.
By making this a list that is displayed and selected, I take all the techno bull shit out of it. It is a list like every other list in the entire computer and can be handled with the same methods and language as any other. By making hexadecimal structured lists like this with unusual interfaces the manufacturer, Microsoft and many others allow their products to be locked in at such a complexity that it will never be resolved. The bad side effect is that as you extend the process it becomes so tangled that it fails by tripping over its own design.
Do I really need to say struct listOfOsPartitions{ int* startSector ; char* osName ....} or can I say "The list is structured in three parts that are the starting sector, the ending sector, and the name". I can just as easily parse this for every list type that I encounter. "The list is structured" "in " "parts" "which are" ,,, The idea that computer names or commands cannot have spaces is a restriction imposed by the lack of computing power and the creativity of the implementer. I could not type "The pist is sloctered " and expect it has meaning, however I can just as easily make this something that any person in the world could recognize. The method of analysis is inherent in the understanding and application. I could say that "" means literally , but I can also say "this is literally" and execute that before analyzing it as a different sequence. By making a symbol that represents literal in the interpreter it is designing a new language when the one which exists has all the facilities present within it. By creating a new shorthand for common concepts in a particular science it obfuscates the meaning.
The number of possible unique character concepts and strings is limited and is no more cumbersome to a code completion IDE than {} () std::cout<< or any other contrived symbolic representation. Is it really necessary for a programmer to learn that std::cout<< is the computer Latin for putting this on the console? Words are not always words, even though they appear the same. In some context the word word is not meant to convey the concept of word, but simply the sequence of symbols. In this way an interpreter does this, however it requires a symbol to tell it that, but underneath it has marked that data as literal and thus it isn't interpreted in the stream of analysis anyway. It is necessary to make things more complex before they become simple again. By attempting to resolve language at the unicode level a person adds a layer of impossible obfuscation as the intent which must be conveyed is already lost. Translation must take place at a lower level to be possible.
A rotating storage device has sector data and I won't go into things like preambles and sync or NRZI as they are like describing the atoms of my bike when I ride. So it is a list of sectors. Why is it necessary to establish a new and convoluted method to say that I wish to use 240,000 consecutive sectors to store a system of data? I know the structure of a partition table and boot sector and how directory elements are stored for many different models. It isn't that I can't understand it, it is that I think it is backward and is one of those things that grow like a tumor. There is no plan other than to conceal. So I am back to Hannnibal Lecter again. "How do they begin to covet? Clarisse."
So when I boot the computer I use a table that has a list of places that includes the physical drives and it exists on all drives that can be used as the boot drive. I may change my bios and do some fixing there too. It is just flash and I have done a complete independent assembly language write of the entire BIOS before, many times, so it is very familiar territory. I know more about VESA than I care to admit.
The bottom line and the reason for the name of the post is that all the times I used a partition table and complained, I never considered that it could just be done differently and be done with it. I know that the rest of the operating system is as much a tangled ball of technical crap also and I do understand what those are, even with Windoze. Windowze is the worst and the amount of useless code and arbitrarily complex interfaces is worthy of the kings that produce it. In other words it is worthless as it only serves to lock the user into the language of the person who is manipulating the user. That is kind of a misnomer, when it comes to commercially developed products that lock people in, they would better be called slaves or "being used" than user.
That was an interesting realization and I will have to look at other methods to see if they only exist to confound and confine. It isn't just removing a failed part here. I know what is going on down under the code and this isn't as simple as I make it sound. Sometimes it is necessary to leave CPU registers in a known state between things that have no defined interface whatsoever. Each time I clean one of these interfaces it becomes easier as I can remove that machine code glue that holds two poorly designed parts together and replaces them with a simple standard part that operates exactly like every other part in the design. CHRN, what fond memories.( Cylinder, Head, Record, N factor )
0 comments:
Post a Comment