diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
new file mode 100644
index 000000000..6fe02f35b
--- /dev/null
+++ b/CONTRIBUTORS.md
@@ -0,0 +1,35 @@
+# License
+
+```
+| SPDX-License-Identifier: AGPL-3.0-or-later
+| © Copyright 2008-2024 José Manuel Rodríguez de la Rosa
+| and contributors.
+```
+
+See https://www.gnu.org/licenses/agpl-3.0.html for license details.
+
+# Contributors
+
+Not all the Contributors are listed here. If you are missing, please let us know.
+
+* Jose Rodriguez ([@boriel](https://github.com/boriel))
+* Paul Fisher [@britlion](https://github.com/Britlion)
+* David Saphier [@em00k](https://github.com/em00k)
+* Agustín Gimenez Bernad [@gusmanb](https://github.com/gusmanb)
+* Baltasar García Perez-Schofield ([@Baltasarq](https://github.com/Baltasarq))
+* Bartolomé Sánchez Salado ([@bartsanchez](https://github.com/bartsanchez))
+* Cronomantic ([@cronomantic](https://github.com/cronomantic))
+* Juan Segura Durán ([@Duefectu](https://github.com/Duefectu))
+* Einar Saukas ([@einar-saukas](https://github.com/einar-saukas))
+* Ivan Kosarev ([@kosarev](https://github.com/kosarev))
+* Miguel Angel Rodríguez Jódar ([@mcleod-ideafix](https://github.com/mcleod-ideafix))
+* [@MrKOSMOS](https://github.com/MrKOSMOS)
+* [@patters-match](https://github.com/patters-match)
+* [@programadorhedonista](https://github.com/programadorhedonista)
+* Rogerio Biondi ([@rogeriobiondi](https://github.com/rogeriobiondi))
+* [@spectrumcomputing](https://github.com/spectrumcomputing)
+* Stefan ([@polluks](https://github.com/polluks))
+* Alejandro Valero ([@wilco2009](https://github.com/wilco2009))
+* Pedro Gimeno ([@pgimeno](https://codeberg.org/pgimeno))
+
+Many thanks! Every line counts! 🫶
diff --git a/src/__init__.py b/src/__init__.py
index e69de29bb..906667a8d 100644
--- a/src/__init__.py
+++ b/src/__init__.py
@@ -0,0 +1,6 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
diff --git a/src/api/__init__.py b/src/api/__init__.py
index e69de29bb..906667a8d 100644
--- a/src/api/__init__.py
+++ b/src/api/__init__.py
@@ -0,0 +1,6 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
diff --git a/src/api/check.py b/src/api/check.py
index 228cddb04..b728d0511 100644
--- a/src/api/check.py
+++ b/src/api/check.py
@@ -1,12 +1,9 @@
-# vim:ts=4:sw=4:et:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
-
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.api import config, errmsg, global_
from src.api.constants import CLASS, SCOPE
diff --git a/src/api/config.py b/src/api/config.py
index 66361b27d..9923394e9 100644
--- a/src/api/config.py
+++ b/src/api/config.py
@@ -1,11 +1,9 @@
-# vim:ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import configparser
import enum
diff --git a/src/api/constants.py b/src/api/constants.py
index f5907072a..888a89b95 100644
--- a/src/api/constants.py
+++ b/src/api/constants.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import enum
import os
diff --git a/src/api/dataref.py b/src/api/dataref.py
index 9dbd79ce1..942b3e755 100644
--- a/src/api/dataref.py
+++ b/src/api/dataref.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from dataclasses import dataclass
from typing import Any
diff --git a/src/api/debug.py b/src/api/debug.py
index b305ab1fa..434158cc5 100644
--- a/src/api/debug.py
+++ b/src/api/debug.py
@@ -1,6 +1,9 @@
-# vim:ts=4:sw=4:et:
-
-# Simple debugging module
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import inspect
import os
diff --git a/src/api/decorator.py b/src/api/decorator.py
index a9bc6bb83..8c1d57057 100644
--- a/src/api/decorator.py
+++ b/src/api/decorator.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from collections.abc import Callable
diff --git a/src/api/errmsg.py b/src/api/errmsg.py
index 13241294c..ec143223d 100644
--- a/src/api/errmsg.py
+++ b/src/api/errmsg.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import sys
from collections.abc import Callable
diff --git a/src/api/exception.py b/src/api/exception.py
index 97544bb40..a1c2d849b 100644
--- a/src/api/exception.py
+++ b/src/api/exception.py
@@ -1,14 +1,9 @@
-# vim:ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
-
-
-# ------------------------- ERROR exception classes ---------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
__all__ = [
"Error",
diff --git a/src/api/fp.py b/src/api/fp.py
index 478271000..5e0475e71 100644
--- a/src/api/fp.py
+++ b/src/api/fp.py
@@ -1,4 +1,9 @@
-# Floating point converter
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
def fp(x: float) -> tuple[str, str]:
diff --git a/src/api/global_.py b/src/api/global_.py
index 01856fa5a..3bf9bac85 100644
--- a/src/api/global_.py
+++ b/src/api/global_.py
@@ -1,11 +1,10 @@
-# vim:ts=4:et:sw=4:
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
from __future__ import annotations
from typing import TYPE_CHECKING, Final, NamedTuple
diff --git a/src/api/opcodestemps.py b/src/api/opcodestemps.py
index a17aa27b3..89417c516 100644
--- a/src/api/opcodestemps.py
+++ b/src/api/opcodestemps.py
@@ -1,9 +1,9 @@
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
__all__ = "OpcodesTemps", "init"
diff --git a/src/api/optimize.py b/src/api/optimize.py
index 1f7fdeca4..380ac699b 100644
--- a/src/api/optimize.py
+++ b/src/api/optimize.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import symtable
from collections.abc import Generator
from typing import Any, NamedTuple
diff --git a/src/api/options.py b/src/api/options.py
index 4e0c7c71b..943be16d3 100644
--- a/src/api/options.py
+++ b/src/api/options.py
@@ -1,11 +1,9 @@
-# vim: ts=4:sw=4:et:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import enum
import json
diff --git a/src/api/python_version_check.py b/src/api/python_version_check.py
index c54154767..348707bc4 100644
--- a/src/api/python_version_check.py
+++ b/src/api/python_version_check.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import sys
from typing import Final
diff --git a/src/api/string_labels.py b/src/api/string_labels.py
index 35a87841c..f86a92dbc 100644
--- a/src/api/string_labels.py
+++ b/src/api/string_labels.py
@@ -1,9 +1,9 @@
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
__doc__ = """This module is a singleton instance that contains
a mapping of constant Strings to Labels.
diff --git a/src/api/symboltable/__init__.py b/src/api/symboltable/__init__.py
index e69de29bb..906667a8d 100644
--- a/src/api/symboltable/__init__.py
+++ b/src/api/symboltable/__init__.py
@@ -0,0 +1,6 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
diff --git a/src/api/symboltable/scope.py b/src/api/symboltable/scope.py
index 2ef7deefc..9e938c120 100644
--- a/src/api/symboltable/scope.py
+++ b/src/api/symboltable/scope.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from collections import OrderedDict
from typing import Optional
diff --git a/src/api/symboltable/symboltable.py b/src/api/symboltable/symboltable.py
index 176a6a4eb..1deaf810a 100644
--- a/src/api/symboltable/symboltable.py
+++ b/src/api/symboltable/symboltable.py
@@ -1,12 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
-
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.api import check as check
from src.api import errmsg, global_
diff --git a/src/api/tmp_labels.py b/src/api/tmp_labels.py
index a6a608dd4..d3bcd029f 100644
--- a/src/api/tmp_labels.py
+++ b/src/api/tmp_labels.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.api import global_ as gl
LABEL_COUNTER = 0
diff --git a/src/api/utils.py b/src/api/utils.py
index 0a9561cb8..0d9378ac2 100644
--- a/src/api/utils.py
+++ b/src/api/utils.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import errno
import os
import shelve
diff --git a/src/arch/__init__.py b/src/arch/__init__.py
index 2344039d2..fe5ba2cf3 100755
--- a/src/arch/__init__.py
+++ b/src/arch/__init__.py
@@ -1,9 +1,9 @@
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNUv3 General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import importlib
from types import ModuleType
diff --git a/src/arch/interface/__init__.py b/src/arch/interface/__init__.py
index e69de29bb..906667a8d 100644
--- a/src/arch/interface/__init__.py
+++ b/src/arch/interface/__init__.py
@@ -0,0 +1,6 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
diff --git a/src/arch/interface/backend.py b/src/arch/interface/backend.py
index b93f444f5..b42d6e64f 100644
--- a/src/arch/interface/backend.py
+++ b/src/arch/interface/backend.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from abc import ABC, abstractmethod
__all__ = ("BackendInterface",)
diff --git a/src/arch/interface/optimizer.py b/src/arch/interface/optimizer.py
index bd1870e52..7d2d1383f 100644
--- a/src/arch/interface/optimizer.py
+++ b/src/arch/interface/optimizer.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from abc import ABC, abstractmethod
diff --git a/src/arch/interface/quad.py b/src/arch/interface/quad.py
index a9e4140d4..4606dafce 100644
--- a/src/arch/interface/quad.py
+++ b/src/arch/interface/quad.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from dataclasses import dataclass
from src.arch.z80.backend.icinstruction import ICInstruction
diff --git a/src/arch/z80/__init__.py b/src/arch/z80/__init__.py
index 8e3a66681..dcbfbadac 100644
--- a/src/arch/z80/__init__.py
+++ b/src/arch/z80/__init__.py
@@ -1,4 +1,9 @@
-# vim:ts=4:et:sw=4:
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import src.api.global_
from src.api.constants import TYPE
diff --git a/src/arch/z80/backend/_16bit.py b/src/arch/z80/backend/_16bit.py
index a9a5928c9..f1086ffe3 100644
--- a/src/arch/z80/backend/_16bit.py
+++ b/src/arch/z80/backend/_16bit.py
@@ -1,11 +1,9 @@
-# --------------------------------------------------------------
-# Copyleft (k) 2008, by Jose M. Rodriguez-Rosa
-# (a.k.a. Boriel, http://www.boriel.com)
-#
-# This module contains 16 bit boolean, arithmetic and
-# comparison intermediate-code translations
-# --------------------------------------------------------------
-
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.api.tmp_labels import tmp_label
from src.arch.z80.backend._8bit import Bits8
diff --git a/src/arch/z80/backend/_32bit.py b/src/arch/z80/backend/_32bit.py
index 0ac274e2a..c436cbb69 100644
--- a/src/arch/z80/backend/_32bit.py
+++ b/src/arch/z80/backend/_32bit.py
@@ -1,10 +1,9 @@
-# --------------------------------------------------------------
-# Copyleft (k) 2008, by Jose M. Rodriguez-Rosa
-# (a.k.a. Boriel, http://www.boriel.com)
-#
-# This module contains 32 bit boolean, arithmetic and
-# comparison intermediate-code translation
-# --------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.api.tmp_labels import tmp_label
from src.arch.z80.backend._8bit import Bits8
diff --git a/src/arch/z80/backend/_8bit.py b/src/arch/z80/backend/_8bit.py
index f0b1a7d41..0848a1ba9 100644
--- a/src/arch/z80/backend/_8bit.py
+++ b/src/arch/z80/backend/_8bit.py
@@ -1,12 +1,9 @@
-# vim: ts=4:sw=4:et
-
-# --------------------------------------------------------------
-# Copyleft (k) 2008, by Jose M. Rodriguez-Rosa
-# (a.k.a. Boriel, http://www.boriel.com)
-#
-# This module contains 8 bit boolean, arithmetic and
-# comparison intermediate-code translations
-# --------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.api.tmp_labels import tmp_label
from src.arch.interface.quad import Quad
diff --git a/src/arch/z80/backend/__init__.py b/src/arch/z80/backend/__init__.py
index 0de04d872..ddaefbe9f 100644
--- a/src/arch/z80/backend/__init__.py
+++ b/src/arch/z80/backend/__init__.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.arch.z80.optimizer.helpers import HI16, LO16
from src.arch.z80.peephole import engine
diff --git a/src/arch/z80/backend/_array.py b/src/arch/z80/backend/_array.py
index c25c6429f..1d2e60f62 100644
--- a/src/arch/z80/backend/_array.py
+++ b/src/arch/z80/backend/_array.py
@@ -1,12 +1,9 @@
-# vim:ts=4:et:sw=4:
-
-# --------------------------------------------------------------
-# Copyleft (k) 2008, by Jose M. Rodriguez-Rosa
-# (a.k.a. Boriel, http://www.boriel.com)
-#
-# This module contains array load/store
-# intermediate-code translations
-# --------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from ._32bit import Bits32
from ._f16 import Fixed16
diff --git a/src/arch/z80/backend/_f16.py b/src/arch/z80/backend/_f16.py
index 771214cb6..106655e93 100644
--- a/src/arch/z80/backend/_f16.py
+++ b/src/arch/z80/backend/_f16.py
@@ -1,10 +1,10 @@
-# --------------------------------------------------------------
-# Copyleft (k) 2008, by Jose M. Rodriguez-Rosa
-# (a.k.a. Boriel, http://www.boriel.com)
-#
-# This module contains cls.f16 (fixed) bit boolean, arithmetic and
-# comparison intermediate-code translations
-# --------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.arch.interface.quad import Quad
from ._32bit import Bits32
diff --git a/src/arch/z80/backend/_float.py b/src/arch/z80/backend/_float.py
index f1fc0324d..3263d3266 100644
--- a/src/arch/z80/backend/_float.py
+++ b/src/arch/z80/backend/_float.py
@@ -1,14 +1,10 @@
-# --------------------------------------------------------------
-# Copyleft (k) 2008, by Jose M. Rodriguez-Rosa
-# (a.k.a. Boriel, http://www.boriel.com)
-#
-# This module contains float (FP) boolean, arithmetic and
-# comparison intermediate-code translations
-# --------------------------------------------------------------
-
-# -----------------------------------------------------
-# Floating Point operators
-# -----------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.api import fp
from src.arch.interface.quad import Quad
from src.arch.z80.backend.common import _f_ops, is_float, is_int, runtime_call
diff --git a/src/arch/z80/backend/_parray.py b/src/arch/z80/backend/_parray.py
index 4dd28b105..33b21e429 100644
--- a/src/arch/z80/backend/_parray.py
+++ b/src/arch/z80/backend/_parray.py
@@ -1,12 +1,9 @@
-# vim:ts=4:et:sw=4:
-
-# --------------------------------------------------------------
-# Copyleft (k) 2008, by Jose M. Rodriguez-Rosa
-# (a.k.a. Boriel, http://www.boriel.com)
-#
-# This module contains local array (both parameters and
-# comparison intermediate-code translations)
-# --------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.api import fp
diff --git a/src/arch/z80/backend/_pload.py b/src/arch/z80/backend/_pload.py
index 99cc9062b..8aa10624d 100644
--- a/src/arch/z80/backend/_pload.py
+++ b/src/arch/z80/backend/_pload.py
@@ -1,12 +1,10 @@
-# vim: et:ts=4:sw=4
-
-# --------------------------------------------------------------
-# Copyleft (k) 2008, by Jose M. Rodriguez-Rosa
-# (a.k.a. Boriel, http://www.boriel.com)
-#
-# This module contains parameter load
-# intermediate-code translations
-# --------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from . import common
from ._8bit import Bits8
from ._16bit import Bits16
diff --git a/src/arch/z80/backend/_str.py b/src/arch/z80/backend/_str.py
index 4492b636c..adcd20076 100644
--- a/src/arch/z80/backend/_str.py
+++ b/src/arch/z80/backend/_str.py
@@ -1,12 +1,9 @@
-# vim:ts=4:et:sw=4:
-
-# --------------------------------------------------------------
-# Copyleft (k) 2008, by Jose M. Rodriguez-Rosa
-# (a.k.a. Boriel, http://www.boriel.com)
-#
-# This module contains string arithmetic and
-# comparison intermediate-code translation
-# --------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from .common import runtime_call
from .exception import InvalidICError as InvalidIC
diff --git a/src/arch/z80/backend/common.py b/src/arch/z80/backend/common.py
index b49f0e3f3..436413833 100644
--- a/src/arch/z80/backend/common.py
+++ b/src/arch/z80/backend/common.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import math
import re
from enum import StrEnum
diff --git a/src/arch/z80/backend/exception.py b/src/arch/z80/backend/exception.py
index 47845e5a9..2a4524411 100644
--- a/src/arch/z80/backend/exception.py
+++ b/src/arch/z80/backend/exception.py
@@ -1,4 +1,9 @@
-# vim:ts=4:et:sw=4:
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.api.exception import Error
diff --git a/src/arch/z80/backend/generic.py b/src/arch/z80/backend/generic.py
index 0f02a1efe..630db6514 100644
--- a/src/arch/z80/backend/generic.py
+++ b/src/arch/z80/backend/generic.py
@@ -1,6 +1,9 @@
-# ----------------------------------------------------------
-# Generic instructions
-# ----------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import re
diff --git a/src/arch/z80/backend/icinfo.py b/src/arch/z80/backend/icinfo.py
index a903dd378..84b462e62 100644
--- a/src/arch/z80/backend/icinfo.py
+++ b/src/arch/z80/backend/icinfo.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from collections.abc import Callable
from dataclasses import dataclass
diff --git a/src/arch/z80/backend/icinstruction.py b/src/arch/z80/backend/icinstruction.py
index 2ae2c19be..32f09ff73 100644
--- a/src/arch/z80/backend/icinstruction.py
+++ b/src/arch/z80/backend/icinstruction.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from enum import StrEnum
from functools import lru_cache
from typing import Any
diff --git a/src/arch/z80/backend/main.py b/src/arch/z80/backend/main.py
index 2a484713d..f662186c9 100644
--- a/src/arch/z80/backend/main.py
+++ b/src/arch/z80/backend/main.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from __future__ import annotations
import re
diff --git a/src/arch/z80/backend/quad.py b/src/arch/z80/backend/quad.py
index 2c231fb7d..c774e309a 100644
--- a/src/arch/z80/backend/quad.py
+++ b/src/arch/z80/backend/quad.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.arch.interface.quad import Quad as BaseQuad
from .icinstruction import ICInstruction
diff --git a/src/arch/z80/backend/runtime/__init__.py b/src/arch/z80/backend/runtime/__init__.py
index 988edfd4a..6cef2a69d 100644
--- a/src/arch/z80/backend/runtime/__init__.py
+++ b/src/arch/z80/backend/runtime/__init__.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from .labels import LABEL_REQUIRED_MODULES # noqa
from .labels import RUNTIME_LABELS # noqa
from .labels import Labels # noqa
diff --git a/src/arch/z80/backend/runtime/core.py b/src/arch/z80/backend/runtime/core.py
index 3dbd2780d..554e1ce93 100644
--- a/src/arch/z80/backend/runtime/core.py
+++ b/src/arch/z80/backend/runtime/core.py
@@ -1,4 +1,9 @@
-# Runtime labels
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from .namespace import NAMESPACE
diff --git a/src/arch/z80/backend/runtime/datarestore.py b/src/arch/z80/backend/runtime/datarestore.py
index 7b7817bac..9e37bc0a4 100644
--- a/src/arch/z80/backend/runtime/datarestore.py
+++ b/src/arch/z80/backend/runtime/datarestore.py
@@ -1,4 +1,9 @@
-# Runtime labels
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from .namespace import NAMESPACE
diff --git a/src/arch/z80/backend/runtime/io.py b/src/arch/z80/backend/runtime/io.py
index 1a8b36789..90caa1619 100644
--- a/src/arch/z80/backend/runtime/io.py
+++ b/src/arch/z80/backend/runtime/io.py
@@ -1,5 +1,9 @@
-# I/O labels
-
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from .namespace import NAMESPACE
diff --git a/src/arch/z80/backend/runtime/labels.py b/src/arch/z80/backend/runtime/labels.py
index b9359048d..5e7a4c5bb 100644
--- a/src/arch/z80/backend/runtime/labels.py
+++ b/src/arch/z80/backend/runtime/labels.py
@@ -1,4 +1,10 @@
-# Runtime Labels
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from typing import Final
from . import core, datarestore, io, math, misc, random
diff --git a/src/arch/z80/backend/runtime/math.py b/src/arch/z80/backend/runtime/math.py
index e91bcb435..5bedf47e7 100644
--- a/src/arch/z80/backend/runtime/math.py
+++ b/src/arch/z80/backend/runtime/math.py
@@ -1,4 +1,9 @@
-# Runtime labels
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from .namespace import NAMESPACE
diff --git a/src/arch/z80/backend/runtime/misc.py b/src/arch/z80/backend/runtime/misc.py
index ed46d9ade..f6b36d061 100644
--- a/src/arch/z80/backend/runtime/misc.py
+++ b/src/arch/z80/backend/runtime/misc.py
@@ -1,4 +1,9 @@
-# Miscelaneous functions
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from .namespace import NAMESPACE
diff --git a/src/arch/z80/backend/runtime/namespace.py b/src/arch/z80/backend/runtime/namespace.py
index 142bf53b9..2c53420ec 100644
--- a/src/arch/z80/backend/runtime/namespace.py
+++ b/src/arch/z80/backend/runtime/namespace.py
@@ -1,4 +1,9 @@
-# Define just the main Private namespace
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.api import global_
diff --git a/src/arch/z80/backend/runtime/random.py b/src/arch/z80/backend/runtime/random.py
index e83bb2f79..fbe496368 100644
--- a/src/arch/z80/backend/runtime/random.py
+++ b/src/arch/z80/backend/runtime/random.py
@@ -1,4 +1,9 @@
-# Runtime labels
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from .namespace import NAMESPACE
diff --git a/src/arch/z80/beep.py b/src/arch/z80/beep.py
index cf4b646be..b2077d142 100755
--- a/src/arch/z80/beep.py
+++ b/src/arch/z80/beep.py
@@ -1,5 +1,11 @@
#!/usr/bin/env python3
-# vim:ts=4:et:sw=4:
+
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
__doc___ = """This stdlib converts duration,pitch for a beep
from floating point to HL,DE Integers.
diff --git a/src/arch/z80/optimizer/__init__.py b/src/arch/z80/optimizer/__init__.py
index 91259bc01..912fe0e82 100644
--- a/src/arch/z80/optimizer/__init__.py
+++ b/src/arch/z80/optimizer/__init__.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from .main import Optimizer
__all__ = ("Optimizer",)
diff --git a/src/arch/z80/optimizer/asm.py b/src/arch/z80/optimizer/asm.py
index 9743de045..640d6e882 100644
--- a/src/arch/z80/optimizer/asm.py
+++ b/src/arch/z80/optimizer/asm.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import re
from functools import lru_cache
diff --git a/src/arch/z80/optimizer/basicblock.py b/src/arch/z80/optimizer/basicblock.py
index 5c9320aa5..d796c55c3 100644
--- a/src/arch/z80/optimizer/basicblock.py
+++ b/src/arch/z80/optimizer/basicblock.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from __future__ import annotations
from collections.abc import Iterable, Iterator, Sequence
diff --git a/src/arch/z80/optimizer/cpustate.py b/src/arch/z80/optimizer/cpustate.py
index 8e845a533..a96e46207 100644
--- a/src/arch/z80/optimizer/cpustate.py
+++ b/src/arch/z80/optimizer/cpustate.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import re
from collections import UserDict
from collections.abc import Mapping
diff --git a/src/arch/z80/optimizer/errors.py b/src/arch/z80/optimizer/errors.py
index 8dc95e67d..a146f482f 100644
--- a/src/arch/z80/optimizer/errors.py
+++ b/src/arch/z80/optimizer/errors.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.api.exception import Error
diff --git a/src/arch/z80/optimizer/flow_graph.py b/src/arch/z80/optimizer/flow_graph.py
index f76d2451d..011e665c3 100644
--- a/src/arch/z80/optimizer/flow_graph.py
+++ b/src/arch/z80/optimizer/flow_graph.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.api.debug import __DEBUG__
from .basicblock import BasicBlock, DummyBasicBlock
diff --git a/src/arch/z80/optimizer/helpers.py b/src/arch/z80/optimizer/helpers.py
index b2a427bca..9c041d2c2 100644
--- a/src/arch/z80/optimizer/helpers.py
+++ b/src/arch/z80/optimizer/helpers.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from collections.abc import Iterable, Mapping
from typing import Any, Final, TypeVar, cast
diff --git a/src/arch/z80/optimizer/labelinfo.py b/src/arch/z80/optimizer/labelinfo.py
index 96b3e0dc1..85173d3e2 100644
--- a/src/arch/z80/optimizer/labelinfo.py
+++ b/src/arch/z80/optimizer/labelinfo.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from __future__ import annotations
from dataclasses import dataclass, field
diff --git a/src/arch/z80/optimizer/labels_dict.py b/src/arch/z80/optimizer/labels_dict.py
index 4849966c4..6d3ad7a26 100644
--- a/src/arch/z80/optimizer/labels_dict.py
+++ b/src/arch/z80/optimizer/labels_dict.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from collections import UserDict
from .errors import DuplicatedLabelError
diff --git a/src/arch/z80/optimizer/main.py b/src/arch/z80/optimizer/main.py
index 3283ac0f7..cb4d69d98 100644
--- a/src/arch/z80/optimizer/main.py
+++ b/src/arch/z80/optimizer/main.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from collections import defaultdict
from src.api.config import OPTIONS
diff --git a/src/arch/z80/optimizer/memcell.py b/src/arch/z80/optimizer/memcell.py
index 8ec29cf90..0a5611f60 100644
--- a/src/arch/z80/optimizer/memcell.py
+++ b/src/arch/z80/optimizer/memcell.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import re
from functools import cached_property
diff --git a/src/arch/z80/optimizer/patterns.py b/src/arch/z80/optimizer/patterns.py
index 0efb09544..a3d9f1259 100644
--- a/src/arch/z80/optimizer/patterns.py
+++ b/src/arch/z80/optimizer/patterns.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import re
__doc__ = """ Patterns to match against generated ASM code.
diff --git a/src/arch/z80/peephole/__init__.py b/src/arch/z80/peephole/__init__.py
index e69de29bb..906667a8d 100644
--- a/src/arch/z80/peephole/__init__.py
+++ b/src/arch/z80/peephole/__init__.py
@@ -0,0 +1,6 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
diff --git a/src/arch/z80/peephole/engine.py b/src/arch/z80/peephole/engine.py
index abb56d743..d76ff8e4c 100644
--- a/src/arch/z80/peephole/engine.py
+++ b/src/arch/z80/peephole/engine.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import os
from collections.abc import Iterable
from typing import NamedTuple
diff --git a/src/arch/z80/peephole/evaluator.py b/src/arch/z80/peephole/evaluator.py
index 7234841bb..0182c5580 100644
--- a/src/arch/z80/peephole/evaluator.py
+++ b/src/arch/z80/peephole/evaluator.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from __future__ import annotations
import re
diff --git a/src/arch/z80/peephole/parser.py b/src/arch/z80/peephole/parser.py
index 99d2958e8..8e312773c 100644
--- a/src/arch/z80/peephole/parser.py
+++ b/src/arch/z80/peephole/parser.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import re
from collections import defaultdict
from types import MappingProxyType
diff --git a/src/arch/z80/peephole/pattern.py b/src/arch/z80/peephole/pattern.py
index c6bf76a49..aee82d5cd 100644
--- a/src/arch/z80/peephole/pattern.py
+++ b/src/arch/z80/peephole/pattern.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import itertools
import re
diff --git a/src/arch/z80/peephole/template.py b/src/arch/z80/peephole/template.py
index 740548467..8b55cf284 100644
--- a/src/arch/z80/peephole/template.py
+++ b/src/arch/z80/peephole/template.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from .pattern import BasicLinePattern
diff --git a/src/arch/z80/visitor/__init__.py b/src/arch/z80/visitor/__init__.py
index e69de29bb..906667a8d 100644
--- a/src/arch/z80/visitor/__init__.py
+++ b/src/arch/z80/visitor/__init__.py
@@ -0,0 +1,6 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
diff --git a/src/arch/z80/visitor/builtin_translator.py b/src/arch/z80/visitor/builtin_translator.py
index 3a040e8e8..ed8da017b 100644
--- a/src/arch/z80/visitor/builtin_translator.py
+++ b/src/arch/z80/visitor/builtin_translator.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.api import global_ as gl
from src.api.constants import SCOPE, TYPE
from src.api.global_ import optemps
diff --git a/src/arch/z80/visitor/function_translator.py b/src/arch/z80/visitor/function_translator.py
index b2b94a0b0..9189e1579 100644
--- a/src/arch/z80/visitor/function_translator.py
+++ b/src/arch/z80/visitor/function_translator.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import src.api
from src.api import global_ as gl
from src.api.config import OPTIONS
diff --git a/src/arch/z80/visitor/translator.py b/src/arch/z80/visitor/translator.py
index 8b47a634b..601cdbd98 100644
--- a/src/arch/z80/visitor/translator.py
+++ b/src/arch/z80/visitor/translator.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from collections.abc import Callable
from typing import Any, NamedTuple
diff --git a/src/arch/z80/visitor/translator_inst_visitor.py b/src/arch/z80/visitor/translator_inst_visitor.py
index b31d991f2..cc218d4c9 100644
--- a/src/arch/z80/visitor/translator_inst_visitor.py
+++ b/src/arch/z80/visitor/translator_inst_visitor.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.api.constants import TYPE
from src.api.debug import __DEBUG__
from src.arch.interface.quad import Quad
diff --git a/src/arch/z80/visitor/translator_visitor.py b/src/arch/z80/visitor/translator_visitor.py
index b4d072ab8..7debfdd27 100644
--- a/src/arch/z80/visitor/translator_visitor.py
+++ b/src/arch/z80/visitor/translator_visitor.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from typing import NamedTuple
import src.api.global_ as gl
diff --git a/src/arch/z80/visitor/unary_op_translator.py b/src/arch/z80/visitor/unary_op_translator.py
index 3984eb289..e3486b7b1 100644
--- a/src/arch/z80/visitor/unary_op_translator.py
+++ b/src/arch/z80/visitor/unary_op_translator.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.api.constants import SCOPE
from src.arch.z80.visitor.translator_visitor import TranslatorVisitor
diff --git a/src/arch/z80/visitor/var_translator.py b/src/arch/z80/visitor/var_translator.py
index 276ecb190..b2737d1ea 100644
--- a/src/arch/z80/visitor/var_translator.py
+++ b/src/arch/z80/visitor/var_translator.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import src.api
from src.api import global_ as gl
from src.api.config import OPTIONS
diff --git a/src/arch/zx48k/__init__.py b/src/arch/zx48k/__init__.py
index 58de38638..facc1de1e 100644
--- a/src/arch/zx48k/__init__.py
+++ b/src/arch/zx48k/__init__.py
@@ -1,4 +1,9 @@
-# vim:ts=4:et:sw=4:
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import src.api.global_
from src.api.constants import TYPE
diff --git a/src/arch/zx48k/backend/__init__.py b/src/arch/zx48k/backend/__init__.py
index c631e4174..7c0a23e98 100644
--- a/src/arch/zx48k/backend/__init__.py
+++ b/src/arch/zx48k/backend/__init__.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.api.config import OPTIONS
from src.arch.z80.backend import (
HI16,
diff --git a/src/arch/zx48k/beep.py b/src/arch/zx48k/beep.py
index 9bc5b557b..63ecd38c2 100755
--- a/src/arch/zx48k/beep.py
+++ b/src/arch/zx48k/beep.py
@@ -1,5 +1,11 @@
#!/usr/bin/env python3
-# vim:ts=4:et:sw=4:
+
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
__doc___ = """This library converts duration,pitch for a beep
from floating point to HL,DE Integers.
diff --git a/src/arch/zxnext/__init__.py b/src/arch/zxnext/__init__.py
index 9a0377e6b..c79c6b5f5 100644
--- a/src/arch/zxnext/__init__.py
+++ b/src/arch/zxnext/__init__.py
@@ -1,4 +1,9 @@
-# vim:ts=4:et:sw=4:
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import src.api.global_
from src.api.constants import TYPE
diff --git a/src/arch/zxnext/backend/_8bit.py b/src/arch/zxnext/backend/_8bit.py
index b21e1e9e5..25b5d34d4 100644
--- a/src/arch/zxnext/backend/_8bit.py
+++ b/src/arch/zxnext/backend/_8bit.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.arch.interface.quad import Quad
from src.arch.z80.backend import Bits8 as Z80Bits8
from src.arch.z80.backend.common import _int_ops
diff --git a/src/arch/zxnext/backend/__init__.py b/src/arch/zxnext/backend/__init__.py
index f71e1c5f7..e5731cc25 100644
--- a/src/arch/zxnext/backend/__init__.py
+++ b/src/arch/zxnext/backend/__init__.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.arch.z80.backend import (
HI16,
INITS,
diff --git a/src/arch/zxnext/backend/generic.py b/src/arch/zxnext/backend/generic.py
index 688c62852..7666a2864 100644
--- a/src/arch/zxnext/backend/generic.py
+++ b/src/arch/zxnext/backend/generic.py
@@ -1,6 +1,9 @@
-# ----------------------------------------------------------
-# Generic instructions
-# ----------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.api.config import OPTIONS
from src.arch.interface.quad import Quad
diff --git a/src/arch/zxnext/backend/main.py b/src/arch/zxnext/backend/main.py
index 21d2f0ddb..60e9b3d58 100644
--- a/src/arch/zxnext/backend/main.py
+++ b/src/arch/zxnext/backend/main.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.api.config import OPTIONS
from src.api.options import Action
from src.arch.z80.backend import Backend as Z80Backend
diff --git a/src/arch/zxnext/optimizer/__init__.py b/src/arch/zxnext/optimizer/__init__.py
index 91259bc01..912fe0e82 100644
--- a/src/arch/zxnext/optimizer/__init__.py
+++ b/src/arch/zxnext/optimizer/__init__.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from .main import Optimizer
__all__ = ("Optimizer",)
diff --git a/src/arch/zxnext/optimizer/basicblock.py b/src/arch/zxnext/optimizer/basicblock.py
index 6942163c1..2ad85e277 100644
--- a/src/arch/zxnext/optimizer/basicblock.py
+++ b/src/arch/zxnext/optimizer/basicblock.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from collections.abc import Iterable
from src.arch.z80.optimizer import Optimizer
diff --git a/src/arch/zxnext/optimizer/cpustate.py b/src/arch/zxnext/optimizer/cpustate.py
index 1b4154d87..f5c85ad72 100644
--- a/src/arch/zxnext/optimizer/cpustate.py
+++ b/src/arch/zxnext/optimizer/cpustate.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.arch.z80.optimizer.asm import Asm
from src.arch.z80.optimizer.cpustate import CPUState as CPUStateZ80
diff --git a/src/arch/zxnext/optimizer/main.py b/src/arch/zxnext/optimizer/main.py
index f2b7efd90..aa3fe91a7 100644
--- a/src/arch/zxnext/optimizer/main.py
+++ b/src/arch/zxnext/optimizer/main.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.arch.z80.optimizer import Optimizer as OptimizerZ80
from .basicblock import BasicBlock
diff --git a/src/arch/zxnext/optimizer/memcell.py b/src/arch/zxnext/optimizer/memcell.py
index b3190c36b..81047e2cd 100644
--- a/src/arch/zxnext/optimizer/memcell.py
+++ b/src/arch/zxnext/optimizer/memcell.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from functools import cached_property
from src.arch.z80.optimizer.memcell import MemCell as MemCellZ80
diff --git a/src/arch/zxnext/peephole/__init__.py b/src/arch/zxnext/peephole/__init__.py
index 834f1263a..a1cb75f89 100644
--- a/src/arch/zxnext/peephole/__init__.py
+++ b/src/arch/zxnext/peephole/__init__.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import os
# Optimization recipes paths for this arch
diff --git a/src/ast/__init__.py b/src/ast/__init__.py
index cf950f96f..9edeeea6b 100644
--- a/src/ast/__init__.py
+++ b/src/ast/__init__.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from .ast import Ast, NodeVisitor, types
from .tree import Tree
diff --git a/src/ast/ast.py b/src/ast/ast.py
index 0ad86e4b3..2fb960f46 100644
--- a/src/ast/ast.py
+++ b/src/ast/ast.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import types
from collections.abc import Callable
diff --git a/src/ast/tree.py b/src/ast/tree.py
index db2dd3678..389f9b648 100644
--- a/src/ast/tree.py
+++ b/src/ast/tree.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from __future__ import annotations
import collections.abc
diff --git a/src/outfmt/__init__.py b/src/outfmt/__init__.py
index 5cdf3c3f6..f8336dbeb 100644
--- a/src/outfmt/__init__.py
+++ b/src/outfmt/__init__.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from .binary import BinaryEmitter
from .codeemitter import CodeEmitter
from .sna import SnaEmitter
diff --git a/src/outfmt/binary.py b/src/outfmt/binary.py
index 463521ded..9c4a64f4f 100644
--- a/src/outfmt/binary.py
+++ b/src/outfmt/binary.py
@@ -1,12 +1,9 @@
-# --------------------------------------------
-# KopyLeft (K) 2008
-# by Jose M. Rodriguez de la Rosa
-#
-# This program is licensed under the
-# GNU Public License v.3.0
-#
-# The code emission interface.
-# --------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from .codeemitter import CodeEmitter
diff --git a/src/outfmt/codeemitter.py b/src/outfmt/codeemitter.py
index aa19ec687..42f537fee 100644
--- a/src/outfmt/codeemitter.py
+++ b/src/outfmt/codeemitter.py
@@ -1,12 +1,9 @@
-# --------------------------------------------
-# KopyLeft (K) 2008
-# by Jose M. Rodriguez de la Rosa
-#
-# This program is licensed under the
-# GNU Public License v.3.0
-#
-# The code emission interface.
-# --------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from abc import ABC, abstractmethod
diff --git a/src/outfmt/gensnapshot.py b/src/outfmt/gensnapshot.py
index ba1e5b605..cf6e2b712 100644
--- a/src/outfmt/gensnapshot.py
+++ b/src/outfmt/gensnapshot.py
@@ -1,22 +1,9 @@
-# 48K Snapshot generation module
-#
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
-# See the file AUTHORS for copyright details.
-#
-# This file is part of Boriel BASIC Compiler.
-#
-# Boriel BASIC Compiler is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or (at your
-# option) any later version.
-#
-# Boriel BASIC Compiler 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 Affero General Public License
-# for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with Boriel BASIC Compiler. If not, see .
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
class GenSnapshot:
diff --git a/src/outfmt/sna.py b/src/outfmt/sna.py
index b934b79d0..9d07ccbc2 100644
--- a/src/outfmt/sna.py
+++ b/src/outfmt/sna.py
@@ -1,23 +1,9 @@
-# 48K .SNA format output module
-#
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
-# See the file AUTHORS for copyright details.
-#
-# This file is part of Boriel BASIC Compiler.
-#
-# Boriel BASIC Compiler is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or (at your
-# option) any later version.
-#
-# Boriel BASIC Compiler 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 Affero General Public License
-# for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with Boriel BASIC Compiler. If not, see .
-
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from .codeemitter import CodeEmitter
from .gensnapshot import GenSnapshot
diff --git a/src/outfmt/tap.py b/src/outfmt/tap.py
index bac9e39a2..e894a9ff3 100755
--- a/src/outfmt/tap.py
+++ b/src/outfmt/tap.py
@@ -1,15 +1,11 @@
#!/usr/bin/env python3
-# --------------------------------------------
-# KopyLeft (K) 2008
-# by Jose M. Rodriguez de la Rosa
-#
-# This program is licensed under the
-# GNU Public License v.3.0
-#
-# Simple .tap file stdlib
-# Only supports standard headers by now.
-# --------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from .tzx import TZX
diff --git a/src/outfmt/tzx.py b/src/outfmt/tzx.py
index e2c3a4584..fa679923b 100755
--- a/src/outfmt/tzx.py
+++ b/src/outfmt/tzx.py
@@ -1,16 +1,11 @@
#!/usr/bin/env python3
-# --------------------------------------------
-# KopyLeft (K) 2008
-# by Jose M. Rodriguez de la Rosa
-#
-# This program is licensed under the
-# GNU Public License v.3.0
-#
-# Simple .tzx file stdlib
-# Only supports standard headers by now.
-# --------------------------------------------
-
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from .codeemitter import CodeEmitter
diff --git a/src/outfmt/z80.py b/src/outfmt/z80.py
index 2cb44ae46..34ae1ba96 100644
--- a/src/outfmt/z80.py
+++ b/src/outfmt/z80.py
@@ -1,23 +1,9 @@
-# 48K .Z80 format output module
-#
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
-# See the file AUTHORS for copyright details.
-#
-# This file is part of Boriel BASIC Compiler.
-#
-# Boriel BASIC Compiler is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or (at your
-# option) any later version.
-#
-# Boriel BASIC Compiler 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 Affero General Public License
-# for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with Boriel BASIC Compiler. If not, see .
-
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import io
diff --git a/src/parsetab/__init__.py b/src/parsetab/__init__.py
index e69de29bb..906667a8d 100644
--- a/src/parsetab/__init__.py
+++ b/src/parsetab/__init__.py
@@ -0,0 +1,6 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
diff --git a/src/ply/lex.py b/src/ply/lex.py
index de011fe13..7037c09d3 100644
--- a/src/ply/lex.py
+++ b/src/ply/lex.py
@@ -714,7 +714,7 @@ def validate_module(self, module):
#
# Build all of the regular expression rules from definitions in the supplied module
# -----------------------------------------------------------------------------
-def lex(*, module=None, object=None, debug=False,
+def lex(*, module=None, object=None, debug=False,
reflags=int(re.VERBOSE), debuglog=None, errorlog=None):
global lexer
diff --git a/src/symbols/__init__.py b/src/symbols/__init__.py
index e69de29bb..906667a8d 100644
--- a/src/symbols/__init__.py
+++ b/src/symbols/__init__.py
@@ -0,0 +1,6 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
diff --git a/src/symbols/arglist.py b/src/symbols/arglist.py
index a7195e165..fd291b468 100644
--- a/src/symbols/arglist.py
+++ b/src/symbols/arglist.py
@@ -1,9 +1,10 @@
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from __future__ import annotations
from collections.abc import Iterable
diff --git a/src/symbols/argument.py b/src/symbols/argument.py
index 88be760d9..7e3fb037e 100644
--- a/src/symbols/argument.py
+++ b/src/symbols/argument.py
@@ -1,12 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
-
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.api import global_ as gl
from src.api.config import OPTIONS
diff --git a/src/symbols/arrayaccess.py b/src/symbols/arrayaccess.py
index f95806e06..f5bbe90da 100644
--- a/src/symbols/arrayaccess.py
+++ b/src/symbols/arrayaccess.py
@@ -1,9 +1,9 @@
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from functools import cached_property
from typing import Self
diff --git a/src/symbols/arraydecl.py b/src/symbols/arraydecl.py
index 3aff49d26..a409dbd50 100644
--- a/src/symbols/arraydecl.py
+++ b/src/symbols/arraydecl.py
@@ -1,11 +1,10 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from .symbol_ import Symbol
diff --git a/src/symbols/arrayload.py b/src/symbols/arrayload.py
index d6c7f0738..cbdb6ee55 100644
--- a/src/symbols/arrayload.py
+++ b/src/symbols/arrayload.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.symbols.arrayaccess import SymbolARRAYACCESS
diff --git a/src/symbols/asm.py b/src/symbols/asm.py
index 130fc9eb5..fae9fe901 100644
--- a/src/symbols/asm.py
+++ b/src/symbols/asm.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from .symbol_ import Symbol
diff --git a/src/symbols/binary.py b/src/symbols/binary.py
index 3d6191e6f..1d3c256fc 100644
--- a/src/symbols/binary.py
+++ b/src/symbols/binary.py
@@ -1,9 +1,9 @@
-# ----------------------------------------------------------------------
-# Copyleft, Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the Affero GNU General License v3
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.api import check, errmsg
from src.symbols.constexpr import SymbolCONSTEXPR
diff --git a/src/symbols/block.py b/src/symbols/block.py
index e573ba1f1..f2a4d752c 100644
--- a/src/symbols/block.py
+++ b/src/symbols/block.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License v3
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.api import check
diff --git a/src/symbols/bound.py b/src/symbols/bound.py
index e313e9bd4..69ea27a3b 100644
--- a/src/symbols/bound.py
+++ b/src/symbols/bound.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.api import check
from src.api.errmsg import error
diff --git a/src/symbols/boundlist.py b/src/symbols/boundlist.py
index 38ea04d4b..a6ac2c561 100644
--- a/src/symbols/boundlist.py
+++ b/src/symbols/boundlist.py
@@ -1,12 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
-
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.symbols.bound import SymbolBOUND
from src.symbols.symbol_ import Symbol
diff --git a/src/symbols/builtin.py b/src/symbols/builtin.py
index 54565d6cc..5c512deac 100644
--- a/src/symbols/builtin.py
+++ b/src/symbols/builtin.py
@@ -1,9 +1,9 @@
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.api import check
diff --git a/src/symbols/call.py b/src/symbols/call.py
index ff7d9f13a..4db8c950f 100644
--- a/src/symbols/call.py
+++ b/src/symbols/call.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from collections.abc import Iterable
from typing import Optional
diff --git a/src/symbols/constexpr.py b/src/symbols/constexpr.py
index 123abdbe6..c94dbde6d 100644
--- a/src/symbols/constexpr.py
+++ b/src/symbols/constexpr.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import src
import src.api.global_ as gl
diff --git a/src/symbols/funccall.py b/src/symbols/funccall.py
index fc973fb42..8fa204778 100644
--- a/src/symbols/funccall.py
+++ b/src/symbols/funccall.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from .call import SymbolCALL
diff --git a/src/symbols/funcdecl.py b/src/symbols/funcdecl.py
index 7517fca16..3757abd92 100644
--- a/src/symbols/funcdecl.py
+++ b/src/symbols/funcdecl.py
@@ -1,11 +1,10 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import src.api.symboltable.scope
from src.api import global_
from src.api.constants import CLASS
diff --git a/src/symbols/id_/__init__.py b/src/symbols/id_/__init__.py
index d53bdad37..6cd5e0ac6 100644
--- a/src/symbols/id_/__init__.py
+++ b/src/symbols/id_/__init__.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.symbols.id_._id import SymbolID
__all__ = ["SymbolID"]
diff --git a/src/symbols/id_/_id.py b/src/symbols/id_/_id.py
index 0fce2076c..ca9fc8836 100644
--- a/src/symbols/id_/_id.py
+++ b/src/symbols/id_/_id.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from __future__ import annotations
diff --git a/src/symbols/id_/interface.py b/src/symbols/id_/interface.py
index 85983c9ea..dc99fda37 100644
--- a/src/symbols/id_/interface.py
+++ b/src/symbols/id_/interface.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from abc import ABC, abstractmethod
from src.api.constants import CLASS, SCOPE
diff --git a/src/symbols/id_/ref/__init__.py b/src/symbols/id_/ref/__init__.py
index c45fe3a4d..447948be9 100644
--- a/src/symbols/id_/ref/__init__.py
+++ b/src/symbols/id_/ref/__init__.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
__all__ = "ArrayRef", "ConstRef", "FuncRef", "LabelRef", "SymbolRef", "VarRef"
from src.symbols.id_.ref.arrayref import ArrayRef
diff --git a/src/symbols/id_/ref/arrayref.py b/src/symbols/id_/ref/arrayref.py
index 1d315ce59..28c76bebd 100644
--- a/src/symbols/id_/ref/arrayref.py
+++ b/src/symbols/id_/ref/arrayref.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import functools
from src.api import global_ as gl
diff --git a/src/symbols/id_/ref/constref.py b/src/symbols/id_/ref/constref.py
index c57d50089..087c44aa5 100644
--- a/src/symbols/id_/ref/constref.py
+++ b/src/symbols/id_/ref/constref.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.api.constants import CLASS
from src.symbols.id_.interface import SymbolIdABC as SymbolID
from src.symbols.id_.ref.symbolref import SymbolRef
diff --git a/src/symbols/id_/ref/funcref.py b/src/symbols/id_/ref/funcref.py
index 8d4e3a231..cd26e86e8 100644
--- a/src/symbols/id_/ref/funcref.py
+++ b/src/symbols/id_/ref/funcref.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.api.constants import CLASS, CONVENTION
from src.symbols.block import SymbolBLOCK
from src.symbols.id_.interface import SymbolIdABC as SymbolID
diff --git a/src/symbols/id_/ref/labelref.py b/src/symbols/id_/ref/labelref.py
index 654dfbe23..810deefbb 100644
--- a/src/symbols/id_/ref/labelref.py
+++ b/src/symbols/id_/ref/labelref.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.api import global_
from src.api.constants import CLASS
from src.symbols.id_.interface import SymbolIdABC as SymbolID
diff --git a/src/symbols/id_/ref/symbolref.py b/src/symbols/id_/ref/symbolref.py
index fd88a0554..588322e6a 100644
--- a/src/symbols/id_/ref/symbolref.py
+++ b/src/symbols/id_/ref/symbolref.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.api import global_
from src.api.constants import CLASS
from src.symbols.id_.interface import SymbolIdABC as SymbolID
diff --git a/src/symbols/id_/ref/varref.py b/src/symbols/id_/ref/varref.py
index 97cb1cd61..344e63fb9 100644
--- a/src/symbols/id_/ref/varref.py
+++ b/src/symbols/id_/ref/varref.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import src.api.global_ as gl
from src.api.constants import CLASS, SCOPE
from src.symbols.id_.interface import SymbolIdABC as SymbolID
diff --git a/src/symbols/nop.py b/src/symbols/nop.py
index 0b1e02225..e645979ad 100644
--- a/src/symbols/nop.py
+++ b/src/symbols/nop.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from .block import SymbolBLOCK
diff --git a/src/symbols/number.py b/src/symbols/number.py
index e4b766ba9..eecf21f0e 100644
--- a/src/symbols/number.py
+++ b/src/symbols/number.py
@@ -1,12 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
-
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.api.constants import CLASS
from src.symbols import sym
diff --git a/src/symbols/paramlist.py b/src/symbols/paramlist.py
index b3e2b285e..339c129a5 100644
--- a/src/symbols/paramlist.py
+++ b/src/symbols/paramlist.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.symbols.id_.interface import SymbolIdABC as SymbolID
from src.symbols.symbol_ import Symbol
diff --git a/src/symbols/sentence.py b/src/symbols/sentence.py
index 5b90fd443..51912b143 100644
--- a/src/symbols/sentence.py
+++ b/src/symbols/sentence.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License v3
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.symbols.symbol_ import Symbol
diff --git a/src/symbols/string_.py b/src/symbols/string_.py
index 83b8e9839..0a9c0bc89 100644
--- a/src/symbols/string_.py
+++ b/src/symbols/string_.py
@@ -1,11 +1,10 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from __future__ import annotations
from src.api.constants import CLASS
diff --git a/src/symbols/strslice.py b/src/symbols/strslice.py
index 8435852bc..ff0f4e331 100644
--- a/src/symbols/strslice.py
+++ b/src/symbols/strslice.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import src.api.global_ as gl
from src.api import check, config
diff --git a/src/symbols/sym.py b/src/symbols/sym.py
index 4188bed34..8f93a0239 100644
--- a/src/symbols/sym.py
+++ b/src/symbols/sym.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.symbols.arglist import SymbolARGLIST as ARGLIST
from src.symbols.argument import SymbolARGUMENT as ARGUMENT
diff --git a/src/symbols/symbol_.py b/src/symbols/symbol_.py
index 7f63a3aae..c1932c00b 100644
--- a/src/symbols/symbol_.py
+++ b/src/symbols/symbol_.py
@@ -1,11 +1,10 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from __future__ import annotations
from collections import Counter
diff --git a/src/symbols/type_.py b/src/symbols/type_.py
index 02fbb49fc..be13c7f8e 100644
--- a/src/symbols/type_.py
+++ b/src/symbols/type_.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.api.config import OPTIONS
from src.api.constants import CLASS, TYPE
diff --git a/src/symbols/typecast.py b/src/symbols/typecast.py
index db0a98a46..664e801fb 100644
--- a/src/symbols/typecast.py
+++ b/src/symbols/typecast.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.api import check, errmsg
from src.api.errmsg import error
diff --git a/src/symbols/unary.py b/src/symbols/unary.py
index 5021c9d43..963232f38 100644
--- a/src/symbols/unary.py
+++ b/src/symbols/unary.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.api import check
from src.symbols.number import SymbolNUMBER
diff --git a/src/symbols/vardecl.py b/src/symbols/vardecl.py
index d0bb32f6b..30b7e537a 100644
--- a/src/symbols/vardecl.py
+++ b/src/symbols/vardecl.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.symbols.symbol_ import Symbol
diff --git a/src/zxbasm/__init__.py b/src/zxbasm/__init__.py
index 3f371bc09..45476f4fb 100644
--- a/src/zxbasm/__init__.py
+++ b/src/zxbasm/__init__.py
@@ -1 +1,8 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from .zxbasm import main # noqa
diff --git a/src/zxbasm/asm.py b/src/zxbasm/asm.py
index eab43e1e6..3782720f4 100644
--- a/src/zxbasm/asm.py
+++ b/src/zxbasm/asm.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from typing import Any, NamedTuple
from src.api import errmsg
diff --git a/src/zxbasm/asm_instruction.py b/src/zxbasm/asm_instruction.py
index c880c553c..42e4c4fa2 100644
--- a/src/zxbasm/asm_instruction.py
+++ b/src/zxbasm/asm_instruction.py
@@ -1,4 +1,9 @@
-# vim: ts=4:et:sw=4
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import re
diff --git a/src/zxbasm/asmlex.py b/src/zxbasm/asmlex.py
index 36366ac05..ec738a0a9 100755
--- a/src/zxbasm/asmlex.py
+++ b/src/zxbasm/asmlex.py
@@ -1,14 +1,11 @@
#!/usr/bin/env python3
-# vim:ts=4:et:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-#
-# This is the Lexer for the zxbasm (ZXBasic Assembler)
-# ----------------------------------------------------------------------
+
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import sys
diff --git a/src/zxbasm/asmparse.py b/src/zxbasm/asmparse.py
index e1f8518b8..be4bc0284 100755
--- a/src/zxbasm/asmparse.py
+++ b/src/zxbasm/asmparse.py
@@ -1,14 +1,11 @@
#!/usr/bin/env python
-# vim: et:ts=4:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-#
-# This is the Parser for the ZXBASM (ZXBasic Assembler)
-# ----------------------------------------------------------------------
+
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import os
diff --git a/src/zxbasm/basic.py b/src/zxbasm/basic.py
index 6bb698854..5fd8bea2e 100755
--- a/src/zxbasm/basic.py
+++ b/src/zxbasm/basic.py
@@ -1,13 +1,11 @@
#!/usr/bin/python3
-# -------------------------------------------------------------------------------
-# Copyleft (K) 2008 by Jose M. Rodriguez de la Rosa
-#
-# Simple ASCII to BASIC tokenizer
-#
-# Implements a simple (really simple) ZX Spectrum BASIC tokenizer
-# This will convert a simple ASCII text to a ZX spectrum BASIC bytes program
-# -------------------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src import outfmt as tzx
from src.api import fp
diff --git a/src/zxbasm/expr.py b/src/zxbasm/expr.py
index 2086c11db..b0a779f8e 100644
--- a/src/zxbasm/expr.py
+++ b/src/zxbasm/expr.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.api.errmsg import error
from src.ast import Ast
from src.ast.tree import NotAnAstError
diff --git a/src/zxbasm/global_.py b/src/zxbasm/global_.py
index 80e2c42f4..0fe9fa3ed 100644
--- a/src/zxbasm/global_.py
+++ b/src/zxbasm/global_.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.api import global_ as gl
DOT = gl.NAMESPACE_SEPARATOR # NAMESPACE separator
diff --git a/src/zxbasm/label.py b/src/zxbasm/label.py
index 9ead507de..e4e09dbba 100644
--- a/src/zxbasm/label.py
+++ b/src/zxbasm/label.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.api.errmsg import error
from src.zxbasm import global_ as asm_gl
diff --git a/src/zxbasm/memory.py b/src/zxbasm/memory.py
index 4a1e0732a..a06613413 100644
--- a/src/zxbasm/memory.py
+++ b/src/zxbasm/memory.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from bisect import bisect_left, bisect_right
from collections import defaultdict
diff --git a/src/zxbasm/version.py b/src/zxbasm/version.py
index cca3a688b..a526b3b97 100644
--- a/src/zxbasm/version.py
+++ b/src/zxbasm/version.py
@@ -1 +1,8 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
VERSION = "1.18.2"
diff --git a/src/zxbasm/z80.py b/src/zxbasm/z80.py
index 67704d5a8..3a9aaa37f 100644
--- a/src/zxbasm/z80.py
+++ b/src/zxbasm/z80.py
@@ -1,4 +1,9 @@
-# vim:ts=4:et:
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from typing import Final, NamedTuple
diff --git a/src/zxbasm/zxbasm.py b/src/zxbasm/zxbasm.py
index c4162c78f..66ecd28f0 100755
--- a/src/zxbasm/zxbasm.py
+++ b/src/zxbasm/zxbasm.py
@@ -1,14 +1,11 @@
#!/usr/bin/env python3
-# vim: ts=4:et:sw=4
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-#
-# This is the Parser for the ZXBASM (ZXBasic Assembler)
-# ----------------------------------------------------------------------
+
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import argparse
import os
diff --git a/src/zxbasm/zxnext.py b/src/zxbasm/zxnext.py
index a637ed262..145abbb6a 100644
--- a/src/zxbasm/zxnext.py
+++ b/src/zxbasm/zxnext.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
__all__ = [
"p_JP_c",
"p_add_reg16_a",
diff --git a/src/zxbc/__init__.py b/src/zxbc/__init__.py
index 375ff7c6c..8d3e3909d 100644
--- a/src/zxbc/__init__.py
+++ b/src/zxbc/__init__.py
@@ -1,11 +1,9 @@
-# vim: ts=4:et:sw=4:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.outfmt import CodeEmitter # noqa
diff --git a/src/zxbc/args_config.py b/src/zxbc/args_config.py
index eb4116175..72911564c 100644
--- a/src/zxbc/args_config.py
+++ b/src/zxbc/args_config.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from __future__ import annotations
import os
diff --git a/src/zxbc/args_parser.py b/src/zxbc/args_parser.py
index fa6d4e52c..7fe196b9d 100644
--- a/src/zxbc/args_parser.py
+++ b/src/zxbc/args_parser.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from __future__ import annotations
import argparse
diff --git a/src/zxbc/keywords.py b/src/zxbc/keywords.py
index e73bd1490..5dec3d46d 100644
--- a/src/zxbc/keywords.py
+++ b/src/zxbc/keywords.py
@@ -1,14 +1,9 @@
-# vim:ts=4:et:sw=4
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
-
-# Traditional BASIC used even reserved words for math functions like
-# SIN, COS, TAN. These are what ZX BASIC uses
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
KEYWORDS = {
# Keywords
diff --git a/src/zxbc/version.py b/src/zxbc/version.py
index 2c0175d7b..02f034a7c 100755
--- a/src/zxbc/version.py
+++ b/src/zxbc/version.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from typing import Final
VERSION: Final[str] = "1.18.2"
diff --git a/src/zxbc/zxbc.py b/src/zxbc/zxbc.py
index 766197dcb..97b07aec8 100755
--- a/src/zxbc/zxbc.py
+++ b/src/zxbc/zxbc.py
@@ -1,5 +1,11 @@
#!/usr/bin/env python3
-# vim: ts=4:sw=4:et:
+
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import re
import sys
diff --git a/src/zxbc/zxblex.py b/src/zxbc/zxblex.py
index f7e1fb00e..ffd54f741 100755
--- a/src/zxbc/zxblex.py
+++ b/src/zxbc/zxblex.py
@@ -1,12 +1,11 @@
#!/usr/bin/env python3
-# vim:ts=4:et:sw=4
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import re
import sys
diff --git a/src/zxbc/zxbparser.py b/src/zxbc/zxbparser.py
index af649f479..6449c8f68 100755
--- a/src/zxbc/zxbparser.py
+++ b/src/zxbc/zxbparser.py
@@ -1,12 +1,11 @@
#!/usr/bin/env python3
-# vim: ts=4:et:sw=4:
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import math
import sys
diff --git a/src/zxbpp/__init__.py b/src/zxbpp/__init__.py
index 0ce13993f..b467db136 100644
--- a/src/zxbpp/__init__.py
+++ b/src/zxbpp/__init__.py
@@ -1 +1,8 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from .zxbpp import entry_point # noqa
diff --git a/src/zxbpp/base_pplex.py b/src/zxbpp/base_pplex.py
index 678ed3376..20fb5b9e1 100644
--- a/src/zxbpp/base_pplex.py
+++ b/src/zxbpp/base_pplex.py
@@ -1,11 +1,9 @@
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-#
-# This is the Lexer for the ZXBppASM (ZXBASM Preprocessor)
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import os
import sys
diff --git a/src/zxbpp/prepro/__init__.py b/src/zxbpp/prepro/__init__.py
index 6d5436d63..df68e91dd 100644
--- a/src/zxbpp/prepro/__init__.py
+++ b/src/zxbpp/prepro/__init__.py
@@ -1,4 +1,9 @@
-# vim: ts=4:sw=4:et:
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from .args import Arg, ArgList
from .definestable import DefinesTable
diff --git a/src/zxbpp/prepro/args.py b/src/zxbpp/prepro/args.py
index 6ac2cc33c..4db709bd2 100644
--- a/src/zxbpp/prepro/args.py
+++ b/src/zxbpp/prepro/args.py
@@ -1,4 +1,9 @@
-# vim:ts=4:et:sw=4:
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from .macrocall import MacroCall
diff --git a/src/zxbpp/prepro/builtinmacro.py b/src/zxbpp/prepro/builtinmacro.py
index 5afb641cc..7f56bac78 100644
--- a/src/zxbpp/prepro/builtinmacro.py
+++ b/src/zxbpp/prepro/builtinmacro.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from collections.abc import Callable
from src.zxbpp.prepro import DefinesTable
diff --git a/src/zxbpp/prepro/definestable.py b/src/zxbpp/prepro/definestable.py
index 682327fb2..38f1d47cc 100644
--- a/src/zxbpp/prepro/definestable.py
+++ b/src/zxbpp/prepro/definestable.py
@@ -1,4 +1,9 @@
-# vim: ts=4:sw=4:et:
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
"""Class for a Table of Defines.
Each identifier has a dictionary entry.
diff --git a/src/zxbpp/prepro/exceptions.py b/src/zxbpp/prepro/exceptions.py
index cbd0f9271..05c1bf8e5 100644
--- a/src/zxbpp/prepro/exceptions.py
+++ b/src/zxbpp/prepro/exceptions.py
@@ -1,3 +1,11 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
+
class PreprocError(Exception):
"""Denotes an exception in the preprocessor"""
diff --git a/src/zxbpp/prepro/id_.py b/src/zxbpp/prepro/id_.py
index 79617cd1b..3c397b749 100644
--- a/src/zxbpp/prepro/id_.py
+++ b/src/zxbpp/prepro/id_.py
@@ -1,4 +1,9 @@
-# vim: ts=4:sw=4:et:
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
__doc__ = """ A class for an identifier parsed by the preprocessor.
It contains it's name, arguments and macro value.
diff --git a/src/zxbpp/prepro/macrocall.py b/src/zxbpp/prepro/macrocall.py
index ef9c239ac..17a302573 100644
--- a/src/zxbpp/prepro/macrocall.py
+++ b/src/zxbpp/prepro/macrocall.py
@@ -1,4 +1,9 @@
-# vim:ts=4:et:sw=4:
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import copy
import re
diff --git a/src/zxbpp/prepro/operators.py b/src/zxbpp/prepro/operators.py
index 555938b7f..727b13c94 100644
--- a/src/zxbpp/prepro/operators.py
+++ b/src/zxbpp/prepro/operators.py
@@ -1,4 +1,9 @@
-# Operators implemented in the preprocessor
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
from src.zxbpp.prepro import DefinesTable
from src.zxbpp.prepro.macrocall import MacroCall
diff --git a/src/zxbpp/prepro/output.py b/src/zxbpp/prepro/output.py
index 05fc10887..949bd8535 100644
--- a/src/zxbpp/prepro/output.py
+++ b/src/zxbpp/prepro/output.py
@@ -1,4 +1,9 @@
-# vim:ts=4:et:sw=4:
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
"""Common output functions for the preprocessor.
Need the global OPTION object
diff --git a/src/zxbpp/zxbasmpplex.py b/src/zxbpp/zxbasmpplex.py
index 4c9df04c9..231f2f9a4 100755
--- a/src/zxbpp/zxbasmpplex.py
+++ b/src/zxbpp/zxbasmpplex.py
@@ -1,13 +1,11 @@
#!/usr/bin/python3
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-#
-# This is the Lexer for the ZXBppASM (ZXBASM Preprocessor)
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import sys
diff --git a/src/zxbpp/zxbpp.py b/src/zxbpp/zxbpp.py
index 36dabed3f..c1d4d004f 100755
--- a/src/zxbpp/zxbpp.py
+++ b/src/zxbpp/zxbpp.py
@@ -1,14 +1,11 @@
#!/usr/bin/env python3
-# vim: ts=4:sw=4:et:
-
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-#
-# This is the Parser for the ZXBpp (ZXBasic Preprocessor)
-# ----------------------------------------------------------------------
+
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import argparse
import os
diff --git a/src/zxbpp/zxbpplex.py b/src/zxbpp/zxbpplex.py
index 2373fab03..aba81a9ef 100755
--- a/src/zxbpp/zxbpplex.py
+++ b/src/zxbpp/zxbpplex.py
@@ -1,13 +1,11 @@
#!/usr/bin/env python3
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-#
-# This is the Lexer for the ZXBpp (ZXBasic Preprocessor)
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import re
import sys
diff --git a/tests/__init__.py b/tests/__init__.py
index 5ace62cdb..ba3d20693 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import os
import os.path
import sys
diff --git a/tests/api/__init__.py b/tests/api/__init__.py
index e69de29bb..906667a8d 100644
--- a/tests/api/__init__.py
+++ b/tests/api/__init__.py
@@ -0,0 +1,6 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
diff --git a/tests/api/test_arg_parser.py b/tests/api/test_arg_parser.py
index 1d2ff353f..fe60f3cb0 100644
--- a/tests/api/test_arg_parser.py
+++ b/tests/api/test_arg_parser.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import unittest
from src.arch.z80 import backend
diff --git a/tests/api/test_check.py b/tests/api/test_check.py
index 7e5ed55c1..72013b83b 100644
--- a/tests/api/test_check.py
+++ b/tests/api/test_check.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import unittest
from src.api import check
diff --git a/tests/api/test_config.py b/tests/api/test_config.py
index 891eb86bb..fbaae9778 100644
--- a/tests/api/test_config.py
+++ b/tests/api/test_config.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import sys
import unittest
from unittest import mock
diff --git a/tests/api/test_symbolTable.py b/tests/api/test_symbolTable.py
index c0a7f69f5..5810da7a5 100644
--- a/tests/api/test_symbolTable.py
+++ b/tests/api/test_symbolTable.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from io import StringIO
from unittest import TestCase
diff --git a/tests/api/test_utils.py b/tests/api/test_utils.py
index 34bb62fb4..6cccaa6c1 100644
--- a/tests/api/test_utils.py
+++ b/tests/api/test_utils.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import unittest
from src.api import utils
diff --git a/tests/arch/zx48k/backend/test_memcell.py b/tests/arch/zx48k/backend/test_memcell.py
index 776091cf7..71331db3a 100644
--- a/tests/arch/zx48k/backend/test_memcell.py
+++ b/tests/arch/zx48k/backend/test_memcell.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import unittest
import src.arch
diff --git a/tests/arch/zx48k/optimizer/common.py b/tests/arch/zx48k/optimizer/common.py
index 3c604c471..6db51ecb7 100644
--- a/tests/arch/zx48k/optimizer/common.py
+++ b/tests/arch/zx48k/optimizer/common.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from contextlib import contextmanager
from src.api.config import OPTIONS
diff --git a/tests/arch/zx48k/optimizer/test_basicblock.py b/tests/arch/zx48k/optimizer/test_basicblock.py
index c8d7b6de1..3adc0da76 100644
--- a/tests/arch/zx48k/optimizer/test_basicblock.py
+++ b/tests/arch/zx48k/optimizer/test_basicblock.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import unittest
import src.arch.z80.optimizer.flow_graph
diff --git a/tests/arch/zx48k/optimizer/test_cpustate.py b/tests/arch/zx48k/optimizer/test_cpustate.py
index 3cf5d9ae9..a1a7ab12f 100644
--- a/tests/arch/zx48k/optimizer/test_cpustate.py
+++ b/tests/arch/zx48k/optimizer/test_cpustate.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import pytest
from src.arch.z80.optimizer import cpustate, helpers
diff --git a/tests/arch/zx48k/optimizer/test_helpers.py b/tests/arch/zx48k/optimizer/test_helpers.py
index 6e41ce99b..cb4612f92 100644
--- a/tests/arch/zx48k/optimizer/test_helpers.py
+++ b/tests/arch/zx48k/optimizer/test_helpers.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.arch.z80.optimizer import helpers
diff --git a/tests/arch/zx48k/optimizer/test_o1_optimizer.py b/tests/arch/zx48k/optimizer/test_o1_optimizer.py
index 931081681..fc6730dc3 100644
--- a/tests/arch/zx48k/optimizer/test_o1_optimizer.py
+++ b/tests/arch/zx48k/optimizer/test_o1_optimizer.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.arch.z80.backend import Backend
from tests.arch.zx48k.optimizer.common import mock_options_level
diff --git a/tests/arch/zx48k/optimizer/test_optimizer.py b/tests/arch/zx48k/optimizer/test_optimizer.py
index 3db7f24a7..fbea1cf62 100644
--- a/tests/arch/zx48k/optimizer/test_optimizer.py
+++ b/tests/arch/zx48k/optimizer/test_optimizer.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from src.arch.z80 import optimizer
from src.arch.z80.peephole import engine
from tests.arch.zx48k.optimizer.common import mock_options_level
diff --git a/tests/arch/zx48k/optimizer/test_optimizer_asm.py b/tests/arch/zx48k/optimizer/test_optimizer_asm.py
index b212aeb1c..34cdfadfb 100644
--- a/tests/arch/zx48k/optimizer/test_optimizer_asm.py
+++ b/tests/arch/zx48k/optimizer/test_optimizer_asm.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import unittest
from src.arch.z80.optimizer import asm, helpers
diff --git a/tests/arch/zx48k/peephole/test_evaluator.py b/tests/arch/zx48k/peephole/test_evaluator.py
index faac87744..e354ddd0d 100644
--- a/tests/arch/zx48k/peephole/test_evaluator.py
+++ b/tests/arch/zx48k/peephole/test_evaluator.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import unittest
from src.arch.z80.peephole import evaluator
diff --git a/tests/arch/zx48k/peephole/test_parser.py b/tests/arch/zx48k/peephole/test_parser.py
index 54762b2e2..1cf1192d8 100644
--- a/tests/arch/zx48k/peephole/test_parser.py
+++ b/tests/arch/zx48k/peephole/test_parser.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import unittest
from src.arch.z80.peephole import parser
diff --git a/tests/arch/zx48k/peephole/test_pattern.py b/tests/arch/zx48k/peephole/test_pattern.py
index 078aecb96..e58395138 100644
--- a/tests/arch/zx48k/peephole/test_pattern.py
+++ b/tests/arch/zx48k/peephole/test_pattern.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import unittest
from src.arch.z80.peephole import pattern
diff --git a/tests/arch/zx48k/peephole/test_template.py b/tests/arch/zx48k/peephole/test_template.py
index 542b91e2b..9bb98eb44 100644
--- a/tests/arch/zx48k/peephole/test_template.py
+++ b/tests/arch/zx48k/peephole/test_template.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import unittest
from src.arch.z80.peephole import template
diff --git a/tests/cmdline/__init__.py b/tests/cmdline/__init__.py
index 69b0c613c..977095bad 100644
--- a/tests/cmdline/__init__.py
+++ b/tests/cmdline/__init__.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import os
import os.path
import sys
diff --git a/tests/cmdline/test_zxb.py b/tests/cmdline/test_zxb.py
index dd4fe4399..e4f129ae9 100644
--- a/tests/cmdline/test_zxb.py
+++ b/tests/cmdline/test_zxb.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import os
import pytest
diff --git a/tests/functional/test.py b/tests/functional/test.py
index 086a2ff0b..8923e5aa4 100755
--- a/tests/functional/test.py
+++ b/tests/functional/test.py
@@ -1,5 +1,11 @@
#!/usr/bin/env python3
-# vim:ts=4:et:ai:
+
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import argparse
import difflib
diff --git a/tests/functional/test_.py b/tests/functional/test_.py
index ea879fa57..95049ddd2 100644
--- a/tests/functional/test_.py
+++ b/tests/functional/test_.py
@@ -1,4 +1,9 @@
-# vim:ts=4:et:ai
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import os
import sys
diff --git a/tests/functional/test_asm.py b/tests/functional/test_asm.py
index af6eb8a14..39309ebfa 100644
--- a/tests/functional/test_asm.py
+++ b/tests/functional/test_asm.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import os
import sys
diff --git a/tests/functional/test_basic.py b/tests/functional/test_basic.py
index 0a8029817..a24c0015c 100644
--- a/tests/functional/test_basic.py
+++ b/tests/functional/test_basic.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import glob
import os
import sys
diff --git a/tests/functional/test_prepro.py b/tests/functional/test_prepro.py
index c5e2f06eb..b4cb09bce 100644
--- a/tests/functional/test_prepro.py
+++ b/tests/functional/test_prepro.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import os
import sys
diff --git a/tests/runtime/check_test.py b/tests/runtime/check_test.py
index d3572ef19..7f9c443e3 100755
--- a/tests/runtime/check_test.py
+++ b/tests/runtime/check_test.py
@@ -1,5 +1,12 @@
#!/usr/bin/env python3
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import signal
import sys
diff --git a/tests/runtime/update_test.py b/tests/runtime/update_test.py
index d05f01252..5b608b222 100755
--- a/tests/runtime/update_test.py
+++ b/tests/runtime/update_test.py
@@ -1,5 +1,12 @@
#!/usr/bin/env python3
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
__doc__ = "Creates or update a test result"
diff --git a/tests/symbols/__init__.py b/tests/symbols/__init__.py
index a8507a547..40645bbb2 100644
--- a/tests/symbols/__init__.py
+++ b/tests/symbols/__init__.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import os
import sys
diff --git a/tests/symbols/test_symbolARGLIST.py b/tests/symbols/test_symbolARGLIST.py
index fb39c0ecf..e52908785 100644
--- a/tests/symbols/test_symbolARGLIST.py
+++ b/tests/symbols/test_symbolARGLIST.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from unittest import TestCase
from src.symbols import sym
diff --git a/tests/symbols/test_symbolARRAYACCESS.py b/tests/symbols/test_symbolARRAYACCESS.py
index aed45bacb..9ebd64ed7 100644
--- a/tests/symbols/test_symbolARRAYACCESS.py
+++ b/tests/symbols/test_symbolARRAYACCESS.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from io import StringIO
from unittest import TestCase
diff --git a/tests/symbols/test_symbolBASICTYPE.py b/tests/symbols/test_symbolBASICTYPE.py
index 827868262..9eab67d54 100644
--- a/tests/symbols/test_symbolBASICTYPE.py
+++ b/tests/symbols/test_symbolBASICTYPE.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from unittest import TestCase
from src.api.constants import TYPE
diff --git a/tests/symbols/test_symbolBINARY.py b/tests/symbols/test_symbolBINARY.py
index de299c314..369395f8f 100644
--- a/tests/symbols/test_symbolBINARY.py
+++ b/tests/symbols/test_symbolBINARY.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from io import StringIO
from unittest import TestCase
diff --git a/tests/symbols/test_symbolBLOCK.py b/tests/symbols/test_symbolBLOCK.py
index 073c492ce..d30a96812 100644
--- a/tests/symbols/test_symbolBLOCK.py
+++ b/tests/symbols/test_symbolBLOCK.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from unittest import TestCase
from src.symbols.sym import BLOCK, NUMBER
diff --git a/tests/symbols/test_symbolBOUND.py b/tests/symbols/test_symbolBOUND.py
index fe1751952..ed047ab46 100644
--- a/tests/symbols/test_symbolBOUND.py
+++ b/tests/symbols/test_symbolBOUND.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from io import StringIO
from unittest import TestCase
diff --git a/tests/symbols/test_symbolBOUNDLIST.py b/tests/symbols/test_symbolBOUNDLIST.py
index 8313e7dc1..8a7c7047a 100644
--- a/tests/symbols/test_symbolBOUNDLIST.py
+++ b/tests/symbols/test_symbolBOUNDLIST.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from unittest import TestCase
from src.symbols import sym
diff --git a/tests/symbols/test_symbolFUNCDECL.py b/tests/symbols/test_symbolFUNCDECL.py
index e826b0360..b477a3f25 100644
--- a/tests/symbols/test_symbolFUNCDECL.py
+++ b/tests/symbols/test_symbolFUNCDECL.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from unittest import TestCase
import src.api.global_ as gl
diff --git a/tests/symbols/test_symbolFUNCTION.py b/tests/symbols/test_symbolFUNCTION.py
index 6573666ff..78db533af 100644
--- a/tests/symbols/test_symbolFUNCTION.py
+++ b/tests/symbols/test_symbolFUNCTION.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from unittest import TestCase
from src.api.constants import CLASS
diff --git a/tests/symbols/test_symbolLABEL.py b/tests/symbols/test_symbolLABEL.py
index cfdc833b4..3d8478af1 100644
--- a/tests/symbols/test_symbolLABEL.py
+++ b/tests/symbols/test_symbolLABEL.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
__author__ = "boriel"
from unittest import TestCase
diff --git a/tests/symbols/test_symbolNOP.py b/tests/symbols/test_symbolNOP.py
index d8afe0573..7a707f9a6 100644
--- a/tests/symbols/test_symbolNOP.py
+++ b/tests/symbols/test_symbolNOP.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from unittest import TestCase
from src.symbols.sym import NOP
diff --git a/tests/symbols/test_symbolNUMBER.py b/tests/symbols/test_symbolNUMBER.py
index f2c01a791..fcd9cdf30 100644
--- a/tests/symbols/test_symbolNUMBER.py
+++ b/tests/symbols/test_symbolNUMBER.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from unittest import TestCase
from src.api.constants import TYPE
diff --git a/tests/symbols/test_symbolSENTENCE.py b/tests/symbols/test_symbolSENTENCE.py
index a14fd8820..bcb419f26 100644
--- a/tests/symbols/test_symbolSENTENCE.py
+++ b/tests/symbols/test_symbolSENTENCE.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from unittest import TestCase
from src.symbols import sym
diff --git a/tests/symbols/test_symbolSTRING.py b/tests/symbols/test_symbolSTRING.py
index 6ec0d6a4a..adda16774 100644
--- a/tests/symbols/test_symbolSTRING.py
+++ b/tests/symbols/test_symbolSTRING.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from unittest import TestCase
from src.symbols import sym
diff --git a/tests/symbols/test_symbolSTRSLICE.py b/tests/symbols/test_symbolSTRSLICE.py
index a383cc657..151efceed 100644
--- a/tests/symbols/test_symbolSTRSLICE.py
+++ b/tests/symbols/test_symbolSTRSLICE.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from unittest import TestCase
import src.api.global_ as gl
diff --git a/tests/symbols/test_symbolTYPE.py b/tests/symbols/test_symbolTYPE.py
index b526a567a..3c691c82f 100644
--- a/tests/symbols/test_symbolTYPE.py
+++ b/tests/symbols/test_symbolTYPE.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from unittest import TestCase
from src.api.constants import TYPE
diff --git a/tests/symbols/test_symbolTYPEALIAS.py b/tests/symbols/test_symbolTYPEALIAS.py
index fc36245d2..53715188b 100644
--- a/tests/symbols/test_symbolTYPEALIAS.py
+++ b/tests/symbols/test_symbolTYPEALIAS.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from unittest import TestCase
from src.api.constants import TYPE
diff --git a/tests/symbols/test_symbolTYPECAST.py b/tests/symbols/test_symbolTYPECAST.py
index 681aaa396..f5213aa74 100644
--- a/tests/symbols/test_symbolTYPECAST.py
+++ b/tests/symbols/test_symbolTYPECAST.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from io import StringIO
from unittest import TestCase
diff --git a/tests/symbols/test_symbolVAR.py b/tests/symbols/test_symbolVAR.py
index d2335f5a2..74f1d1235 100644
--- a/tests/symbols/test_symbolVAR.py
+++ b/tests/symbols/test_symbolVAR.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from unittest import TestCase
from src.api.constants import SCOPE
diff --git a/tests/symbols/test_symbolVARARRAY.py b/tests/symbols/test_symbolVARARRAY.py
index 9e4d5c297..440d2e173 100644
--- a/tests/symbols/test_symbolVARARRAY.py
+++ b/tests/symbols/test_symbolVARARRAY.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import functools
from unittest import TestCase
diff --git a/tests/zxbc/__init__.py b/tests/zxbc/__init__.py
index e69de29bb..906667a8d 100644
--- a/tests/zxbc/__init__.py
+++ b/tests/zxbc/__init__.py
@@ -0,0 +1,6 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
diff --git a/tests/zxbc/test_build_parsetab.py b/tests/zxbc/test_build_parsetab.py
index 775b7e209..c6745d7ec 100644
--- a/tests/zxbc/test_build_parsetab.py
+++ b/tests/zxbc/test_build_parsetab.py
@@ -1,3 +1,10 @@
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
from unittest import mock
from src.ply.yacc import LRParser
diff --git a/tools/consolidate-libs.py b/tools/consolidate-libs.py
index 4ca91ca67..868539092 100755
--- a/tools/consolidate-libs.py
+++ b/tools/consolidate-libs.py
@@ -1,5 +1,12 @@
#!/usr/bin/env python
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
__doc__ = """Scans src/lib//** and does hardlinks to files
with the same name and content"""
diff --git a/tools/fixed.py b/tools/fixed.py
index 35738452c..1efc28da0 100644
--- a/tools/fixed.py
+++ b/tools/fixed.py
@@ -1,4 +1,9 @@
-# A program that displays fixed point numbers in hexa
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import sys
diff --git a/tools/mulfix.py b/tools/mulfix.py
index 4ad4b415f..6f651de30 100755
--- a/tools/mulfix.py
+++ b/tools/mulfix.py
@@ -1,6 +1,11 @@
#!/usr/bin/env python
-# A program that displays multiplied fixed point numbers
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import sys
diff --git a/tools/nextcreator.py b/tools/nextcreator.py
index a03b6ac25..0f8edb696 100755
--- a/tools/nextcreator.py
+++ b/tools/nextcreator.py
@@ -1,5 +1,12 @@
#!/usr/bin/env python3
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import argparse
import os
import re
diff --git a/tools/normalize_asm.py b/tools/normalize_asm.py
index c48918af0..4f06b37eb 100755
--- a/tools/normalize_asm.py
+++ b/tools/normalize_asm.py
@@ -1,4 +1,12 @@
#!/usr/bin/env python3
+
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import sys
INDENT = 4 * " "
diff --git a/tools/normalize_bas.py b/tools/normalize_bas.py
index c394f14d8..50ce40efb 100755
--- a/tools/normalize_bas.py
+++ b/tools/normalize_bas.py
@@ -1,5 +1,12 @@
#!/usr/bin/env python3
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import re
import sys
diff --git a/tools/scrview.py b/tools/scrview.py
index c3288ea2d..328002b73 100755
--- a/tools/scrview.py
+++ b/tools/scrview.py
@@ -1,5 +1,12 @@
#!/usr/bin/env python3
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
+
import sys
import pygame
diff --git a/zxbasm.py b/zxbasm.py
index 5faa79853..a816a2439 100755
--- a/zxbasm.py
+++ b/zxbasm.py
@@ -1,14 +1,11 @@
#!/usr/bin/env python3
-# vim: ts=4:et:sw=4
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-#
-# This is the Parser for the ZXBASM (ZXBasic Assembler)
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import os
import sys
diff --git a/zxbc.py b/zxbc.py
index 8db920890..b4835b996 100755
--- a/zxbc.py
+++ b/zxbc.py
@@ -1,5 +1,11 @@
#!/usr/bin/env python3
-# vim: ts=4:sw=4:et:
+
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import os
import sys
diff --git a/zxbpp.py b/zxbpp.py
index b9bc36204..1ef0a66f5 100755
--- a/zxbpp.py
+++ b/zxbpp.py
@@ -1,14 +1,11 @@
#!/usr/bin/env python3
-# vim: ts=4:sw=4:et:
-# ----------------------------------------------------------------------
-# Copyleft (K), Jose M. Rodriguez-Rosa (a.k.a. Boriel)
-#
-# This program is Free Software and is released under the terms of
-# the GNU General License
-#
-# This is the Parser for the ZXBpp (ZXBasic Preprocessor)
-# ----------------------------------------------------------------------
+# --------------------------------------------------------------------
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# © Copyright 2008-2024 José Manuel Rodríguez de la Rosa and contributors.
+# See the file CONTRIBUTORS.md for copyright details.
+# See https://www.gnu.org/licenses/agpl-3.0.html for details.
+# --------------------------------------------------------------------
import os
import sys