From 37a115d8de12c5b7c62ff320f8fe318e8598ec8b Mon Sep 17 00:00:00 2001 From: minjaesong Date: Thu, 10 Jun 2021 10:30:57 +0900 Subject: [PATCH] wp --- assets/bios/wp.js | 28 +++++++++++++++++++++------- assets/wpfont.kra | 4 ++-- assets/wpfont.png | Bin 5071 -> 5185 bytes 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/assets/bios/wp.js b/assets/bios/wp.js index 94ecd84..f17c484 100644 --- a/assets/bios/wp.js +++ b/assets/bios/wp.js @@ -13,8 +13,9 @@ const MEM = system.maxmem() const NO_LINEHEAD_PUNCT = [33,34,39,41,44,46,58,59,62,63,93,125] const NO_LINELAST_PUNCT = [34,39,40,60,91,123] -let PAGE_HEIGHT = 56 +let PAGE_HEIGHT = 60 let PAGE_WIDTH = 80 +// 80x60 -> 720x1080 text area; with 72px margin for each side, paper resolution is 864x1224, which is quite close to 1:sqrt(2) ratio let scroll = 0 let scrollHor = 0 @@ -32,6 +33,9 @@ let cursoringCol = 0 let filename = "NEWFILE" let modified = false +let editorMode = 1 // 0: Visual Mode, 1: Edit Mode, 2: Command Mode; just like the good ol' Vi +const editorModeLabel = ["VISUAL MODE (hit I to EDIT, hit : to enter a COMMAND)", "EDIT MODE (hit ESC to Visual Mode)", ":"] +let cmdbuf = "" let windowWidth = 0 let windowHeight = 0 @@ -50,7 +54,7 @@ function drawInit() { PAINT_START_X = caretLeft + 1 paintWidth = caretRight - caretLeft - paintHeight = windowHeight - PAINT_START_Y + 1 + paintHeight = windowHeight - PAINT_START_Y scrollPeek = Math.ceil((paintHeight / 7)) @@ -130,8 +134,8 @@ function drawTextbuffer(from, toExclusive) { vc += 1 } } - else if (c >= 32) { - printbuf[vr] += String.fromCharCode(c) + else if (c >= 32 && c <= 175 || c >= 224 && c <= 253) { + printbuf[vr] += String.fromCharCode((c == 32) ? 250 : c) vc += 1 } @@ -166,6 +170,18 @@ function drawColumnInd() { } } +function drawCmdbuf() { + con.color_pair(COL_TEXT, COL_BACK) + con.move(windowHeight, 2) + for (let i = 2; i <= windowWidth - 1; i++) { + print(' ') + } + con.move(windowHeight, 2) + print(editorModeLabel[editorMode]) + + if (2 == editorMode) print(cmdbuf) +} + function drawMain() { con.curs_set(0) drawInit() @@ -174,10 +190,8 @@ function drawMain() { drawMenubar() drawPRC() - - // column indicator drawColumnInd() - + drawCmdbuf() } diff --git a/assets/wpfont.kra b/assets/wpfont.kra index 669cf82..3dd2fdd 100644 --- a/assets/wpfont.kra +++ b/assets/wpfont.kra @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ca4ffb0aee4de3074839f8b40ae44a9d52b83eb25ede8713134005931612736 -size 102902 +oid sha256:48e0102642c7ea34b84d07106d9292a35d94d3b32ad906957cfa93d29dd68bb3 +size 68021 diff --git a/assets/wpfont.png b/assets/wpfont.png index 033f93896c9e46ce65181db1c380a1a48b354aee..33ea1ea32a2e2d65a870bd50985f45006749a155 100644 GIT binary patch delta 4968 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