From 8e6b161ad0268cc51192e953b82ee5fa680679ee Mon Sep 17 00:00:00 2001 From: Christian Dietrich Date: Mon, 13 Oct 2014 13:47:14 +0200 Subject: [PATCH] Generate a hopefully correct version for CTAN --- Makefile | 19 +++++++-- README | 75 ++++++++++++++++++++++++++++++++++++ imgs/mandelbrot-250x250.png | Bin 0 -> 8794 bytes 3 files changed, 90 insertions(+), 4 deletions(-) create mode 100644 README create mode 100644 imgs/mandelbrot-250x250.png diff --git a/Makefile b/Makefile index 710cba9..cce91f9 100644 --- a/Makefile +++ b/Makefile @@ -12,8 +12,8 @@ test-simple: source/simple-testsuite.tex test-%: source/test-suite/%.c cd source/test-suite; ./test-suite single $(shell basename $<) -avremu.tds.zip: source/avremu.pdf - rm -rf avremu avremu.tds.zip +avremu.zip: source/avremu.pdf + rm -rf avremu avremu.tds.zip avremu.zip mkdir avremu # TeX Directory mkdir -p avremu/tex/latex/avremu @@ -31,9 +31,20 @@ avremu.tds.zip: source/avremu.pdf # Documenation directory mkdir -p avremu/doc/latex/avremu cp source/avremu.pdf avremu/doc/latex/avremu - cp README.md avremu/doc/latex/avremu/README + cp README avremu/doc/latex/avremu/README cd avremu; zip -r ../avremu.tds.zip * rm -rf avremu + # Assemble a Flat version + mkdir avremu + cp tex/latex/avremu/*.tex avremu/ + cp tex/latex/avremu/*.sty avremu/ + cp source/simple-testsuite.tex avremu/ + cp source/avremu.tex avremu/ + cp source/avremu.pdf avremu/ + + cp README avremu/README + zip -r avremu.zip avremu/ avremu.tds.zip + rm -rf avremu -.PHONY: test-simple source/avremu.pdf avremu.tds.zip +.PHONY: test-simple source/avremu.pdf avremu.zip diff --git a/README b/README new file mode 100644 index 0000000..7fe8622 --- /dev/null +++ b/README @@ -0,0 +1,75 @@ +avremu: An AVR Emulator written in pure LaTeX +====================================================== + +LaTeX is known as a typesetting system. But the underlying TeX system +is a powerful macro processor. In fact, TeX is a Turing-complete +programming language. TeX can compute anything, that is +computable. Computeability is a concept from theoretical computer +science. After visiting a theoretical CS course, you will know that +there are things that cannot be solved by a machine. Never. Look out +for the halting problem. So, Turing-complete does not say "It's a +proper programming language", but more "someone can write a proper +interpreter for any programming language in it, theoretically". + +So back to TeX. To be honest, TeX is a horrible language to code +in. After writing my master thesis in LaTex, after crafting every +graphic within with TiKz[1] and pgfplots[2], and after writing my +first LaTeX package[3], I can honestly say: TeX is the Quasimodo of +all widely used programming languages. If you can avoid it, avoid it. +But if you are forced to use it, you can abstract from TeX, since it +is a "proper" programming language. + +Let's say we want to program our document in C on Top of Tex. Then +there would be the need to interpret the C semantic. Basically we +would have to write a compiler for C in TeX. Not a very promising +future, if you start this. But, we can use a normal C compiler to +compile the C code to some simple platform. Like AVR[4]. Since I have +other things to do than writing an AVR Emulator in TeX, here it is! + +The newest source can be found at https://gitlab.brokenpipe.de/stettberger/avremu + +The package is licensed under LPPL 1.3 + +You are writing an CPU emulator in TeX, the TYPESETTING system? +--------------------------------------------------------------- + +Yep. + +What Microcontroller is emulated? +--------------------------------- + +I aimed for an ATmega8. The AVR platform is an 8 Bit Processor with 16 +Bit memory addresses. The hardware version is shipped with 1 KByte of +RAM and 8 Kbyte Flash memory, but of course, the emulated processor +can handle more memory. + +Are you insane? +--------------- + +Not that anybody knows of. + +Are all OP codes implemented? +----------------------------- + +Unfortunately not. I'm still missing 5 opcodes (MULS, MULSU, FMUL, +FMULS, FMULSU), but until now I did not encounter a C file, the +AVR-GCC emits these opcodes. The fractional multiply opcodes are also +somewhat arcane. + +Is it fast? +----------- + +Ok, you are asking me, whether a CPU simulator written in TeX, that +simulates an 8-Bit microcontroller is fast? Propably not. On my +notebook I could achieve 2.5 KHz, so this is a factor 10000 slower +than the actual hardware with the highest supported clock rate. + +----- + +[1] http://www.ctan.org/pkg/pgf + +[2] http://pgfplots.sourceforge.net/ + +[3] http://www.ctan.org/pkg/dataref + +[4] http://en.wikipedia.org/wiki/Atmel_AVR diff --git a/imgs/mandelbrot-250x250.png b/imgs/mandelbrot-250x250.png new file mode 100644 index 0000000000000000000000000000000000000000..4f1ad50e1f822aa19d73b260a9e5b50f456e6ced GIT binary patch literal 8794 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 Js%#zke*jcI{b&FH literal 0 HcmV?d00001