-
Notifications
You must be signed in to change notification settings - Fork 6
Story
Everything started when i accidentally found CD Disk/Ray in wiremod tab, i suddenly decided try to make it work. First attempts was unsuccessful. After some time i also found an wire DHDD, and because i wanted to learn how real file systems works at low level and also learn about bit operations i started coding own file system. Because i have big experience in PHP i started coding it in PHP first, it has good debug features and easier to understand whats wrong, while e2 is much more complicated in this case.
When i did few tests i realized that each cell is 32bit number what can hold up to 4 bytes data, and not 1 bit like wiremod tell us. It even can hold more in lua, but bit operations limited to 32 bits. After some time i got first working version of file system in php and started moving to e2. First e2 version was working only with wire unlimited, and had much of crashes due to e2 limitations. So everything must be recoded to make it e2-friendly. This took some time and i implemented own command queue interface (API) what make possible file system to work in e2.
But having only file system without any GUI is useless, so i started coding some GUI for it. While coding i understand that i need even more - make analog of real PC. If i want to work with multiple DHDDs as banks and multiple HDDs, then it need some BIOS/OS environment, os installation etc. So code grows much and much more.
Also i decided to do BMP parser in e2, because having fs/os is ok, but it need some action here. But because E2 lack of null byte i almost fail to do this, but accidentally discovered that wire gate "to character" returns null byte! Also there was possible to store it inside e2 script itself (but with e2 editor error). So i decided use wire gate and with this successfully parsed with BMP files in E2.
In final i have did released first version of my PC and OS with WM1 file system for DHDD. Bit later i tried to make CD Drive, but fail due to critical bug in it what leads to data corruption, i created pull request to wiremod, and because i'm very tired i stopped developing of it.
After some time, when i again got free time i decided to finish my work. My pull request already was merged and workshop version of wiremod also got updated so i can continue. It still was hard due to much other bugs, i thought that it still impossible to do, but then i did some own calculations in E2 switch make possible to do this task even with buggy wiremod CD ray. This includes own sector calculations without rely on cd ray data. Another hard part was to code cd burner what burn data in ascending order without array/table sort functions in E2.
So all this stuff took some time to do and finally i got working version on wire CD Drive. After some testing/polishes its ready to go and i releasing this new version with much of other changes!
With this project i got big experience of understanding how file systems works, also understand how to work with directly with bits.
Thanks for reading, i hope you will have some fun to play with it.