-
Notifications
You must be signed in to change notification settings - Fork 0
/
wmsxhelper.js
39 lines (35 loc) · 1011 Bytes
/
wmsxhelper.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/**
* WebMSX integration helpers
* @author Rafael Jannone <jannone@gmail.com>
*/
function emulatorRun() {
const disk = {
name: 'MyDisk',
content: buildDisk({
//'autoexec.bas': "10 CLS:PRINT\"HELLO WORLD!\"",
'song.txt': document.getElementById("text2").value,
})
}
const altPower = 0 // ??
try {
WMSX.room.diskDrive.loadDiskStackFromFiles(1, [disk], altPower)
} catch (ex) {
console.error(ex)
throw new Error('Could not load your files into the emulator')
}
WMSX.room.machine.reset()
}
function buildDisk(files) {
const dskimage = create_dsk() // disk-basic boot by default
const attr = load_dsk(dskimage)
for (const filename in files) {
const content = files[filename].trim().replace(/\n/g, '\r\n')
if (content.length > 0) {
const data = content.split('').map(function(c) { return c.charCodeAt(0); })
add_single_file(dskimage, attr, filename, data)
}
}
flush_dsk(dskimage, attr)
load_dsk(dskimage)
return dskimage
}