Sourcecode Fortschritt
-
Version 0.0.1.35 - Rev. 596:
vm86.h/c eingebaut, damit es mal los geht
-
Version 0.0.1.36 - Rev. 597:
(Experimentalzustand bezüglich VM86)vm86 modul verankert in paging.c, task.c, irq.c und testweise umgesetzt in ckernel.c mit einem Programm vidswtch.com, das via incbin (data.asm) eingeschleust und im Speicher bei 0x100 zur Ausführung im VM86 positioniert wird.
Screenshot: http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_36_vm86.PNG
Startet man vidswtch.com unter Win XP: http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_36_vm86_windows.PNG
vidswtch.asm:
[bits 16] [section .text] mov ax, 0013h int 10h int 3
INT 10h mit AH = 00h u. AL = 13h: Grafikmodus, 320 x 200 Pixel, 256 Farben (ab MCGA)
-
Version 0.0.1.37 - Rev. 598
- Bugfixes&Ergänzungen bei semaphores
- VM86-Dateien nach user/vm86 verlegt
- makefile baut die o.g. Dateien
- Projektfile aktualisiert
-
0.0.1.38 - Rev. 599:
r->... und ctx-> zurück gemappt
-
rev. 600:
neuer versuch mit kleinem asm-prog
-
rev. 601:
asm-prog ausgetauscht für tests problem: popf ??
-
rev. 602:
vm86.h in ordnung gebracht und fehlende opcodes (in/out) in vm86.c ergänzt, fehlen noch die Umsetzungen von echtem in/out.
case 0xEF: // outw printf("outportw(edx, eax) does not yet work\n"); // outportw(edx, eax); ctx->eip = (uint16_t) (ctx->eip + 1); return true; case 0xEE: // outb printf("outportb(edx, eax) does not yet work\n"); // outportb(edx,eax); ctx->eip = (uint16_t) (ctx->eip + 1); return true; case 0xED: // inw printf("inportb(edx) does not yet work\n"); // eax = inportb(edx); ctx->eip = (uint16_t) (ctx->eip + 1); return true; case 0xEC: // inb printf("inportw(edx) does not yet work\n"); // eax = (eax & 0xFF00) + inportb(edx); ctx->eip = (uint16_t) (ctx->eip + 1); return true;
... muss context_v86_t erweitert werden. In registers_t ist das alles drinnen, evtl. gleich ganz ersetzen.
-
0.0.1.39 - Rev. 603:
irq.c und vm86.c: Korrekturen und in/out ergänzt
task.c: create_vm86_ctask eingefügt
-
0.0.1.40 - Rev. 604:
Korrekturen im vm86 Modul (bezüglich useresp)
-
0.0.1.41 - Rev. 605:
Korrekturen in vm86.c: ... noch weitere stack[0] und stack[2] vertauscht
Folgendes machen, wer den neuen Video Mode (320*200, 16 Farben, ab 0xA0000) sehen will:
irq.c, zeile 164: // waitForKeyStroke(); auskommentieren
-
0.0.1.42 - Rev: 606
vm86.h/c modul weiter bereinigt/optimiert
irq.c verbessert
neues vidswtch.asm (Beispiel) schaltet 320*200 Modus ein und dann zurck auf 80*50
-
0.0.1.43 - Rev: 607:
vbe.h integriert
Screenshot (PrettyOS in 320*200 Auflösung): http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_43_vm86_grafik.PNG
Problem: real PC funktioniert nicht
-
0.0.1.44 - Rev: 608:
HLT noch eingebaut in vm86.c (dort exit() aus task.c)
-
Rev. 611:
wurde versehentlich einzeln geschickt
neu: vbe.c
-
0.0.1.46 - Rev: 612
vbe.h/c weiter ergänzt. SetPixel getestet, funktioniert noch nicht, wie es soll.
-
0.0.1.47 - Rev: 613
SetPixel funktioniert!
Problem war die y-Auflösung, die qemu hier bietet.
Da stehen keine 200 zur Verfügung.Daher nun 13 gewählt für y. setPixel Klappt!
Problem ist im noch vm86-handler-modul. Die BIOS-Fkt. werden noch nicht wie im RM (z.B. test im bootloader) ausgeführt.
-
0.0.1.48 - Rev: 614
vm86-handler noch korrigiert, ändert aber nichts am video-verhalten
-
0.0.1.49 - Rev: 615:
Noch einige Korrekturen bei vm86.c (helfen aber leider nicht)
Bei rev. 607 wurde "PrettyOS" korrekt dargestellt, was die y-Auflösung angeht. Bitte Unterschied suchen helfen!
-
0.0.1.50 - Rev: 616:
vm86.c: ip++ bei ctx->eip++ ergänzt
-
0.0.1.51 - Rev: 617:
weitere Korrekturen in vm86.c (cs:eip und ip)
Löst aber immer noch nicht das Grafikdarstellungsproblem