diff --git a/deno.lock b/deno.lock
index ca861f070..e0e71ec3a 100644
--- a/deno.lock
+++ b/deno.lock
@@ -56,7 +56,6 @@
"npm:qrcode.vue@^3.6.0": "3.6.0_vue@3.5.27__typescript@5.9.3_typescript@5.9.3",
"npm:readline-sync@^1.4.10": "1.4.10",
"npm:sass-embedded@^1.93.3": "1.97.2",
- "npm:sharp@~0.34.5": "0.34.5",
"npm:svgo@4": "4.0.0",
"npm:typescript@^5.8.3": "5.9.3",
"npm:unplugin-vue-components@30": "30.0.0_vue@3.5.27__typescript@5.9.3_typescript@5.9.3",
@@ -4199,7 +4198,7 @@
"npm:qrcode.vue@^3.6.0",
"npm:readline-sync@^1.4.10",
"npm:sass-embedded@^1.93.3",
- "npm:sharp@~0.34.5",
+ "npm:sharp@~0.35.3",
"npm:svgo@4",
"npm:typescript@^5.8.3",
"npm:unplugin-vue-components@30",
diff --git a/src/web/components/assembly/MultifileEditor.mjs b/src/web/components/assembly/MultifileEditor.mjs
index 80f36471b..2954c4d64 100644
--- a/src/web/components/assembly/MultifileEditor.mjs
+++ b/src/web/components/assembly/MultifileEditor.mjs
@@ -1,7 +1,11 @@
// Part of monaco editor to allow user create multiple file to edit in assembly
import { as } from "@/core/assembler/sailAssembler/web/CNAssambler.mjs";
-import dump64Module, { libtags64 } from "@/core/assembler/sailAssembler/web/wasm/objdump64.js"
-import dump32Module, { libtags32 } from "@/core/assembler/sailAssembler/web/wasm/objdump.js"
+import dump64Module, {
+ libtags64,
+} from "@/core/assembler/sailAssembler/web/wasm/objdump64.js";
+import dump32Module, {
+ libtags32,
+} from "@/core/assembler/sailAssembler/web/wasm/objdump.js";
import { coreEvents, CoreEventTypes } from "@/core/events.mts";
import { architecture } from "@/core/core.mjs";
@@ -12,22 +16,19 @@ export var currentTab = -1;
let libdump = null;
function emitAssemblyFilesUpdated() {
- coreEvents.emit(CoreEventTypes.ASSEMBLY_FILES_UPDATED, {
- files: assembly_files.map(file => ({ ...file })),
- currentTab,
- });
+ coreEvents.emit(CoreEventTypes.ASSEMBLY_FILES_UPDATED, {
+ files: assembly_files.map(file => ({ ...file })),
+ currentTab,
+ });
}
-export function createFile(storecode = "", filename ="", newcode = "" ) {
-
+export function createFile(storecode = "", filename = "", newcode = "") {
var filename_prompt;
if (filename === "") {
filename_prompt = prompt("Name of new File");
- if (filename_prompt === "" || filename_prompt === null)
+ if (filename_prompt === "" || filename_prompt === null)
filename_prompt = "AssemblyFile";
- }
- else
- filename_prompt = filename;
+ } else filename_prompt = filename;
filename_prompt = filename_prompt.replaceAll(" ", "");
if (filename_prompt.includes(".s"))
filename_prompt = filename_prompt.slice(0, -2);
@@ -35,37 +36,41 @@ export function createFile(storecode = "", filename ="", newcode = "" ) {
var condition = true;
var index = 1;
while (condition) {
- if (assembly_files.findIndex(file => file.filename.slice(0,-2) === filename_prompt) !== -1){
+ if (
+ assembly_files.findIndex(
+ file => file.filename.slice(0, -2) === filename_prompt,
+ ) !== -1
+ ) {
if (filename_prompt.endsWith(")"))
filename_prompt = filename_prompt.split("(")[0];
filename_prompt = filename_prompt + "(" + index + ")";
index += 1;
- }
- else
- condition = false;
+ } else condition = false;
}
filename_prompt = filename_prompt + ".s";
// First "close" current file editing
let j = assembly_files.findIndex(file => file.editing_now === true);
- if (j !== -1){
-
+ if (j !== -1) {
assembly_files[j].code = storecode;
assembly_files[j].editing_now = false;
}
- let newFile = {
- filename: filename_prompt,
- code: (newcode === "") ? ".section .data\n\n# Declare your data to use here\n\n.section .bss\n.align 8\ntohost:\t.dword 0\n\n.section .text.init\n.globl _main\n\n# Complete your main function here\n_main:" : newcode,
- to_compile: true,
- editing_now: true,
- id: assembly_files.length
- };
- assembly_files.push(newFile);
- currentTab = assembly_files.length - 1;
- emitAssemblyFilesUpdated();
- return newFile.code;
-}
+ let newFile = {
+ filename: filename_prompt,
+ code:
+ newcode === ""
+ ? ".section .data\n\n# Declare your data to use here\n\n.section .bss\n.align 8\ntohost:\t.dword 0\n\n.section .text.init\n.globl _main\n\n# Complete your main function here\n_main:"
+ : newcode,
+ to_compile: true,
+ editing_now: true,
+ id: assembly_files.length,
+ };
+ assembly_files.push(newFile);
+ currentTab = assembly_files.length - 1;
+ emitAssemblyFilesUpdated();
+ return newFile.code;
+}
export function showFileEditor(filename, code) {
let i = assembly_files.findIndex(file => file.editing_now === true);
@@ -73,7 +78,7 @@ export function showFileEditor(filename, code) {
assembly_files[i].code = code;
assembly_files[i].editing_now = false;
}
- let j = assembly_files.findIndex( file => file.filename === filename);
+ let j = assembly_files.findIndex(file => file.filename === filename);
assembly_files[j].editing_now = true;
currentTab = assembly_files[j].id;
emitAssemblyFilesUpdated();
@@ -93,84 +98,77 @@ export function DeleteFile(filename) {
assembly_files.splice(i, 1);
// refresh assembly_files id
- for (let j = 0; j < assembly_files.length; j++){
+ for (let j = 0; j < assembly_files.length; j++) {
assembly_files[j].id = j;
}
// open an existent file
- if (assembly_files.length !== 0){
+ if (assembly_files.length !== 0) {
currentTab = assembly_files[assembly_files.length - 1].id;
assembly_files[assembly_files.length - 1].editing_now = true;
- } else
- currentTab = -1;
+ } else currentTab = -1;
emitAssemblyFilesUpdated();
}
}
export async function disassemble_lib(lib) {
let depsLeft = Infinity;
- if (architecture.config.name === "SRV32"){
+ if (architecture.config.name === "SRV32") {
libdump = await dump32Module({
- monitorRunDependencies(left) {
- depsLeft = left;
- console.log('[dump32] deps pendientes:', left);
- },
+ monitorRunDependencies(left) {
+ depsLeft = left;
+ console.log("[dump32] deps pendientes:", left);
+ },
});
} else {
libdump = await dump64Module({
- monitorRunDependencies(left) {
- depsLeft = left;
- console.log('[dump32] deps pendientes:', left);
- },
+ monitorRunDependencies(left) {
+ depsLeft = left;
+ console.log("[dump32] deps pendientes:", left);
+ },
});
}
- await new Promise((resolve) => {
+ await new Promise(resolve => {
const check = () => {
- if (depsLeft === 0) resolve();
- else setTimeout(check, 10);
+ if (depsLeft === 0) resolve();
+ else setTimeout(check, 10);
};
check();
});
-
libdump.run([lib.library_file, "-D", lib.name]);
console.log(libtags64);
console.log(libtags32);
-
}
export async function renameFile(oldName, newName) {
-
-
if (newName.endsWith(".s") && newName !== null)
- newName = newName.slice(0,-2);
+ newName = newName.slice(0, -2);
// first check new filename
- if (newName === "" || newName === null)
- newName = "AssemblyFile";
+ if (newName === "" || newName === null) newName = "AssemblyFile";
// check if newName and oldName are the same
- if (newName === oldName.slice(0,-2)) return;
+ if (newName === oldName.slice(0, -2)) return;
// Then check if there is anyfile with the same name. If it is add and index to diff files
var cond = true;
var index = 1;
while (cond) {
- if (assembly_files.findIndex(file => file.filename.slice(0,-2) === newName) !== -1){
- if (newName.endsWith(")"))
- newName = newName.split("(")[0];
+ if (
+ assembly_files.findIndex(
+ file => file.filename.slice(0, -2) === newName,
+ ) !== -1
+ ) {
+ if (newName.endsWith(")")) newName = newName.split("(")[0];
newName = newName + "(" + index + ")";
-
- if (newName === oldName.slice(0, -2))
- cond = false;
- else
- index += 1;
- }
- else
- cond = false;
+
+ if (newName === oldName.slice(0, -2)) cond = false;
+ else index += 1;
+ } else cond = false;
}
- newName += ".s";
+ newName += ".s";
let i = assembly_files.findIndex(file => file.filename === oldName);
assembly_files[i].filename = newName;
@@ -178,21 +176,25 @@ export async function renameFile(oldName, newName) {
}
export function setAssemblyFiles(files) {
- assembly_files = Array.isArray(files) ? files.map((file, index) => ({
- ...file,
- id: file.id ?? index,
- })) : [];
-
- const editingIndex = assembly_files.findIndex(file => file.editing_now === true);
-
- if (editingIndex >= 0) {
- currentTab = assembly_files[editingIndex].id;
- } else if (assembly_files.length > 0) {
- assembly_files[0].editing_now = true;
- currentTab = assembly_files[0].id;
- } else {
- currentTab = -1;
- }
-
- emitAssemblyFilesUpdated();
-}
\ No newline at end of file
+ assembly_files = Array.isArray(files)
+ ? files.map((file, index) => ({
+ ...file,
+ id: file.id ?? index,
+ }))
+ : [];
+
+ const editingIndex = assembly_files.findIndex(
+ file => file.editing_now === true,
+ );
+
+ if (editingIndex >= 0) {
+ currentTab = assembly_files[editingIndex].id;
+ } else if (assembly_files.length > 0) {
+ assembly_files[0].editing_now = true;
+ currentTab = assembly_files[0].id;
+ } else {
+ currentTab = -1;
+ }
+
+ emitAssemblyFilesUpdated();
+}
diff --git a/src/web/components/assembly/TextareaAssembly.vue b/src/web/components/assembly/TextareaAssembly.vue
index 4fa5bd0c3..2d4a4459a 100644
--- a/src/web/components/assembly/TextareaAssembly.vue
+++ b/src/web/components/assembly/TextareaAssembly.vue
@@ -17,11 +17,28 @@ You should have received a copy of the GNU Lesser General Public License
along with CREATOR. If not, see .
-->
-
-
+
+
-
+
-
+
-
+
{{ tab.filename }}
- X
+ X
-
-
-
+
+
-
-
+
-
+