diff --git a/apple2js.html b/apple2js.html
index 423bf4a..acb3074 100644
--- a/apple2js.html
+++ b/apple2js.html
@@ -199,7 +199,7 @@ function openManage() {
$("#manage").dialog("open");
}
-function loadHTTP(url, cb) {
+function loadHTTP(url) {
loading = true;
$("#loading").dialog("open");
@@ -215,9 +215,6 @@ function loadHTTP(url, cb) {
$("#disklabel" + _saveDrive).text(name);
$("#loading").dialog("close");
loading = false;
- if (cb) {
- cb();
- }
}
}
req.send(null);
diff --git a/apple2jse.html b/apple2jse.html
index 387afcb..ae0e941 100644
--- a/apple2jse.html
+++ b/apple2jse.html
@@ -203,7 +203,7 @@ function openManage() {
$("#manage").dialog("open");
}
-function loadHTTP(url, cb) {
+function loadHTTP(url) {
loading = true;
$("#loading").dialog("open");
@@ -219,9 +219,6 @@ function loadHTTP(url, cb) {
$("#disklabel" + _saveDrive).text(name);
$("#loading").dialog("close");
loading = false;
- if (cb) {
- cb();
- }
}
}
req.send(null);
diff --git a/js/disk2.js b/js/disk2.js
index d498400..b0bb912 100644
--- a/js/disk2.js
+++ b/js/disk2.js
@@ -720,6 +720,38 @@ function DiskII(io, callbacks, slot)
if (fmt === "do") {
fmt = "dsk";
}
+ _cur.readOnly = false;
+ if (fmt === "2mg") {
+ // Standard header size is 64 bytes. Make assumptions.
+ var prefix = new Uint8Array(data.slice(0, 64));
+ var data = data.slice(64);
+
+ // Check image format.
+ // Sure, it's really 64 bits. But only 2 are actually used.
+ switch (prefix[0xc]) {
+ case 0:
+ fmt = "dsk";
+ break;
+ case 1:
+ fmt = "po";
+ break;
+ case 2:
+ fmt = "nib";
+ break;
+ default: // Something hinky, assume "dsk"
+ fmt = "dsk";
+ break;
+ }
+ var flags =
+ prefix[0x10] | (prefix[0x11] << 8) |
+ (prefix[0x12] << 16) | (prefix[0x13] << 24);
+ _cur.readOnly = (flags & 0x80000000) ? true : false;
+ if (flags & 0x10) {
+ _cur.volume = flags & 0xff;
+ } else {
+ _cur.volume = 254;
+ }
+ }
for (var t = 0; t < 35; t++) {
var track, off, d;
if (fmt === "nib") {