diff --git a/README.md b/README.md
index 698f69fc2..60717afa1 100644
--- a/README.md
+++ b/README.md
@@ -27,12 +27,69 @@ which aims to provide many conveniences over raw assembly code (even when using
- various code optimizations (code structure, logical and numerical expressions, ...)
-It still allows for low level programming however and inline assembly blocks
-to write performance critical pieces of code, but otherwise compiles fairly straightforwardly
-into 6502 assembly code. This resulting code is assembled into a binary program by using
-an external macro assembler, [64tass](https://sourceforge.net/projects/tass64/).
-This tool can be compiled pretty easily for various platforms (Linux, Mac OS, Windows) or just ask me
-to provide a small precompiled executable.
+It is mainly targeted at the Commodore-64 machine at this time.
-Prog8 is mainly targeted at the Commodore-64 machine, but should be mostly system independent.
+Required tools:
+---------------
+`64tass `_ - cross assembler. Install this on your shell path.
+A recent .exe version of this tool for Windows can be obtained from my `clone `_ of this project.
+For other platforms it is very easy to compile it yourself (make ; make install).
+
+A **Java runtime (jre or jdk), version 8 or newer** is required to run the packaged compiler.
+If you want to build it from source, you'll need a Kotlin 1.3 SDK as well (or for instance,
+IntelliJ IDEA with the Kotlin plugin).
+
+It's handy to have a C-64 emulator or a real C-64 to run the programs on. The compiler assumes the presence
+of the `Vice emulator `_.
+
+
+Example code
+------------
+
+When this code is compiled::
+
+ %import c64lib
+ %import c64utils
+ %import c64flt
+
+ ~ main {
+ sub start() {
+ ; set text color and activate lowercase charset
+ c64.COLOR = 13
+ c64.VMCSB |= 2
+
+ ; use optimized routine to write text
+ c64scr.print("Hello!\n")
+
+ ; use iteration to write text
+ str question = "How are you?\n"
+ for ubyte char in question
+ c64.CHROUT(char)
+
+ ; use indexed loop to write characters
+ str bye = "Goodbye!\n"
+ for ubyte c in 0 to len(bye)
+ c64.CHROUT(bye[c])
+
+
+ float clock_seconds = ((mkword(c64.TIME_LO, c64.TIME_MID) as float) + (c64.TIME_HI as float)*65536.0) / 60
+ float hours = floor(clock_seconds / 3600)
+ clock_seconds -= hours*3600
+ float minutes = floor(clock_seconds / 60)
+ clock_seconds = floor(clock_seconds - minutes * 60.0)
+
+ c64scr.print("system time in ti$ is ")
+ c64flt.print_f(hours)
+ c64.CHROUT(':')
+ c64flt.print_f(minutes)
+ c64.CHROUT(':')
+ c64flt.print_f(clock_seconds)
+ c64.CHROUT('\n')
+ }
+ }
+
+
+you get a program that outputs this when loaded on a C-64:
+
+![c64 screen](docs/source/_static/hello_screen.png)
diff --git a/examples/test.p8 b/examples/test.p8
index 5c011806d..8c7b3f34e 100644
--- a/examples/test.p8
+++ b/examples/test.p8
@@ -1,29 +1,25 @@
%import c64lib
%import c64utils
-%import c64flt
~ main {
sub start() {
- float clock_seconds = ((mkword(c64.TIME_LO, c64.TIME_MID) as float) + (c64.TIME_HI as float)*65536.0) / 60
- float hours = floor(clock_seconds / 3600)
- clock_seconds -= hours*3600
- float minutes = floor(clock_seconds / 60)
- clock_seconds -= minutes * 60.0
+ uword num_hours=2
+ uword num_minutes=10
+ uword num_seconds=14
- ubyte hours_b = hours as ubyte
- ubyte minutes_b = minutes as ubyte
- ubyte seconds_b = clock_seconds as ubyte
+ uword total = num_hours * 3600 + num_minutes * 60 + num_seconds
- c64scr.print_ub(hours_b)
- c64.CHROUT(':')
- c64scr.print_ub(minutes_b)
- c64.CHROUT(':')
- c64scr.print_ub(seconds_b)
+ uword total2 = num_hours * 3600
+ + num_minutes * 60
+ + num_seconds
+
+ c64scr.print_uw(total)
+ c64.CHROUT('\n')
+ c64scr.print_uw(total2)
c64.CHROUT('\n')
-
}