summaryrefslogtreecommitdiff
path: root/Source/Kernel/VTManager
diff options
context:
space:
mode:
authorAlexis211 <alexis211@gmail.com>2009-10-18 21:56:26 +0200
committerAlexis211 <alexis211@gmail.com>2009-10-18 21:56:26 +0200
commit0cca2d68451849b5ea96a3620566fd0b42dde3c0 (patch)
treefcdcaace870a59d0b8f2ccc6abb8418763960dbe /Source/Kernel/VTManager
parent776753bfa0c411f4b1a5680409104904961fcbeb (diff)
downloadMelon-0cca2d68451849b5ea96a3620566fd0b42dde3c0.tar.gz
Melon-0cca2d68451849b5ea96a3620566fd0b42dde3c0.zip
More work on syscalls
Diffstat (limited to 'Source/Kernel/VTManager')
-rw-r--r--Source/Kernel/VTManager/VirtualTerminal-sc.proto.cpp15
-rw-r--r--Source/Kernel/VTManager/VirtualTerminal.proto.cpp3
-rw-r--r--Source/Kernel/VTManager/VirtualTerminal.proto.h3
3 files changed, 21 insertions, 0 deletions
diff --git a/Source/Kernel/VTManager/VirtualTerminal-sc.proto.cpp b/Source/Kernel/VTManager/VirtualTerminal-sc.proto.cpp
index 8948657..e0c6e8d 100644
--- a/Source/Kernel/VTManager/VirtualTerminal-sc.proto.cpp
+++ b/Source/Kernel/VTManager/VirtualTerminal-sc.proto.cpp
@@ -5,7 +5,22 @@ u32int VirtualTerminal::writeHexSC(u32int number) {
return 0;
}
+u32int VirtualTerminal::writeSC(u32int wat) {
+ write(String::unserialize(wat));
+ return 0;
+}
+
+u32int VirtualTerminal::writeDecSC(u32int n_hi, u32int n_lo) {
+ s64int n = ((u64int)n_hi << 32) | n_lo;
+ writeDec(n);
+ return 0;
+}
+
u32int VirtualTerminal::putSC(u32int code) {
put(WChar(code));
return 0;
}
+
+u32int VirtualTerminal::readLineSC() {
+ return readLine().serialize();
+}
diff --git a/Source/Kernel/VTManager/VirtualTerminal.proto.cpp b/Source/Kernel/VTManager/VirtualTerminal.proto.cpp
index b7c7340..dfd8f84 100644
--- a/Source/Kernel/VTManager/VirtualTerminal.proto.cpp
+++ b/Source/Kernel/VTManager/VirtualTerminal.proto.cpp
@@ -7,7 +7,10 @@
VirtualTerminal::VirtualTerminal() :
Ressource(VT_IFACE_OBJTYPE), m_kbdMutex(false), m_kbdbuffMutex(false), m_kbdbuff() {
addCall1(VT_IFACE_WRITEHEX, (call1)&VirtualTerminal::writeHexSC);
+ addCall2(VT_IFACE_WRITEDEC, (call2)&VirtualTerminal::writeDecSC);
+ addCall1(VT_IFACE_WRITE, (call1)&VirtualTerminal::writeSC);
addCall1(VT_IFACE_PUT, (call1)&VirtualTerminal::putSC);
+ addCall0(VT_IFACE_READLINE, (call0)&VirtualTerminal::readLineSC);
}
VirtualTerminal::~VirtualTerminal() {
diff --git a/Source/Kernel/VTManager/VirtualTerminal.proto.h b/Source/Kernel/VTManager/VirtualTerminal.proto.h
index b9d0eb8..b0cd224 100644
--- a/Source/Kernel/VTManager/VirtualTerminal.proto.h
+++ b/Source/Kernel/VTManager/VirtualTerminal.proto.h
@@ -21,7 +21,10 @@ class VirtualTerminal : public Ressource {
//SYSCALLS :
u32int writeHexSC(u32int);
+ u32int writeDecSC(u32int, u32int);
+ u32int writeSC(u32int);
u32int putSC(u32int);
+ u32int readLineSC();
public:
VirtualTerminal();