getting rid of old filesystem functions

This commit is contained in:
minjaesong
2022-09-06 20:30:46 +09:00
parent 8232053695
commit 0d1e33f7e6
14 changed files with 102 additions and 47 deletions

View File

@@ -77,12 +77,13 @@ abstract class GlassTty(val TEXT_ROWS: Int, val TEXT_COLS: Int) {
ttyEscArguments.push(ttyEscArguments.pop() * 10 + (newnum.toInt() - 0x30))
}
//println("[tty] accepting char $char, state: $ttyEscState")
// println("[tty] accepting char $char (${char.toChar()}), state: $ttyEscState")
when (ttyEscState) {
TTY_ESC_STATE.INITIAL -> {
when (char) {
ESC -> ttyEscState = TTY_ESC_STATE.ESC
X84 -> ttyEscState = TTY_ESC_STATE.XCSI
LF -> crlf()
BS -> backspace()
TAB -> insertTab()
@@ -98,6 +99,20 @@ abstract class GlassTty(val TEXT_ROWS: Int, val TEXT_COLS: Int) {
else -> return reject()
}
}
TTY_ESC_STATE.XCSI -> {
when (char.toChar()) {
'u' -> emitChar(0)
in '0'..'9' -> registerNewNumberArg(char, TTY_ESC_STATE.XNUM1)
else -> return reject()
}
}
TTY_ESC_STATE.XNUM1 -> {
when (char.toChar()) {
'u' -> return accept { emitChar(ttyEscArguments.pop()) }
in '0'..'9' -> appendToExistingNumber(char)
else -> return reject()
}
}
TTY_ESC_STATE.CSI -> {
when (char.toChar()) {
'A' -> return accept { cursorUp() }
@@ -244,6 +259,11 @@ abstract class GlassTty(val TEXT_ROWS: Int, val TEXT_COLS: Int) {
abstract fun backspace()
abstract fun privateSeqH(arg: Int)
abstract fun privateSeqL(arg: Int)
/** Emits arbitrary character by its char code.
* Syntax \x84 <number> u
* Number: Any integer 0..1114111
**/
abstract fun emitChar(code: Int)
abstract fun getPrintStream(): OutputStream
abstract fun getErrorStream(): OutputStream
@@ -255,9 +275,11 @@ abstract class GlassTty(val TEXT_ROWS: Int, val TEXT_COLS: Int) {
private val BS = 0x08.toByte()
private val BEL = 0x07.toByte()
private val ESC = 0x1B.toByte()
private val X84 = 0x84.toByte()
private enum class TTY_ESC_STATE {
INITIAL, ESC, CSI, NUM1, SEP1, NUM2, SEP2, NUM3, PRIVATESEQ, PRIVATENUM
INITIAL, ESC, CSI, NUM1, SEP1, NUM2, SEP2, NUM3, PRIVATESEQ, PRIVATENUM,
XCSI, XNUM1
}

View File

@@ -440,6 +440,11 @@ open class GraphicsAdapter(private val assetsRoot: String, val vm: VM, val confi
textArea[memTextOffset + textOff] = text
}
override fun emitChar(code: Int) {
val (x, y) = getCursorPos()
putChar(x, y, code.toByte())
setCursorPos(x + 1, y)
}
override fun cursorUp(arg: Int) {
val (x, y) = getCursorPos()
setCursorPos(x, y - arg)
@@ -640,6 +645,7 @@ open class GraphicsAdapter(private val assetsRoot: String, val vm: VM, val confi
putChar(x - 1, y, 0x20.toByte())
}
private lateinit var PRINTSTREAM_INSTANCE: OutputStream
private lateinit var ERRORSTREAM_INSTANCE: OutputStream
//private lateinit var INPUTSTREAM_INSTANCE: InputStream

View File

@@ -197,6 +197,10 @@ class TTY(assetsRoot: String, val vm: VM) : GlassTty(TEXT_ROWS, TEXT_COLS), Peri
vm.poke(-39, key.toByte())
}
override fun emitChar(code: Int) {
TODO("Not yet implemented")
}
/**
* @return key code in 0..255 (TODO: JInput Keycode or ASCII-Code?)
*/