PCS Lid
Hallo Piepers! Lang niet geschreven hier, en ik moet zeggen nu ik teruglees naar hoe ik vorige berichten geschreven heb ik niet zo trots ben op mezelf...
Maar! Daar zijn we hier niet voor. Een paar dagen terug heb ik namelijk v0.1 van de kernel afgerond, wat betekent dat de kernel zo goed als af is. Tenslotte kan het doen wat je ermee zou willen doen, namelijk het uitvoeren van programma's.
Dit is te zien in deze video (zie hieronder voor embedded versie). De kernel voert hier een heeeeeeeeeleee vroege versie van de command processor (CP) uit. Dit gebeurt als volgt:
Config file
Keymap
Een keymap (zoals 'usint.kl' in het config bestand) is gedefinieerd als een array van de volgende C-struct:
Opmerking
De echte uitgave van v0.1 van de kernel, kan het woord 'run' in een config bestand niet herkennen. De echte v0.1 zal de eerste regel dat geen comment is direct proberen uit te voeren als programma. In het config-bestand zou dan dus
Waar ik tot nu toe over gepraat heb is eigenlijk een tussenversie van de kernel die ergens tussen v0.1 en v0.2 ligt. De versie waarover gepraat wordt is hier te vinden.
Volgende keer
Zoals aangegeven gaat dit om een tussenversie gebaseerd op kernel v0.1 met een tussenversie van CP. Hierna zal echter nog kernel v0.2 komen, die met enkele verbeteringen komt (er zijn er al een aantal gedaan). Wanneer v0.2 en CP afgerond zijn, zal het gezamenlijk als Vireo/1 uitgegeven worden. Vireo/1 ('Vireo Release 1') is dan een bruikbare versie van het systeem. Daarna zullen er voorlopig geen nieuwe versies komen.
Maar! Daar zijn we hier niet voor. Een paar dagen terug heb ik namelijk v0.1 van de kernel afgerond, wat betekent dat de kernel zo goed als af is. Tenslotte kan het doen wat je ermee zou willen doen, namelijk het uitvoeren van programma's.
Dit is te zien in deze video (zie hieronder voor embedded versie). De kernel voert hier een heeeeeeeeeleee vroege versie van de command processor (CP) uit. Dit gebeurt als volgt:
- Wanneer de kernel opstart zal het het bestand 'config' lezen op de opstartschijf (voor inhoud config-bestand, zie hieronder).
- De kernel zoekt voor de eerste regel in het config-bestand waar het woord 'run' staat, en voert het programma in het pad na dit woord uit. Dit is CP.ELF, ofwel de binary van de command processor.
- De command processor start op en leest hetzelfde config bestand. Het zal zoeken voor elke regel waar het woord 'load' staat en zal de binaries in de paden registreren als drivers aan de kernel (in dit geval alleen de toetsenbord driver genaamd 'ps2keyb.drv').
- De command processor laadt de keymap die in het config bestand staat. De keymap wordt gebruikt om toetsen op het toetsenbord om te zetten naar de juiste karakters ('a' t/m 'z', '0' t/m '9' en speciale karakters zoals '/', '[', etc.).
- De command processor zal zich aankondigen aan de toetsenbord driver als een 'subscriber' (een programma dat graag geüpdatet wil worden wanneer een nieuwe toets wordt ingedrukt).
- De command processor wacht totdat de gebruiker de [ENTER] toets heeft ingedrukt en gaat vervolgens proberen het getypte commando uit te voeren.
Config file
Code:
# keywords and -symbols:
# * `run` (load a binary)
# * `load` (load a driver)
# * `#` (comment)
#
# Not case sensitive.
# Anything else is ignored (i.e. the symbols/lines '[kernel]' and '[drivers]' have no real function).
[kernel]
run /bin/cp.elf test
[drivers]
load /sys/ps2keyb.drv
[settings for cp]
keymap /sys/usint.kl
keyb_drv_name PS2KEYB.DRV
Keymap
Een keymap (zoals 'usint.kl' in het config bestand) is gedefinieerd als een array van de volgende C-struct:
C:
typedef struct keymap_entry_t
{
char lc; // lowercase karakter (bijv. 'a')
char uc; // uppercase karakter (bijv. 'A')
uint16_t scancode; // scancode van de driver (bijv. 0x0302 - de 'A'-toets op een
// QWERTY-toetsenbord).
} __attribute__((packed)) keymap_entry_t;
Opmerking
De echte uitgave van v0.1 van de kernel, kan het woord 'run' in een config bestand niet herkennen. De echte v0.1 zal de eerste regel dat geen comment is direct proberen uit te voeren als programma. In het config-bestand zou dan dus
/bin/cp.elf test
moeten staan in plaats van run /bin/cp.elf test
om het programma CP.ELF uit te voeren.Waar ik tot nu toe over gepraat heb is eigenlijk een tussenversie van de kernel die ergens tussen v0.1 en v0.2 ligt. De versie waarover gepraat wordt is hier te vinden.
Volgende keer
Zoals aangegeven gaat dit om een tussenversie gebaseerd op kernel v0.1 met een tussenversie van CP. Hierna zal echter nog kernel v0.2 komen, die met enkele verbeteringen komt (er zijn er al een aantal gedaan). Wanneer v0.2 en CP afgerond zijn, zal het gezamenlijk als Vireo/1 uitgegeven worden. Vireo/1 ('Vireo Release 1') is dan een bruikbare versie van het systeem. Daarna zullen er voorlopig geen nieuwe versies komen.