diff --git a/src/Makefile.txt b/src/Makefile.txt
new file mode 100644
index 0000000000000000000000000000000000000000..176cc9b932afd745389e212e6d6933afd4ff4a01
--- /dev/null
+++ b/src/Makefile.txt
@@ -0,0 +1,53 @@
+# Tools
+CC=gcc
+ASM=nasm
+CFLAGS=-m32
+ASMFLAGS=-f elf
+
+# Source files
+DRIVER=driver.c
+ASM_SRC=task1.asm task2_1.asm task2_2.asm task2_3.asm
+ASM_OBJ=$(ASM_SRC:.asm=.o)
+ASM_IO=asm_io.asm
+ASM_IO_OBJ=asm_io.o
+
+# Executables
+EXE1=task1
+EXE2=task2_1
+EXE3=task2_2
+EXE4=task2_3
+
+# Default target
+all: $(EXE1) $(EXE2) $(EXE3) $(EXE4)
+
+# Rule for task1
+$(EXE1): $(ASM_IO_OBJ) task1.o driver.o
+	$(CC) $(CFLAGS) $^ -o $@
+
+# Rule for task2_1
+$(EXE2): $(ASM_IO_OBJ) task2_1.o driver.o
+	$(CC) $(CFLAGS) $^ -o $@
+
+# Rule for task2_2
+$(EXE3): $(ASM_IO_OBJ) task2_2.o driver.o
+	$(CC) $(CFLAGS) $^ -o $@
+
+# Rule for task2_3
+$(EXE4): $(ASM_IO_OBJ) task2_3.o driver.o
+	$(CC) $(CFLAGS) $^ -o $@
+
+# Assemble asm_io.asm
+$(ASM_IO_OBJ): $(ASM_IO)
+	$(ASM) $(ASMFLAGS) $< -o $@
+
+# Assemble .asm files
+%.o: %.asm
+	$(ASM) $(ASMFLAGS) $< -o $@
+
+# Compile driver.c
+driver.o: $(DRIVER)
+	$(CC) $(CFLAGS) -c $< -o $@
+
+# Clean up build artifacts
+clean:
+	rm -f *.o $(EXE1) $(EXE2) $(EXE3) $(EXE4)
\ No newline at end of file