b'\n_START_ARTICLE_\nCosmos (sistema operativo)\n_START_SECTION_\nScrivere codice su Cosmos\n_START_PARAGRAPH_\nUn sistema operativo scritto su Cosmos nasce come un progetto basato su .NET (precisamente un\'applicazione per console). Prima di tutto, lo sviluppatore deve selezionare l\'apposito template Cosmos e da qui selezionare quale linguaggio utilizzare per scrivere il Sistema Operativo (attualmente C#, VB.NET e F# sono supportati). La Classe kernel mette a disposizione 2 metodi BeforeRun() e Run(). In BeforeRun() va scritto il codice che viene eseguito prima che il kernel parta per esempio:_NEWLINE_protected override void BeforeRun(){_NEWLINE_   // Write you inizialization code here_NEWLINE_   Console.WriteLine("Cosmos booted successfully. Type a line of text to get it echoed back.");}_NEWLINE_Nel metodo Run() invece va scritto il codice proprio del Sistema Operativo tipicamente per esempio:_NEWLINE_protected override void Run(){_NEWLINE_    // Write your OS code here..._NEWLINE_    Console.Write("Input: ");_NEWLINE_    var input = Console.ReadLine();_NEWLINE_    Console.Write("Text typed: ");_NEWLINE_    Console.WriteLine(input);_NEWLINE_    //Add further code here...}_NEWLINE_Il codice dentro il metodo Run() sar\xc3\xa0 eseguito dentro a un loop del Kernel di Cosmos non \xc3\xa8 necessario scrivere while(true) o altri costrutti per creare un loop infinito (e potrebbe anche essere dannoso perch\xc3\xa9 il resto del Kernel non potrebbe girare)._NEWLINE_In un sistema operativo pratico, lo sviluppatore sostituir\xc3\xa0 // Write your OS code here... con il codice del suo sistema operativo. Questo codice pu\xc3\xb2 usare ogni oggetto presente nella libreria del .NET Framework supportati da Cosmos (o si crea una traduzione dell\'oggetto nel codice macchina tramite costrutti chiamati Plugs). Inoltre pu\xc3\xb2 chiamare una delle librerie incluse in Cosmos.\n_START_SECTION_\nIl Cosmos User Kit e Visual Studio\n_START_PARAGRAPH_\nIl Cosmos User Kit \xc3\xa8 una parte di Cosmos progettata per rendere Cosmos semplice da usare per gli sviluppatori che usano Microsoft Visual Studio. Appena installato, l\'utente pu\xc3\xb2 creare un nuovo tipo di progetto. chiamato Cosmos Project. Esso consiste in una versione modificata del template della applicazione per console, che usa il compilatore IL2CPU e lo scheletro del codice di avvio viene gi\xc3\xa0 aggiunto.\n_START_SECTION_\nCompilare un progetto\n_START_PARAGRAPH_\nUna volta che il codice \xc3\xa8 completo, un utente potr\xc3\xa0 compilare l\'intero progetto usando il compilatore .NET preferito. Cos\xc3\xac si convertir\xc3\xa0 il codice sorgente costituente l\'applicazione (scritta in (C# o altro linguaggio .NET) nel Common Intermediate Language (CIL), il linguaggio nativo del .NET Framework. In Visual Studio questo avviene semplicemente il tasto Start il che provverder\xc3\xa0 a compilare il codice, convertito in assembler attraverso IL2CPU e far partire VmWare Player con il Sistema Operativo appena creato. \xc3\x88 possibile selezionando le propriet\xc3\xa0 del progetto scegliere come avviare il progetto - tramite emulatori come Bochs, Virtual PC e VMWare, scrivere il sistema su immagine ISO che pu\xc3\xb2 essere masterizzato su CD-ROM e usato come Live Cd, o tramite avvio di rete PXE - insieme alle impostazioni per il debug usando il debugger fornito con Cosmos, e varie altre impostazioni.\n_START_SECTION_\nOpzioni per il debug\n_START_PARAGRAPH_\nCosmos offre varie opzioni per scegliere come eseguire il debug del sistema operativo.\n_START_SECTION_\nVirtualizzazione\n_START_PARAGRAPH_\nCosmos permette agli utenti di avviare il proprio sistema operativo nell\'ambiente virtualizzato usando una macchina virtuale. Ci\xc3\xb2 permette allo sviluppatore di testare il sistema nel proprio computer senza la necessit\xc3\xa0 di riavviare, dando i vantaggi di non richiedere hardware aggiuntivo e permette allo sviluppatore di rimanere nel suo ambiente operativo (IDE). Cosmos permette l\'utilizzo di 3 emulatori: Bochs \xc3\xa8 un emulatore gratuito . VMWare \xc3\xa8 un altro emulatore, commerciale, scaricabile dal sito di VmWare. Siccome Cosmos pu\xc3\xb2 essere inserito all\'interno di un\'immagine ISO, pu\xc3\xb2 essere avviato anche su qualsiasi altro emulatore che supporta l\'avvio da ISO avviabile (esempio, Virtual PC)._NEWLINE_Un\'altra caratteristica disponibile con Bochs \xc3\xa8 il debugger che permette all\'utente di seguire direttamente attraverso il codice sorgente, similmente come il debugger di Visual Studio mentre il sistema gira su Bochs. Questo avviene grazie all\'aggiunta di codice all\'interno del sistema operativo creato, che permette di comunicare con il debugger di Cosmos attraverso una rete virtuale.\n_START_SECTION_\nImmagine disco\n_START_PARAGRAPH_\nQuesta opzione scrive il sistema operativo in un\'immagine ISO, che pu\xc3\xb2 essere caricata in alcuni emulatori (come Virtual PC) o masterizzata su CD-ROM e avviata nativamente.\n_START_SECTION_\nAvvio tramite rete PXE\n_START_PARAGRAPH_\nQuesta opzione permette al sistema operativo di essere avviato nativamente senza ricorrere ad un software di virtualizzazione. I dati sono inviati tramite una rete LAN al terminale client. \xc3\x88 richiesto l\'utilizzo di due terminali - uno come terminale client (nel quale il sistema sar\xc3\xa0 avviato) e l\'altro come terminale server (solitamente il terminale dello sviluppatore). Richiede anche una rete tra i due terminali, e il terminale client deve avere una scheda di rete e un BIOS che sia capace di avviare tramite PXE.\n_START_SECTION_\nCosmos Assembler\n_START_PARAGRAPH_\nIl team del progetto Cosmos ha anche creato un assembler che sar\xc3\xa0 il principale per il progetto. Comunque, \xc3\xa8 ancora lento e inefficiente, perci\xc3\xb2 si sta usando invece l\'assembler NASM.'