mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-07 12:21:52 +09:00
beeps are now processed sorely on the computer, added speaker driver (wip)
Former-commit-id: c8339104815a62db51e5bd26460a87f1f653a775 Former-commit-id: f22320a45734b141c4f02ca61fbd79772e32c7c5
This commit is contained in:
@@ -6,10 +6,30 @@
|
||||
Some codes were taken from OpenComputers, which is distributed under MIT
|
||||
--]]
|
||||
|
||||
_G.computer = {}
|
||||
computer.realTime = function() return 0 end
|
||||
|
||||
if totalMemory() == 0 then print("no RAM installed") __haltsystemexplicit__() return end
|
||||
-- global variables
|
||||
_G._VERSION = "Luaj-jse 3.0.1 (Lua 5.2.3)"
|
||||
_G.EMDASH = string.char(0xC4)
|
||||
_G.UNCHECKED = string.char(0x9C) -- box unchecked
|
||||
_G.CHECKED = string.char(0x9D) -- box checked
|
||||
_G.MONEY = string.char(0x9E) -- currency sign
|
||||
_G.MIDDOT = string.char(0xFA) -- middle dot sign
|
||||
_G.DC1 = string.char(17) -- black
|
||||
_G.DC2 = string.char(18) -- white
|
||||
_G.DC3 = string.char(19) -- dim grey
|
||||
_G.DC4 = string.char(20) -- light grey
|
||||
_G.DLE = string.char(16) -- default error colour
|
||||
|
||||
_G.bell = function(patn) term.bell(patn or ".") end
|
||||
_G.beep = _G.bell
|
||||
|
||||
if totalMemory() == 0 then
|
||||
bell "="
|
||||
print("no RAM installed")
|
||||
__haltsystemexplicit__()
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
local hookInterval = 100
|
||||
@@ -949,18 +969,7 @@ sandbox._G = sandbox
|
||||
-- path for any ingame libraries
|
||||
package.path = "/net/torvald/terrarum/virtualcomputer/assets/lua/?.lua;" .. package.path
|
||||
|
||||
-- global variables
|
||||
_G._VERSION = "Luaj-jse 3.0.1 (Lua 5.2.3)"
|
||||
_G.EMDASH = string.char(0xC4)
|
||||
_G.UNCHECKED = string.char(0x9C) -- box unchecked
|
||||
_G.CHECKED = string.char(0x9D) -- box checked
|
||||
_G.MONEY = string.char(0x9E) -- currency sign
|
||||
_G.MIDDOT = string.char(0xFA) -- middle dot sign
|
||||
_G.DC1 = string.char(17) -- black
|
||||
_G.DC2 = string.char(18) -- white
|
||||
_G.DC3 = string.char(19) -- dim grey
|
||||
_G.DC4 = string.char(20) -- light grey
|
||||
_G.DLE = string.char(16) -- default error colour
|
||||
-- global functions
|
||||
_G.runscript = function(s, src, ...)
|
||||
if s:byte(1) == 27 then error("Bytecode execution is prohibited.") end
|
||||
|
||||
@@ -973,8 +982,6 @@ _G.runscript = function(s, src, ...)
|
||||
end
|
||||
end
|
||||
_G.__scanMode__ = "UNINIT" -- part of inputstream implementation
|
||||
_G.bell = function(patn) term.bell(patn or ".") end
|
||||
_G.beep = _G.bell
|
||||
|
||||
local screenbufferdim = term.width() * term.height()
|
||||
local screencolours = 4
|
||||
@@ -982,7 +989,6 @@ if term.isCol() then screencolours = 8
|
||||
elseif term.isTeletype() then screencolours = 1 end
|
||||
local screenbuffersize = screenbufferdim * screencolours / 8
|
||||
|
||||
--_G.computer = {} -- standard console colours
|
||||
computer.prompt = DC3.."> "..DC4
|
||||
computer.verbose = true -- print debug info
|
||||
computer.loadedCLayer = {} -- list of loaded compatibility layers
|
||||
@@ -990,6 +996,7 @@ computer.bootloader = "/boot/efi"
|
||||
computer.OEM = ""
|
||||
computer.beep = emittone
|
||||
computer.totalMemory = _G.totalMemory
|
||||
computer.bellpitch = 1000
|
||||
local getMemory = function()
|
||||
collectgarbage()
|
||||
return collectgarbage("count") * 1024 - 6.5*1048576 + screenbuffersize
|
||||
|
||||
@@ -22,6 +22,7 @@ import org.newdawn.slick.GameContainer
|
||||
import org.newdawn.slick.Input
|
||||
import java.io.*
|
||||
import java.nio.ByteBuffer
|
||||
import java.util.*
|
||||
|
||||
/**
|
||||
* A part that makes "computer fixture" actually work
|
||||
@@ -34,6 +35,8 @@ import java.nio.ByteBuffer
|
||||
class BaseTerrarumComputer() {
|
||||
|
||||
val DEBUG_UNLIMITED_MEM = false
|
||||
val DEBUG = false
|
||||
|
||||
|
||||
lateinit var luaJ_globals: Globals
|
||||
private set
|
||||
@@ -112,6 +115,8 @@ class BaseTerrarumComputer() {
|
||||
luaJ_globals.STDERR = termErr
|
||||
luaJ_globals.STDIN = termIn
|
||||
|
||||
luaJ_globals["bit"] = luaJ_globals["bit32"]
|
||||
|
||||
// load libraries
|
||||
Term(luaJ_globals, term)
|
||||
Security(luaJ_globals)
|
||||
@@ -119,6 +124,8 @@ class BaseTerrarumComputer() {
|
||||
HostAccessProvider(luaJ_globals, this)
|
||||
Input(luaJ_globals, this)
|
||||
Http(luaJ_globals, this)
|
||||
PcSpeakerDriver(luaJ_globals, this)
|
||||
|
||||
|
||||
// secure the sandbox
|
||||
luaJ_globals["io"] = LuaValue.NIL
|
||||
@@ -134,7 +141,7 @@ class BaseTerrarumComputer() {
|
||||
luaJ_globals["totalMemory"] = LuaFunGetTotalMem(this)
|
||||
|
||||
luaJ_globals["computer"] = LuaTable()
|
||||
luaJ_globals["emittone"] = ComputerEmitTone(this)
|
||||
if (DEBUG) luaJ_globals["emittone"] = ComputerEmitTone(this)
|
||||
}
|
||||
|
||||
var threadTimer = 0
|
||||
@@ -158,6 +165,10 @@ class BaseTerrarumComputer() {
|
||||
unsetThreadRun()
|
||||
}
|
||||
}
|
||||
|
||||
driveBeepQueueManager(delta)
|
||||
|
||||
|
||||
}
|
||||
|
||||
fun keyPressed(key: Int, c: Char) {
|
||||
@@ -190,6 +201,8 @@ class BaseTerrarumComputer() {
|
||||
|
||||
class ThreadRunCommand : Runnable {
|
||||
|
||||
val DEBUGTHRE = true
|
||||
|
||||
val mode: Int
|
||||
val arg1: Any
|
||||
val arg2: String
|
||||
@@ -227,8 +240,6 @@ class BaseTerrarumComputer() {
|
||||
if (DEBUGTHRE) e.printStackTrace(System.err)
|
||||
}
|
||||
}
|
||||
|
||||
val DEBUGTHRE = true
|
||||
}
|
||||
|
||||
class LuaFunGetTotalMem(val computer: BaseTerrarumComputer) : ZeroArgFunction() {
|
||||
@@ -248,6 +259,58 @@ class BaseTerrarumComputer() {
|
||||
// BEEPER DRIVER //
|
||||
///////////////////
|
||||
|
||||
private val beepMaxLen = 10000
|
||||
// let's regard it as a tracker...
|
||||
private val beepQueue = ArrayList<Pair<Int, Float>>()
|
||||
private var beepCursor = -1
|
||||
private var beepQueueLineExecTimer = 0 // millisec
|
||||
private var beepQueueFired = false
|
||||
|
||||
private fun driveBeepQueueManager(delta: Int) {
|
||||
// start beep queue
|
||||
if (beepQueue.size > 0 && beepCursor == -1) {
|
||||
beepCursor = 0
|
||||
}
|
||||
|
||||
// continue beep queue
|
||||
if (beepCursor >= 0 && beepQueueLineExecTimer >= beepQueueGetLenOfPtn(beepCursor)) {
|
||||
beepQueueLineExecTimer -= beepQueueGetLenOfPtn(beepCursor)
|
||||
beepCursor += 1
|
||||
beepQueueFired = false
|
||||
}
|
||||
|
||||
// complete beep queue
|
||||
if (beepCursor >= beepQueue.size) {
|
||||
clearBeepQueue()
|
||||
if (DEBUG) println("!! Beep queue clear")
|
||||
}
|
||||
|
||||
// actually play queue
|
||||
if (beepCursor >= 0 && beepQueue.size > 0 && !beepQueueFired) {
|
||||
playTone(beepQueue[beepCursor].first, beepQueue[beepCursor].second)
|
||||
beepQueueFired = true
|
||||
}
|
||||
|
||||
if (beepQueueFired) beepQueueLineExecTimer += delta
|
||||
}
|
||||
|
||||
fun clearBeepQueue() {
|
||||
beepQueue.clear()
|
||||
beepCursor = -1
|
||||
beepQueueLineExecTimer = 0
|
||||
}
|
||||
|
||||
fun enqueueBeep(duration: Int, freq: Float) {
|
||||
beepQueue.add(Pair(Math.min(duration, beepMaxLen), freq))
|
||||
}
|
||||
|
||||
fun beepQueueGetLenOfPtn(ptnIndex: Int) = beepQueue[ptnIndex].first
|
||||
|
||||
|
||||
////////////////////
|
||||
// TONE GENERATOR //
|
||||
////////////////////
|
||||
|
||||
private val sampleRate = 44100
|
||||
private var beepSource: Int? = null
|
||||
private var beepBuffer: Int? = null
|
||||
@@ -311,7 +374,7 @@ class BaseTerrarumComputer() {
|
||||
return audioData
|
||||
}
|
||||
|
||||
internal fun playTone(leninmilli: Int, freq: Float) {
|
||||
private fun playTone(leninmilli: Int, freq: Float) {
|
||||
audioData = makeAudioData(leninmilli, freq)
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package net.torvald.terrarum.virtualcomputer.luaapi
|
||||
|
||||
/**
|
||||
* Virtual driver for 4-track squarewave soundcard
|
||||
*
|
||||
* Created by minjaesong on 16-09-27.
|
||||
*/
|
||||
class Kukeiha {
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package net.torvald.terrarum.virtualcomputer.luaapi
|
||||
|
||||
import li.cil.repack.org.luaj.vm2.Globals
|
||||
import li.cil.repack.org.luaj.vm2.LuaTable
|
||||
import li.cil.repack.org.luaj.vm2.LuaValue
|
||||
import li.cil.repack.org.luaj.vm2.lib.TwoArgFunction
|
||||
import li.cil.repack.org.luaj.vm2.lib.ZeroArgFunction
|
||||
import net.torvald.terrarum.virtualcomputer.computer.BaseTerrarumComputer
|
||||
|
||||
/**
|
||||
* PC Speaker driver and arpeggiator (MONOTONE-style 4 channels)
|
||||
*
|
||||
* Created by minjaesong on 16-09-27.
|
||||
*/
|
||||
class PcSpeakerDriver(globals: Globals, host: BaseTerrarumComputer) {
|
||||
|
||||
init {
|
||||
globals["speaker"] = LuaTable()
|
||||
globals["speaker"]["enqueue"] = EnqueueTone(host)
|
||||
globals["speaker"]["clear"] = ClearQueue(host)
|
||||
}
|
||||
|
||||
class EnqueueTone(val host: BaseTerrarumComputer) : TwoArgFunction() {
|
||||
override fun call(millisec: LuaValue, freq: LuaValue): LuaValue {
|
||||
host.enqueueBeep(millisec.checkint(), freq.tofloat())
|
||||
return LuaValue.NONE
|
||||
}
|
||||
}
|
||||
|
||||
class ClearQueue(val host: BaseTerrarumComputer) : ZeroArgFunction() {
|
||||
override fun call(): LuaValue {
|
||||
host.clearBeepQueue()
|
||||
return LuaValue.NONE
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -23,6 +23,9 @@ open class SimpleTextTerminal(
|
||||
phosphorColour: Color, override val width: Int, override val height: Int, private val host: BaseTerrarumComputer,
|
||||
colour: Boolean = false, hires: Boolean = false
|
||||
) : Terminal {
|
||||
|
||||
private val DEBUG = false
|
||||
|
||||
/**
|
||||
* Terminals must support AT LEAST 4 colours.
|
||||
* Color index 0 must be default background, index 3 must be default foreground
|
||||
@@ -108,32 +111,6 @@ open class SimpleTextTerminal(
|
||||
}
|
||||
|
||||
wrap()
|
||||
|
||||
// start beep queue
|
||||
if (beepQueue.size > 0 && beepCursor == -1) {
|
||||
beepCursor = 0
|
||||
}
|
||||
|
||||
// continue beep queue
|
||||
if (beepCursor >= 0 && beepQueueLineExecTimer >= beepQueueGetLenOfPtn(beepCursor)) {
|
||||
beepQueueLineExecTimer -= beepQueueGetLenOfPtn(beepCursor)
|
||||
beepCursor += 1
|
||||
beepQueueFired = false
|
||||
}
|
||||
|
||||
// complete beep queue
|
||||
if (beepCursor >= beepQueue.size) {
|
||||
clearBeepQueue()
|
||||
// println("!! Beep queue clear")
|
||||
}
|
||||
|
||||
// actually play queue
|
||||
if (beepCursor >= 0 && beepQueue.size > 0 && !beepQueueFired) {
|
||||
beep(beepQueue[beepCursor].first, beepQueue[beepCursor].second)
|
||||
beepQueueFired = true
|
||||
}
|
||||
|
||||
if (beepQueueFired) beepQueueLineExecTimer += delta
|
||||
}
|
||||
|
||||
private fun wrap() {
|
||||
@@ -332,48 +309,38 @@ open class SimpleTextTerminal(
|
||||
foreColour = foreDefault
|
||||
}
|
||||
|
||||
private val maxDuration = 10000
|
||||
|
||||
// let's regard it as a tracker...
|
||||
private val beepQueue = ArrayList<Pair<Int, Float>>()
|
||||
private var beepCursor = -1
|
||||
private var beepQueueLineExecTimer = 0 // millisec
|
||||
private var beepQueueFired = false
|
||||
|
||||
/**
|
||||
* @param duration: milliseconds
|
||||
* @param freg: Frequency (float)
|
||||
*/
|
||||
override fun beep(duration: Int, freq: Float) {
|
||||
// println("!! Beep playing row $beepCursor, d ${Math.min(duration, maxDuration)} f $freq")
|
||||
host.playTone(Math.min(duration, maxDuration), freq)
|
||||
host.clearBeepQueue()
|
||||
host.enqueueBeep(duration, freq)
|
||||
}
|
||||
|
||||
/** for "beep code" on modern BIOS. Pattern: - . */
|
||||
/** for "beep code" on modern BIOS. */
|
||||
override fun bell(pattern: String) {
|
||||
clearBeepQueue()
|
||||
host.clearBeepQueue()
|
||||
|
||||
val freq: Float =
|
||||
if (host.luaJ_globals["computer"]["bellpitch"].isnil())
|
||||
1000f
|
||||
else
|
||||
host.luaJ_globals["computer"]["bellpitch"].checkdouble().toFloat()
|
||||
|
||||
for (c in pattern) {
|
||||
when (c) {
|
||||
'.' -> { enqueueBeep(80, 1000f); enqueueBeep(80, 0f) }
|
||||
'-' -> { enqueueBeep(250, 1000f); enqueueBeep(80, 0f) }
|
||||
' ' -> { enqueueBeep(250, 0f) }
|
||||
'.' -> { host.enqueueBeep(50, freq); host.enqueueBeep(50, 0f) }
|
||||
'-' -> { host.enqueueBeep(200, freq); host.enqueueBeep(50, 0f) }
|
||||
'=' -> { host.enqueueBeep(500, freq); host.enqueueBeep(50, 0f) }
|
||||
' ' -> { host.enqueueBeep(200, 0f) }
|
||||
',' -> { host.enqueueBeep(50, 0f) }
|
||||
else -> throw IllegalArgumentException("Unacceptable pattern: $c (from '$pattern')")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun clearBeepQueue() {
|
||||
beepQueue.clear()
|
||||
beepCursor = -1
|
||||
beepQueueLineExecTimer = 0
|
||||
}
|
||||
|
||||
fun enqueueBeep(duration: Int, freq: Float) {
|
||||
beepQueue.add(Pair(Math.min(duration, maxDuration), freq))
|
||||
}
|
||||
|
||||
fun beepQueueGetLenOfPtn(ptnIndex: Int) = beepQueue[ptnIndex].first
|
||||
|
||||
override var lastInputByte: Int = -1
|
||||
var sb: StringBuilder = StringBuilder()
|
||||
private var inputOpen = false
|
||||
@@ -466,8 +433,6 @@ open class SimpleTextTerminal(
|
||||
ASCII_DLE
|
||||
)
|
||||
}
|
||||
|
||||
private val DEBUG = true
|
||||
}
|
||||
|
||||
class ALException(errorCode: Int) : Exception("ALerror: $errorCode") {
|
||||
|
||||
10
work_files/romapidoc/api_speaker.tex
Normal file
10
work_files/romapidoc/api_speaker.tex
Normal file
@@ -0,0 +1,10 @@
|
||||
The Speaker API provides means to control computer's built-in beeper speaker.
|
||||
|
||||
\begin{tabularx}{\textwidth}{l l X}
|
||||
\textbf{\large Function} & \textbf{\large Return} & \textbf{\large Description}
|
||||
\\ \\
|
||||
\endhead
|
||||
speaker.enqueue(len: int, freq: num) & nil & Enqueues speaker driving information. Queues will be started automatically.
|
||||
\\ \\
|
||||
speaker.clear() & nil & Clears speaker queue.
|
||||
\end{tabularx}
|
||||
@@ -1,3 +1,3 @@
|
||||
\begin{itemize}
|
||||
\item io library is limited to io.read (read a line from keyboard) and io.write (print without new line)
|
||||
\item io library is limited to io.read (read a line from keyboard) and io.write (print without new line). Use \emph{Filesystem} API for file I/O jobs.
|
||||
\end{itemize}
|
||||
@@ -8,7 +8,7 @@ ROMBASIC adds global functions and constants for operability.
|
||||
\endhead
|
||||
\unemph{\_G.}runScript(\textbf{fun}: str, \textbf{env}: str) & nil & Runs Lua script \textbf{fun} with the environment tag \textbf{env}.
|
||||
\\ \\
|
||||
\unemph{\_G.}bell(\textbf{pattern}: str) & nil & Strike bell (or beeper) with pattern. Accepted pattern letters: . - (space) Aliased to \unemph{\_G.}beep.
|
||||
\unemph{\_G.}bell(\textbf{pattern}: str) & nil & Strike bell (or beeper) with pattern. See section \emph{Bell Codes} for more information. Aliased to \unemph{\_G.}beep.
|
||||
\\ \\
|
||||
computer.totalMemory() & int & Returns the total size of the memory installed in the computer, in bytes.
|
||||
\\ \\
|
||||
@@ -52,4 +52,16 @@ ROMBASIC adds global functions and constants for operability.
|
||||
computer.OEM & string & Manufacturer of the computer. If you \emph{are} a manufacturer, you may want to fill in this variable with your own company's name.
|
||||
\\ \\
|
||||
computer.beep(\textbf{len}, \textbf{freq}) & nil & Generates square wave. \textbf{len} is integer, in milliseconds, \textbf{freq} is number, in Hertz.
|
||||
\end{tabularx}
|
||||
|
||||
\subsection{Bell Codes}
|
||||
|
||||
Bell Codes are patterns for driving bell/beeper. Each code is followed by short break of 50 milliseconds.
|
||||
|
||||
\begin{tabularx}{\textwidth}{l X l X}
|
||||
\textbf{.} (dot) & Short beep. 50 ms & \textbf{-} (dash) & Medium beep. 200 ms
|
||||
\\ \\
|
||||
\textbf{=} (equal) & Long beep. 500 ms & \textbf{,} (comma) & Short break. 50 ms
|
||||
\\ \\
|
||||
(space) & Break. 200 ms
|
||||
\end{tabularx}
|
||||
@@ -60,12 +60,17 @@
|
||||
{2}{180.42001pt}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1.6}Shell}{13}{section.1.6}}
|
||||
\gdef \LT@viii {\LT@entry
|
||||
{2}{161.65002pt}\LT@entry
|
||||
{1}{45.25516pt}\LT@entry
|
||||
{1}{128.09482pt}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1.7}Speaker}{14}{section.1.7}}
|
||||
\gdef \LT@ix {\LT@entry
|
||||
{2}{139.76003pt}\LT@entry
|
||||
{1}{45.25516pt}\LT@entry
|
||||
{1}{149.98482pt}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1.7}Terminal}{14}{section.1.7}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.7.1}Functions}{14}{subsection.1.7.1}}
|
||||
\gdef \LT@ix {\LT@entry
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1.8}Terminal}{15}{section.1.8}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.8.1}Functions}{15}{subsection.1.8.1}}
|
||||
\gdef \LT@x {\LT@entry
|
||||
{1}{22.26001pt}\LT@entry
|
||||
{1}{39.16003pt}\LT@entry
|
||||
{1}{22.26001pt}\LT@entry
|
||||
@@ -74,58 +79,64 @@
|
||||
{1}{49.88002pt}\LT@entry
|
||||
{1}{22.26001pt}\LT@entry
|
||||
{1}{58.02002pt}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.7.2}Standard Colours}{16}{subsection.1.7.2}}
|
||||
\gdef \LT@x {\LT@entry
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.8.2}Standard Colours}{17}{subsection.1.8.2}}
|
||||
\gdef \LT@xi {\LT@entry
|
||||
{1}{28.3155pt}\LT@entry
|
||||
{1}{139.1845pt}\LT@entry
|
||||
{1}{28.3155pt}\LT@entry
|
||||
{1}{139.1845pt}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.7.3}Codepage}{17}{subsection.1.7.3}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.7.4}Accepted Control Sequences}{17}{subsection.1.7.4}}
|
||||
\gdef \LT@xi {\LT@entry
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.8.3}Codepage}{18}{subsection.1.8.3}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.8.4}Accepted Control Sequences}{18}{subsection.1.8.4}}
|
||||
\gdef \LT@xii {\LT@entry
|
||||
{2}{134.13005pt}\LT@entry
|
||||
{1}{45.25516pt}\LT@entry
|
||||
{1}{155.61479pt}}
|
||||
\gdef \LT@xii {\LT@entry
|
||||
\gdef \LT@xiii {\LT@entry
|
||||
{2}{118.04002pt}\LT@entry
|
||||
{2}{36.06001pt}\LT@entry
|
||||
{1}{180.89996pt}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1.8}Lua Globals}{18}{section.1.8}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.8.1}Functions}{18}{subsection.1.8.1}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.8.2}Constants}{18}{subsection.1.8.2}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1.9}Changes from Generic Lua Environment}{20}{section.1.9}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1.9}Lua Globals}{19}{section.1.9}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.9.1}Functions}{19}{subsection.1.9.1}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.9.2}Constants}{19}{subsection.1.9.2}}
|
||||
\gdef \LT@xiv {\LT@entry
|
||||
{1}{49.09001pt}\LT@entry
|
||||
{1}{90.49004pt}\LT@entry
|
||||
{1}{53.81001pt}\LT@entry
|
||||
{1}{104.22pt}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.9.3}Bell Codes}{20}{subsection.1.9.3}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1.10}Changes from Generic Lua Environment}{22}{section.1.10}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {2}Compatibility Layers---ComputerCraft}{21}{chapter.2}}
|
||||
\gdef \LT@xiii {\LT@entry
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {2}Compatibility Layers---ComputerCraft}{23}{chapter.2}}
|
||||
\gdef \LT@xv {\LT@entry
|
||||
{2}{108.45001pt}\LT@entry
|
||||
{2}{125.76003pt}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2.1}Bit}{22}{section.2.1}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1.1}Functions}{22}{subsection.2.1.1}}
|
||||
\gdef \LT@xiv {\LT@entry
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2.1}Bit}{24}{section.2.1}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1.1}Functions}{24}{subsection.2.1.1}}
|
||||
\gdef \LT@xvi {\LT@entry
|
||||
{1}{77.19011pt}\LT@entry
|
||||
{1}{68.63008pt}\LT@entry
|
||||
{1}{76.35007pt}\LT@entry
|
||||
{1}{76.36005pt}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2.2}Colors}{23}{section.2.2}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.1}Constants}{23}{subsection.2.2.1}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.2}Functions}{23}{subsection.2.2.2}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2.3}Term}{24}{section.2.3}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2.4}Filesystem}{25}{section.2.4}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2.2}Colors}{25}{section.2.2}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.1}Constants}{25}{subsection.2.2.1}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.2}Functions}{25}{subsection.2.2.2}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2.3}Term}{26}{section.2.3}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2.4}Filesystem}{27}{section.2.4}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {3}Compatibility Layers---OpenComputers}{27}{chapter.3}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {3}Compatibility Layers---OpenComputers}{29}{chapter.3}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {4}Peripherals}{29}{chapter.4}}
|
||||
\gdef \LT@xv {\LT@entry
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {4}Peripherals}{31}{chapter.4}}
|
||||
\gdef \LT@xvii {\LT@entry
|
||||
{2}{71.78003pt}\LT@entry
|
||||
{1}{45.25516pt}\LT@entry
|
||||
{2}{153.90001pt}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {4.1}Line Printer}{30}{section.4.1}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1.1}Functions}{30}{subsection.4.1.1}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {4.1}Line Printer}{32}{section.4.1}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1.1}Functions}{32}{subsection.4.1.1}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {5}References}{31}{chapter.5}}
|
||||
\memsetcounter{lastsheet}{33}
|
||||
\memsetcounter{lastpage}{33}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {5}References}{33}{chapter.5}}
|
||||
\memsetcounter{lastsheet}{35}
|
||||
\memsetcounter{lastpage}{35}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
This is LuaTeX, Version beta-0.80.0 (TeX Live 2015) (rev 5238) (format=lualatex 2015.10.5) 27 SEP 2016 00:50
|
||||
This is LuaTeX, Version beta-0.80.0 (TeX Live 2015) (rev 5238) (format=lualatex 2015.10.5) 28 SEP 2016 00:42
|
||||
restricted \write18 enabled.
|
||||
file:line:error style messages enabled.
|
||||
**romapidoc.tex
|
||||
@@ -552,7 +552,7 @@ luatexbase-attr: luatexbase.attributes["luaotfload@cursbase"] = 6
|
||||
luatexbase-attr: luatexbase.attributes["luaotfload@curscurs"] = 7
|
||||
luatexbase-attr: luatexbase.attributes["luaotfload@cursdone"] = 8
|
||||
luatexbase-attr: luatexbase.attributes["luaotfload@state"] = 9
|
||||
luaotfload | main : fontloader loaded in 0.029 seconds
|
||||
luaotfload | main : fontloader loaded in 0.032 seconds
|
||||
luatexbase-mcb: inserting 'luaotfload.node_processor'
|
||||
at position 1 in 'pre_linebreak_filter'
|
||||
luatexbase-mcb: inserting 'luaotfload.node_processor'
|
||||
@@ -1534,6 +1534,13 @@ Underfull \hbox (badness 2707) in paragraph at lines 20--20
|
||||
|
||||
] (./api_shell.tex) [13
|
||||
|
||||
] (./api_speaker.tex
|
||||
Underfull \hbox (badness 6961) in paragraph at lines 10--10
|
||||
[][]|\EU2/MyriadPro(0)/m/n/10 En-queues speaker driv-ing
|
||||
[]
|
||||
|
||||
) [14
|
||||
|
||||
] (./api_terminal.tex
|
||||
Underfull \hbox (badness 2165) in paragraph at lines 66--66
|
||||
\EU2/MyriadPro(0)/m/n/10 nal. Graphic ter-mi-nals also can
|
||||
@@ -1577,11 +1584,11 @@ Underfull \hbox (badness 10000) in paragraph at lines 66--66
|
||||
[][]|\EU2/MyriadPro(0)/m/n/10 Re-turns cur-rent back-ground
|
||||
[]
|
||||
|
||||
[14
|
||||
[15
|
||||
|
||||
] [15]
|
||||
] [16]
|
||||
\cpimagew=\skip279
|
||||
<mda.png, id=184, 4625.28pt x 1798.72pt>
|
||||
<mda.png, id=194, 4625.28pt x 1798.72pt>
|
||||
File: mda.png Graphic file (type png)
|
||||
<use mda.png>
|
||||
Package pdftex.def Info: mda.png used on input line 88.
|
||||
@@ -1589,22 +1596,17 @@ Package pdftex.def Info: mda.png used on input line 88.
|
||||
|
||||
Underfull \vbox (badness 10000) has occurred while \output is active []
|
||||
|
||||
[16]
|
||||
[17]
|
||||
Underfull \hbox (badness 6658) in paragraph at lines 109--109
|
||||
[][]|\EU2/MyriadPro(0)/m/n/10 DEL. Backspace and deletes
|
||||
[]
|
||||
|
||||
) [17<./mda.png>] (./luaglobals.tex
|
||||
) [18<./mda.png>] (./luaglobals.tex
|
||||
Underfull \hbox (badness 1092) in paragraph at lines 16--16
|
||||
\EU2/MyriadPro(0)/m/n/10 ory in-stalled in the com-puter, in
|
||||
[]
|
||||
|
||||
|
||||
Overfull \hbox (38.91pt too wide) in alignment at lines 55--55
|
||||
[] [] []
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 3168) in paragraph at lines 55--55
|
||||
[][]|\EU2/MyriadPro(0)/m/n/10 EM dash rep-re-sented by box-drawing
|
||||
[]
|
||||
@@ -1639,76 +1641,68 @@ Underfull \hbox (badness 6364) in paragraph at lines 55--55
|
||||
[][]|\EU2/MyriadPro(0)/m/n/10 Ascii con-trol se-quence DLE. Used to
|
||||
[]
|
||||
|
||||
[19
|
||||
|
||||
Package longtable Warning: Column widths have changed
|
||||
(longtable) in table 1.12 on input line 55.
|
||||
|
||||
[18
|
||||
|
||||
]) [19] (./luadifferences.tex) [20
|
||||
] [20]) [21] (./luadifferences.tex) [22
|
||||
|
||||
]
|
||||
luaotfload | load : Lookup/name: "MyriadPro" -> "MyriadPro-Bold.otf" [21
|
||||
luaotfload | load : Lookup/name: "MyriadPro" -> "MyriadPro-Bold.otf" [23
|
||||
|
||||
] (./cc_bit.tex) [22
|
||||
] (./cc_bit.tex) [24
|
||||
|
||||
|
||||
]
|
||||
(./cc_colors.tex) [23
|
||||
|
||||
] [24
|
||||
|
||||
] [25
|
||||
(./cc_colors.tex) [25
|
||||
|
||||
] [26
|
||||
|
||||
] [27] [28
|
||||
] [27
|
||||
|
||||
] [28
|
||||
|
||||
] [29] [30
|
||||
|
||||
|
||||
] [29] (./peri_lp.tex) [30
|
||||
] [31] (./peri_lp.tex) [32
|
||||
|
||||
|
||||
]
|
||||
[31
|
||||
[33
|
||||
|
||||
] [32
|
||||
] [34
|
||||
|
||||
] [33
|
||||
] [35
|
||||
|
||||
]
|
||||
\tf@toc=\write5
|
||||
|
||||
\openout5 = romapidoc.toc
|
||||
|
||||
|
||||
Package longtable Warning: Table widths have changed. Rerun LaTeX.
|
||||
|
||||
Package atveryend Info: Empty hook `BeforeClearDocument' on input line 165.
|
||||
Package atveryend Info: Empty hook `AfterLastShipout' on input line 165.
|
||||
(./romapidoc.aux)
|
||||
Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 165.
|
||||
Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 165.
|
||||
Package atveryend Info: Empty hook `BeforeClearDocument' on input line 168.
|
||||
Package atveryend Info: Empty hook `AfterLastShipout' on input line 168.
|
||||
(./romapidoc.aux)
|
||||
Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 168.
|
||||
Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 168.
|
||||
Package rerunfilecheck Info: File `romapidoc.out' has not changed.
|
||||
(rerunfilecheck) Checksum: A4B98F6CE220B3C970CC4D5ECA7A4CF8;2202.
|
||||
Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 165.
|
||||
(rerunfilecheck) Checksum: 08AA264EF0CA42804AF136BDE97F5E44;2293.
|
||||
Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 168.
|
||||
)
|
||||
|
||||
Here is how much of LuaTeX's memory you used:
|
||||
27266 strings out of 494693
|
||||
27283 strings out of 494693
|
||||
125070,662416 words of node,token memory allocated
|
||||
778 words of node memory still in use:
|
||||
780 words of node memory still in use:
|
||||
3 hlist, 1 vlist, 1 rule, 2 glue, 1 kern, 5 attribute, 141 glue_spec, 5 attri
|
||||
bute_list, 2 write nodes
|
||||
avail lists: 2:14493,3:271,4:3580,5:1301,6:6145,7:343,8:21,9:884,10:390
|
||||
30200 multiletter control sequences out of 65536+600000
|
||||
avail lists: 2:14449,3:272,4:3579,5:1301,6:6145,7:343,8:22,9:884,10:390
|
||||
30205 multiletter control sequences out of 65536+600000
|
||||
62 fonts using 5300671 bytes
|
||||
67i,12n,59p,1189b,492s stack positions out of 5000i,500n,10000p,200000b,100000s
|
||||
</Library/Fonts/MyriadPro-It.otf></Library/Fonts/MyriadPro-Regular.otf></Library
|
||||
/Fonts/MyriadPro-Bold.otf>
|
||||
Output written on romapidoc.pdf (33 pages, 95556 bytes).
|
||||
Output written on romapidoc.pdf (35 pages, 97609 bytes).
|
||||
|
||||
PDF statistics: 304 PDF objects out of 1000 (max. 8388607)
|
||||
255 compressed objects within 3 object streams
|
||||
85 named destinations out of 1000 (max. 131072)
|
||||
153 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
PDF statistics: 320 PDF objects out of 1000 (max. 8388607)
|
||||
269 compressed objects within 3 object streams
|
||||
91 named destinations out of 1000 (max. 131072)
|
||||
161 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
|
||||
|
||||
@@ -5,15 +5,16 @@
|
||||
\BOOKMARK [1][-]{section.1.4}{\376\377\000K\000e\000y\000s}{chapter.1}% 5
|
||||
\BOOKMARK [1][-]{section.1.5}{\376\377\000S\000e\000c\000u\000r\000i\000t\000y}{chapter.1}% 6
|
||||
\BOOKMARK [1][-]{section.1.6}{\376\377\000S\000h\000e\000l\000l}{chapter.1}% 7
|
||||
\BOOKMARK [1][-]{section.1.7}{\376\377\000T\000e\000r\000m\000i\000n\000a\000l}{chapter.1}% 8
|
||||
\BOOKMARK [1][-]{section.1.8}{\376\377\000L\000u\000a\000\040\000G\000l\000o\000b\000a\000l\000s}{chapter.1}% 9
|
||||
\BOOKMARK [1][-]{section.1.9}{\376\377\000C\000h\000a\000n\000g\000e\000s\000\040\000f\000r\000o\000m\000\040\000G\000e\000n\000e\000r\000i\000c\000\040\000L\000u\000a\000\040\000E\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t}{chapter.1}% 10
|
||||
\BOOKMARK [0][-]{chapter.2}{\376\377\000C\000o\000m\000p\000a\000t\000i\000b\000i\000l\000i\000t\000y\000\040\000L\000a\000y\000e\000r\000s\040\024\000C\000o\000m\000p\000u\000t\000e\000r\000C\000r\000a\000f\000t}{}% 11
|
||||
\BOOKMARK [1][-]{section.2.1}{\376\377\000B\000i\000t}{chapter.2}% 12
|
||||
\BOOKMARK [1][-]{section.2.2}{\376\377\000C\000o\000l\000o\000r\000s}{chapter.2}% 13
|
||||
\BOOKMARK [1][-]{section.2.3}{\376\377\000T\000e\000r\000m}{chapter.2}% 14
|
||||
\BOOKMARK [1][-]{section.2.4}{\376\377\000F\000i\000l\000e\000s\000y\000s\000t\000e\000m}{chapter.2}% 15
|
||||
\BOOKMARK [0][-]{chapter.3}{\376\377\000C\000o\000m\000p\000a\000t\000i\000b\000i\000l\000i\000t\000y\000\040\000L\000a\000y\000e\000r\000s\040\024\000O\000p\000e\000n\000C\000o\000m\000p\000u\000t\000e\000r\000s}{}% 16
|
||||
\BOOKMARK [0][-]{chapter.4}{\376\377\000P\000e\000r\000i\000p\000h\000e\000r\000a\000l\000s}{}% 17
|
||||
\BOOKMARK [1][-]{section.4.1}{\376\377\000L\000i\000n\000e\000\040\000P\000r\000i\000n\000t\000e\000r}{chapter.4}% 18
|
||||
\BOOKMARK [0][-]{chapter.5}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 19
|
||||
\BOOKMARK [1][-]{section.1.7}{\376\377\000S\000p\000e\000a\000k\000e\000r}{chapter.1}% 8
|
||||
\BOOKMARK [1][-]{section.1.8}{\376\377\000T\000e\000r\000m\000i\000n\000a\000l}{chapter.1}% 9
|
||||
\BOOKMARK [1][-]{section.1.9}{\376\377\000L\000u\000a\000\040\000G\000l\000o\000b\000a\000l\000s}{chapter.1}% 10
|
||||
\BOOKMARK [1][-]{section.1.10}{\376\377\000C\000h\000a\000n\000g\000e\000s\000\040\000f\000r\000o\000m\000\040\000G\000e\000n\000e\000r\000i\000c\000\040\000L\000u\000a\000\040\000E\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t}{chapter.1}% 11
|
||||
\BOOKMARK [0][-]{chapter.2}{\376\377\000C\000o\000m\000p\000a\000t\000i\000b\000i\000l\000i\000t\000y\000\040\000L\000a\000y\000e\000r\000s\040\024\000C\000o\000m\000p\000u\000t\000e\000r\000C\000r\000a\000f\000t}{}% 12
|
||||
\BOOKMARK [1][-]{section.2.1}{\376\377\000B\000i\000t}{chapter.2}% 13
|
||||
\BOOKMARK [1][-]{section.2.2}{\376\377\000C\000o\000l\000o\000r\000s}{chapter.2}% 14
|
||||
\BOOKMARK [1][-]{section.2.3}{\376\377\000T\000e\000r\000m}{chapter.2}% 15
|
||||
\BOOKMARK [1][-]{section.2.4}{\376\377\000F\000i\000l\000e\000s\000y\000s\000t\000e\000m}{chapter.2}% 16
|
||||
\BOOKMARK [0][-]{chapter.3}{\376\377\000C\000o\000m\000p\000a\000t\000i\000b\000i\000l\000i\000t\000y\000\040\000L\000a\000y\000e\000r\000s\040\024\000O\000p\000e\000n\000C\000o\000m\000p\000u\000t\000e\000r\000s}{}% 17
|
||||
\BOOKMARK [0][-]{chapter.4}{\376\377\000P\000e\000r\000i\000p\000h\000e\000r\000a\000l\000s}{}% 18
|
||||
\BOOKMARK [1][-]{section.4.1}{\376\377\000L\000i\000n\000e\000\040\000P\000r\000i\000n\000t\000e\000r}{chapter.4}% 19
|
||||
\BOOKMARK [0][-]{chapter.5}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 20
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -115,6 +115,9 @@
|
||||
\section{Shell}
|
||||
\input{api_shell}
|
||||
|
||||
\section{Speaker}
|
||||
\input{api_speaker}
|
||||
|
||||
\section{Terminal}
|
||||
\input{api_terminal}
|
||||
|
||||
|
||||
@@ -11,25 +11,27 @@
|
||||
\contentsline {section}{\numberline {1.5}Security}{12}{section.1.5}
|
||||
\contentsline {subsection}{\numberline {1.5.1}Functions}{12}{subsection.1.5.1}
|
||||
\contentsline {section}{\numberline {1.6}Shell}{13}{section.1.6}
|
||||
\contentsline {section}{\numberline {1.7}Terminal}{14}{section.1.7}
|
||||
\contentsline {subsection}{\numberline {1.7.1}Functions}{14}{subsection.1.7.1}
|
||||
\contentsline {subsection}{\numberline {1.7.2}Standard Colours}{16}{subsection.1.7.2}
|
||||
\contentsline {subsection}{\numberline {1.7.3}Codepage}{17}{subsection.1.7.3}
|
||||
\contentsline {subsection}{\numberline {1.7.4}Accepted Control Sequences}{17}{subsection.1.7.4}
|
||||
\contentsline {section}{\numberline {1.8}Lua Globals}{18}{section.1.8}
|
||||
\contentsline {subsection}{\numberline {1.8.1}Functions}{18}{subsection.1.8.1}
|
||||
\contentsline {subsection}{\numberline {1.8.2}Constants}{18}{subsection.1.8.2}
|
||||
\contentsline {section}{\numberline {1.9}Changes from Generic Lua Environment}{20}{section.1.9}
|
||||
\contentsline {chapter}{\chapternumberline {2}Compatibility Layers---ComputerCraft}{21}{chapter.2}
|
||||
\contentsline {section}{\numberline {2.1}Bit}{22}{section.2.1}
|
||||
\contentsline {subsection}{\numberline {2.1.1}Functions}{22}{subsection.2.1.1}
|
||||
\contentsline {section}{\numberline {2.2}Colors}{23}{section.2.2}
|
||||
\contentsline {subsection}{\numberline {2.2.1}Constants}{23}{subsection.2.2.1}
|
||||
\contentsline {subsection}{\numberline {2.2.2}Functions}{23}{subsection.2.2.2}
|
||||
\contentsline {section}{\numberline {2.3}Term}{24}{section.2.3}
|
||||
\contentsline {section}{\numberline {2.4}Filesystem}{25}{section.2.4}
|
||||
\contentsline {chapter}{\chapternumberline {3}Compatibility Layers---OpenComputers}{27}{chapter.3}
|
||||
\contentsline {chapter}{\chapternumberline {4}Peripherals}{29}{chapter.4}
|
||||
\contentsline {section}{\numberline {4.1}Line Printer}{30}{section.4.1}
|
||||
\contentsline {subsection}{\numberline {4.1.1}Functions}{30}{subsection.4.1.1}
|
||||
\contentsline {chapter}{\chapternumberline {5}References}{31}{chapter.5}
|
||||
\contentsline {section}{\numberline {1.7}Speaker}{14}{section.1.7}
|
||||
\contentsline {section}{\numberline {1.8}Terminal}{15}{section.1.8}
|
||||
\contentsline {subsection}{\numberline {1.8.1}Functions}{15}{subsection.1.8.1}
|
||||
\contentsline {subsection}{\numberline {1.8.2}Standard Colours}{17}{subsection.1.8.2}
|
||||
\contentsline {subsection}{\numberline {1.8.3}Codepage}{18}{subsection.1.8.3}
|
||||
\contentsline {subsection}{\numberline {1.8.4}Accepted Control Sequences}{18}{subsection.1.8.4}
|
||||
\contentsline {section}{\numberline {1.9}Lua Globals}{19}{section.1.9}
|
||||
\contentsline {subsection}{\numberline {1.9.1}Functions}{19}{subsection.1.9.1}
|
||||
\contentsline {subsection}{\numberline {1.9.2}Constants}{19}{subsection.1.9.2}
|
||||
\contentsline {subsection}{\numberline {1.9.3}Bell Codes}{20}{subsection.1.9.3}
|
||||
\contentsline {section}{\numberline {1.10}Changes from Generic Lua Environment}{22}{section.1.10}
|
||||
\contentsline {chapter}{\chapternumberline {2}Compatibility Layers---ComputerCraft}{23}{chapter.2}
|
||||
\contentsline {section}{\numberline {2.1}Bit}{24}{section.2.1}
|
||||
\contentsline {subsection}{\numberline {2.1.1}Functions}{24}{subsection.2.1.1}
|
||||
\contentsline {section}{\numberline {2.2}Colors}{25}{section.2.2}
|
||||
\contentsline {subsection}{\numberline {2.2.1}Constants}{25}{subsection.2.2.1}
|
||||
\contentsline {subsection}{\numberline {2.2.2}Functions}{25}{subsection.2.2.2}
|
||||
\contentsline {section}{\numberline {2.3}Term}{26}{section.2.3}
|
||||
\contentsline {section}{\numberline {2.4}Filesystem}{27}{section.2.4}
|
||||
\contentsline {chapter}{\chapternumberline {3}Compatibility Layers---OpenComputers}{29}{chapter.3}
|
||||
\contentsline {chapter}{\chapternumberline {4}Peripherals}{31}{chapter.4}
|
||||
\contentsline {section}{\numberline {4.1}Line Printer}{32}{section.4.1}
|
||||
\contentsline {subsection}{\numberline {4.1.1}Functions}{32}{subsection.4.1.1}
|
||||
\contentsline {chapter}{\chapternumberline {5}References}{33}{chapter.5}
|
||||
|
||||
Reference in New Issue
Block a user