From 093dde2c90528f6e36768826e0d6c823696345b5 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 1 Feb 2024 00:38:24 -0500 Subject: [PATCH] DivASM: earliest work --- src/divasm/divasm.cpp | 22 +++++++++++++++++ src/divasm/divasm.h | 52 +++++++++++++++++++++++++++++++-------- src/divasm/standalone.cpp | 30 ++++++++++++++++++++++ 3 files changed, 94 insertions(+), 10 deletions(-) create mode 100644 src/divasm/divasm.cpp create mode 100644 src/divasm/standalone.cpp diff --git a/src/divasm/divasm.cpp b/src/divasm/divasm.cpp new file mode 100644 index 000000000..3970669c8 --- /dev/null +++ b/src/divasm/divasm.cpp @@ -0,0 +1,22 @@ +/** + * Furnace Tracker - multi-system chiptune tracker + * Copyright (C) 2021-2024 tildearrow and contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + + #include "divasm.h" + + \ No newline at end of file diff --git a/src/divasm/divasm.h b/src/divasm/divasm.h index 2846c98f8..646ed089f 100644 --- a/src/divasm/divasm.h +++ b/src/divasm/divasm.h @@ -1,3 +1,27 @@ +/** + * Furnace Tracker - multi-system chiptune tracker + * Copyright (C) 2021-2024 tildearrow and contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +// this is a mini-assembler written for Furnace. +// it will be used in future ROM export (yes, that's right, ROM is baked at export time). + +#include "../engine/safeWriter.h" + struct DivASMResult { int line, err; DivASMResult(): @@ -5,26 +29,34 @@ struct DivASMResult { err(0) {} }; -struct DivASMFile { - String name; - SafeReader* data; -}; - enum DivASMTarget { DIV_ASM_TARGET_DUMMY=0, DIV_ASM_TARGET_6502, - DIV_ASM_TARGET_SPC700 + DIV_ASM_TARGET_SPC700, + DIV_ASM_TARGET_Z80 +}; + +struct DivLabel { + String name; + unsigned int location; + bool direct; +}; + +struct DivOper { + String operation; + int line; }; class DivASM { - std::vector files; SafeWriter* result; + std::vector labels; + std::vector ops; + public: DivASMResult getError(); - SafeWriter* assemble(String name); - void addFile(String name, SafeReader* data); + SafeWriter* assemble(SafeReader* data); - DivASM(DivASMTarget target); + DivASM(); ~DivASM(); }; diff --git a/src/divasm/standalone.cpp b/src/divasm/standalone.cpp new file mode 100644 index 000000000..17b0bf631 --- /dev/null +++ b/src/divasm/standalone.cpp @@ -0,0 +1,30 @@ +/** + * Furnace Tracker - multi-system chiptune tracker + * Copyright (C) 2021-2024 tildearrow and contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "divasm.h" + +int main(int argc, char** argv) { + if (argc<2) { + printf("usage: %s file\n",argv[0]); + return 1; + } + + + return 0; +} \ No newline at end of file