mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-03-09 20:51:51 +09:00
getting rid of old filesystem functions
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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?)
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user