Files
tsvm/assets/disk0/tvdos/sbin/sysctl.js
2023-02-18 19:38:50 +09:00

55 lines
1.2 KiB
JavaScript

// synopsis: sysctl {reset|...} target
const verbs = {
"reset": ["Reset", "Resetting"]
}
const actions = {
"reset": {
"mmu": ()=>{
for (let k = 0; k < sys.maxmem(); k += 64) {
try {
sys.free(k)
}
catch (e) {}
}
},
"graphics": ()=>{
graphics.resetPalette()
con.reset_graphics()
graphics.clearPixels(255)
graphics.clearPixels2(240)
graphics.setGraphicsMode(0)
graphics.setBackground(34,51,68)
sys.poke(-1299460, 20)
sys.poke(-1299460, 21)
},
"audio": ()=>{
for (let k = 0; k < 4; k++) {
audio.stop(k)
audio.purgeQueue(k)
audio.resetParams(k)
}
}
}
}
const verb = exec_args[1]
const target = exec_args[2]
if (verb && !target) {
println(`sysctl: no target specified for ${verbs[verb][1]}`)
return 1
}
if (!verb) {
println("Usage: sysctl {reset|...} target")
return 10
}
let actionfun = actions[verb.toLowerCase()][target.toLowerCase()]
if (actionfun) actionfun()
else {
printerrln(`sysctl: unknown target ${target}`)
return 1
}