Updatemelding November 2018

maarten70

Gevestigd lid
Offline
#1
Deze maand is er een milestone gehaald! Het lijkt misschien niet veel, maar het betekent wel veel.

Nieuw:
- Er is een functie die tekst kan omzetten van uppercase naar lowercase en andersom TransformUpLowUC
- ATA hardeschijven kunnen gelezen en geschreven worden

TransformUpLowUC, vraagt om een stuk tekst en gooit het dan om van lowercase naar uppercase of andersom. Dit kan in de toekomst handig zijn voor bijvoorbeeld CAPSLOCK. Dit is gedaan met behulp van de ASCII table, een lijst met 'alle' karakters die er zijn (industrie-standaard). De ASCII table wordt standaard door de computer gebruikt. In deze lijst heeft het lowercase karakter altijd een waarde van 32 hoger dan de uppercase. Alle karakters hebben namelijk een waarde. De kleine 'a' zou dus de waarde van A + 32 hebben. A heeft een waarde 65 en de a heeft een waarde van 97; 65 + 32 = 97. Dit maakt het dus heel makkelijk om te doen. Dit geldt alleen niet voor cijfers en leestekens, alleen de letters.

ATA hardeschijven (niet te verwarren met SATA):
ATA staat ook wel bekend als IDE, echter is er een verschil. IDE (Integrated Drive Electronics), ook wel Parallel ATA, is de hardware specificatie, de electronica ervan. ATA is de standaard specificatie (dus eigenlijk de software specificatie). Het is dus hetzelfde, maar officieel heet het ATA en niet IDE.

Om dit te testen heb ik een virtuele hardeschijf gebruikt. Voor zij die niet weten wat dat is: Dat is eigenlijk gewoon een bestand (net zoals een tekst bestand) die zich voor doet als hardeschijf. Hierop of -in (hoe je het ook wilt noemen :)) staat dan de data van de bestanden die erop staan. Het werkt praktisch gezien hetzelfde als een echte hardeschijf.

Dankzij het feit dat het een bestand is kan je deze openen met een hex-editor, dit is een programma dat binaire bestanden omzet in hexidecimale getallen en voor een programmeur is dit heel erg handig. Hiervan kan je afbeeldingen vinden in de bijlagen.

Er zijn verschillende manieren om de data van een ATA hardeschijf te lezen en te schrijven: PIO en DMA. Wat ze betekenen is niet heel erg belangrijk, het enige dat wel handig is om te weten is dat PIO hartstikke langzaam is en DMA kei snel. Momenteel gebruikt BirdOS PIO, ik ben bezig met DMA aan de gang te krijgen maar geen idee hoe lang dat duurt. PIO is voor nu prima, het is snel genoeg, maar over een poosje waarschijnlijk niet meer aangezien BirdOS dan moet gaan multitasken. En dan is de snellere manier beter.

Dan nu... De afbeeldingen. De waardes van BirdOS moet je omdraaien (3CEB wordt EB3C), dit hoort zo te zijn. De laatste waarde ('buf: 000000000' helemaal onderaan) is de allerlaatste waarde van de hardeschijf. De rede dat je ineens de laatste waarde daar hebt staan is omdat BirdOS niet weet hoe het moet scrollen dus schrijft het op een gegeven moment alsmaar op dezelfde plek op het scherm als het bij het einde van het scherm komt.



Voor wat er op de hardeschijf staat, zie bijlage (read.png).
Dit is dan vervolgens ook weer geschreven naar de hardeschijf (by_birdos.png). Het shcrijft dat wat het gelezen heeft 2x512 bytes (1024 bytes) verder.


Problemen (bugs en dingen die niet werken):
- CD-ROMS a.k.a. de ATAPI schijf, werkt niet terwijl dat wel zou moeten. De rede waarom is duidelijk, alleen niet hoe het opgelost moet worden.

Wat nu?
Nu is het vooral drivers maken voor bestandssystemen zoals FAT32 en DMA. Samen met iemand anders ben ik bezig met een ander bestandssysteem te ontwerpen, deze zal ooit ook een keer ondersteund worden. Na de bestandssystemen ga ik een eigen bootloader maken zodat we ook vanaf de hardeschijf op kunnen starten en we niet afhankelijk zijn van GRUB. Daarna kunnen we dan aan de slag met VBE: 'VESA BIOS Extension'. VESA is een bedrijf dat de standaarden binnen de grafische kaarten en monitoren industrie bepaalt. Wanneer dat er is kunnen we hogere resoluties dan 80x25 ondersteunen (waaronder als het goed is 1920x1080).

Welke bestandssystemen, naast FAT32 en de andere, is het niet duidelijk welke ondersteund gaan worden.

Vragen zijn welkom, zoals altijd. :)
 

Bijlagen

OP
OP
maarten70

maarten70

Gevestigd lid
Offline
#2
Het is best wel irritant, met de ATAPI. Ik weet wat het probleem is, alleen niet wat het veroorzaakt. Het is nu al iets van een week zo.

De ATAPI zou een interrupt moeten sturen wanneer het z'n data kan doorspelen naar de kernel. Dat gebeurt niet, waardoor het nooit gelezen wordt.

Echt irritant.
 

Abraham54

Beheerder
Ondersteuning
Offline
#3
Neem er eens even afstand van en ga een paar dagen iets anders doen.
Onbewust zijn je hersens gedeeltelijk wel met probleem bezig en kan je opgeven moment ineens een oplossing voor je ogen zien!
 
OP
OP
maarten70

maarten70

Gevestigd lid
Offline
#4
ATAPI probleem is opgelost!!!



Uiteindelijk lag het aan dat ik te snel dingen geloofde die ergens stonden blijkbaar, ik hoefde (blijkbaar) niet te wachten op de interrupt terwijl dat wel zo gezegd werd bij de documentatie.
 

Abraham54

Beheerder
Ondersteuning
Offline
#5
Weer wat geleerd denk ik dan maar.......
 
OP
OP
maarten70

maarten70

Gevestigd lid
Offline
#7
Als BirdOS een soort van klaar is ga ik het open source maken. Maar nu wil ik het leren met zo min mogelijk invloed van buitenaf. :)

64-bit blijkt ook niet zo moeilijk te zijn dus dat komt ooit ook een keer, nadruk op ooit.
 
Bovenaan Onderaan