Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions 042-osdev-08/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Readme

## Changes

- added mode changing to 80x50
- added terminal backend character attribute changing API
- added string formatting API (sorry, no floats)
- reworked source files to use makefile based build system


## Building

Now building and cleaning everything is as simple as

```bash
make clean && make build
```

In this configuration it uses qemu instead of bochs (which I find kinda slow anyway...). Adding bochs support is relative easy anyway.


## Panic Contest

[![Image](http://i.imgur.com/qDneBv1.png)](http://i.imgur.com/qDneBv1.png "Preview")


## Author

Karol Grzybowski (2017)
77 changes: 0 additions & 77 deletions 042-osdev-08/build.py

This file was deleted.

46 changes: 46 additions & 0 deletions 042-osdev-08/build/build.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#!/usr/bin/python
import os
import subprocess
from glob import glob

def fix_stage1_size():
stage2_size = os.stat("bootloader/stage2").st_size
kernel_size = os.stat("kernel/kernel64.elf").st_size

stage2_size = (stage2_size + kernel_size + 511) / 512

if stage2_size >= 255:
raise Exception("stage2 & kernel are too large")

with open("bootloader/stage1", "rb+") as f:
d = f.read()
idx = d.index("\xb0\xcc\x90\x90")
d = bytearray(d)
d[idx+1] = stage2_size
f.seek(0)
f.write(d)

fix_stage1_size()

files_to_img = [
"bootloader/stage1",
"bootloader/stage2",
"kernel/kernel64.elf"
]

buf = []
for fn in files_to_img:
with open(fn, "rb") as f:
d = f.read()
print("length: " + str(len(d)))
buf.append(d)

if len(d) % 512 == 0:
continue

padding_size = 512 - len(d) % 512
buf.append("\0" * padding_size);

with open("floppy.bin", "wb") as f:
f.write(''.join(buf))

28 changes: 28 additions & 0 deletions 042-osdev-08/build/makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
include ../make/macros.mk

clean:
$(host.rm) ./floppy.bin

floppy.bin:
python ./build.py


QEMU_FLAGS = \
-m 2048 \
-cpu Haswell \
-D qemu.log \
-d cpu_reset,int,guest_errors \
-vga std \
-smp 4

QEMU_FLAGS_DEBUG = \
-serial file:serial.log

run-qemu: floppy.bin
qemu-system-x86_64 --fda $(<) $(QEMU_FLAGS) $(QEMU_FLAGS_DEBUG)
cat serial.log

run-bochs: floppy.bin

.PHONY: run-qemu run-bochs
build: run-qemu
File renamed without changes.
4 changes: 0 additions & 4 deletions 042-osdev-08/common.h

This file was deleted.

Binary file removed 042-osdev-08/floppy.bin
Binary file not shown.
14 changes: 0 additions & 14 deletions 042-osdev-08/hal.c

This file was deleted.

63 changes: 0 additions & 63 deletions 042-osdev-08/int_handlers.c

This file was deleted.

3 changes: 0 additions & 3 deletions 042-osdev-08/int_handlers.h

This file was deleted.

Binary file removed 042-osdev-08/kernel64
Binary file not shown.
Loading