From 684529b0ce71063adf915393046be221eeca1b50 Mon Sep 17 00:00:00 2001 From: minexew Date: Mon, 24 Feb 2020 20:47:26 +0100 Subject: [PATCH] VKernel: forward stdin using VSYSCALL_READ --- VKernel/Message.diff | 27 +++++++++++++++++++++++++++ VKernel/VKernel.script | 1 + VKernel/apply-patches.sh | 1 + VKernel/make-patches.sh | 1 + 4 files changed, 30 insertions(+) create mode 100644 VKernel/Message.diff diff --git a/VKernel/Message.diff b/VKernel/Message.diff new file mode 100644 index 0000000..c003c4b --- /dev/null +++ b/VKernel/Message.diff @@ -0,0 +1,27 @@ +diff --git a/../TempleOS/TempleOSCD/Kernel/SerialDev/Message.HC b/Patched/Kernel/SerialDev/Message.HC +index e94f246..978557f 100644 +--- a/../TempleOS/TempleOSCD/Kernel/SerialDev/Message.HC ++++ b/Patched/Kernel/SerialDev/Message.HC +@@ -143,6 +143,14 @@ I64 GetKey(I64 *_scan_code=NULL,Bool echo=FALSE,Bool raw_cursor=FALSE) + {//Waits for $LK,"MSG_KEY_DOWN",A="MN:MSG_KEY_DOWN"$ message and returns $LK,"ASCII",A="MN:CH_CTRLA"$. + //Sets $LK,"scan_code",A="FI:::/Doc/CharOverview.DD"$. + //$LK,"ScanKey",A="MN:ScanKey"$() throws away other message types. ++ U8 ch; ++ if (VSysCall(VSYSCALL_READ, 0, &ch, 1)) { ++ return ch; ++ } ++ else { ++ return 0; ++ } ++ /* + I64 ch,sc; + Bool cursor_on=FALSE; + while (!ScanKey(&ch,&sc,FALSE)) { +@@ -177,6 +185,7 @@ I64 GetKey(I64 *_scan_code=NULL,Bool echo=FALSE,Bool raw_cursor=FALSE) + PutKey(ch,sc); + if (_scan_code) *_scan_code=sc; + return ch; ++ */ + } + + I64 GetChar(I64 *_scan_code=NULL,Bool echo=TRUE,Bool raw_cursor=FALSE) diff --git a/VKernel/VKernel.script b/VKernel/VKernel.script index 4718515..fb5fa7d 100644 --- a/VKernel/VKernel.script +++ b/VKernel/VKernel.script @@ -16,6 +16,7 @@ put /Kernel/Mem/BlkPool.HC.Z Patched/Kernel/Mem/BlkPool.HC put /Kernel/Mem/MemPhysical.HC.Z Patched/Kernel/Mem/MemPhysical.HC put /Kernel/MultiProc.HC.Z Patched/Kernel/MultiProc.HC put /Kernel/Sched.HC.Z Patched/Kernel/Sched.HC +put /Kernel/SerialDev/Message.HC.Z Patched/Kernel/SerialDev/Message.HC put /Kernel/VKMain.HC.Z VKMain.HC put /Kernel/VKStart64.HC.Z VKStart64.HC diff --git a/VKernel/apply-patches.sh b/VKernel/apply-patches.sh index 4bf2517..65ffae4 100755 --- a/VKernel/apply-patches.sh +++ b/VKernel/apply-patches.sh @@ -22,5 +22,6 @@ patch $FLAGS -i KUtils.diff patch $FLAGS -i KernelA.diff patch $FLAGS -i MakeBlkDev.diff patch $FLAGS -i MemPhysical.diff +patch $FLAGS -i Message.diff patch $FLAGS -i MultiProc.diff patch $FLAGS -i Sched.diff diff --git a/VKernel/make-patches.sh b/VKernel/make-patches.sh index 0133eb5..f13ce0c 100755 --- a/VKernel/make-patches.sh +++ b/VKernel/make-patches.sh @@ -21,3 +21,4 @@ git diff $FLAGS "$PURE_DIR/Kernel/Mem/BlkPool.HC" "$PATCHED_DIR/Kernel/Mem/BlkPo git diff $FLAGS "$PURE_DIR/Kernel/Mem/MemPhysical.HC" "$PATCHED_DIR/Kernel/Mem/MemPhysical.HC" >MemPhysical.diff git diff $FLAGS "$PURE_DIR/Kernel/MultiProc.HC" "$PATCHED_DIR/Kernel/MultiProc.HC" >MultiProc.diff git diff $FLAGS "$PURE_DIR/Kernel/Sched.HC" "$PATCHED_DIR/Kernel/Sched.HC" >Sched.diff +git diff $FLAGS "$PURE_DIR/Kernel/SerialDev/Message.HC" "$PATCHED_DIR/Kernel/SerialDev/Message.HC" >Message.diff