mirror of
https://github.com/wichtounet/thor-os.git
synced 2025-09-07 11:31:04 -04:00
Create a program reading the keyboard
This commit is contained in:
parent
abb60e4232
commit
45c9d1276f
6
Makefile
6
Makefile
@ -29,11 +29,14 @@ programs/longtwo/a.out: force_look
|
|||||||
programs/loop/a.out: force_look
|
programs/loop/a.out: force_look
|
||||||
cd programs/loop; ${MAKE} a.out
|
cd programs/loop; ${MAKE} a.out
|
||||||
|
|
||||||
|
programs/keyboard/a.out: force_look
|
||||||
|
cd programs/keyboard; ${MAKE} a.out
|
||||||
|
|
||||||
hdd.img:
|
hdd.img:
|
||||||
dd if=/dev/zero of=hdd.img bs=516096c count=1000
|
dd if=/dev/zero of=hdd.img bs=516096c count=1000
|
||||||
(echo n; echo p; echo 1; echo ""; echo ""; echo t; echo c; echo a; echo 1; echo w;) | sudo fdisk -u -C1000 -S63 -H16 hdd.img
|
(echo n; echo p; echo 1; echo ""; echo ""; echo t; echo c; echo a; echo 1; echo w;) | sudo fdisk -u -C1000 -S63 -H16 hdd.img
|
||||||
|
|
||||||
thor.flp: hdd.img bootloader/stage1.bin bootloader/stage2.bin kernel/kernel.bin programs/one/a.out programs/hello/a.out programs/long/a.out programs/loop/a.out programs/longone/a.out programs/longtwo/a.out
|
thor.flp: hdd.img bootloader/stage1.bin bootloader/stage2.bin kernel/kernel.bin programs/one/a.out programs/hello/a.out programs/long/a.out programs/loop/a.out programs/longone/a.out programs/longtwo/a.out programs/keyboard/a.out
|
||||||
mkdir -p mnt/fake/
|
mkdir -p mnt/fake/
|
||||||
dd if=bootloader/stage1.bin of=hdd.img conv=notrunc
|
dd if=bootloader/stage1.bin of=hdd.img conv=notrunc
|
||||||
dd if=bootloader/stage2.bin of=hdd.img seek=1 conv=notrunc
|
dd if=bootloader/stage2.bin of=hdd.img seek=1 conv=notrunc
|
||||||
@ -47,6 +50,7 @@ thor.flp: hdd.img bootloader/stage1.bin bootloader/stage2.bin kernel/kernel.bin
|
|||||||
sudo /bin/cp programs/longone/a.out mnt/fake/longone
|
sudo /bin/cp programs/longone/a.out mnt/fake/longone
|
||||||
sudo /bin/cp programs/longtwo/a.out mnt/fake/longtwo
|
sudo /bin/cp programs/longtwo/a.out mnt/fake/longtwo
|
||||||
sudo /bin/cp programs/loop/a.out mnt/fake/loop
|
sudo /bin/cp programs/loop/a.out mnt/fake/loop
|
||||||
|
sudo /bin/cp programs/keyboard/a.out mnt/fake/keyboard
|
||||||
sleep 0.1
|
sleep 0.1
|
||||||
sudo /bin/umount mnt/fake/
|
sudo /bin/umount mnt/fake/
|
||||||
sudo /sbin/losetup -d /dev/loop0
|
sudo /sbin/losetup -d /dev/loop0
|
||||||
|
15
programs/keyboard/Makefile
Normal file
15
programs/keyboard/Makefile
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
.PHONY: default clean
|
||||||
|
|
||||||
|
default: a.out
|
||||||
|
|
||||||
|
include ../../cpp.mk
|
||||||
|
|
||||||
|
%.cpp.o: src/%.cpp
|
||||||
|
$(CC) $(PROGRAM_FLAGS) $(CPP_FLAGS_64) $(WARNING_FLAGS) -c $< -o $@
|
||||||
|
|
||||||
|
a.out: main.cpp.o
|
||||||
|
$(CC) $(PROGRAM_LINK_FLAGS) $(CPP_FLAGS_64) -o a.out main.cpp.o
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm *.cpp.o
|
||||||
|
rm -rf a.out
|
20
programs/keyboard/src/main.cpp
Normal file
20
programs/keyboard/src/main.cpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
//=======================================================================
|
||||||
|
// Copyright Baptiste Wicht 2013-2014.
|
||||||
|
// Distributed under the Boost Software License, Version 1.0.
|
||||||
|
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
#include <print.hpp>
|
||||||
|
#include <system.hpp>
|
||||||
|
|
||||||
|
const char* source = "Hello world";
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
for(int i = 0; i < 10; ++i){
|
||||||
|
auto c = read_char();
|
||||||
|
print(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
exit(0);
|
||||||
|
}
|
@ -8,6 +8,8 @@
|
|||||||
#ifndef USER_PRINT_HPP
|
#ifndef USER_PRINT_HPP
|
||||||
#define USER_PRINT_HPP
|
#define USER_PRINT_HPP
|
||||||
|
|
||||||
|
//TODO Rename in console
|
||||||
|
|
||||||
#include <types.hpp>
|
#include <types.hpp>
|
||||||
|
|
||||||
void print(char c){
|
void print(char c){
|
||||||
@ -45,4 +47,13 @@ void print_line(size_t v){
|
|||||||
print_line();
|
print_line();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char read_char(){
|
||||||
|
size_t value;
|
||||||
|
asm volatile("mov rax, 3; int 50; mov %0, rax"
|
||||||
|
: "=m" (value)
|
||||||
|
: //No inputs
|
||||||
|
: "rax", "rbx");
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user