Fingerprints allow you to create your own semantics for capital letters. For example, you could make a fingerprint that makes an S print a string to the screen.
The = sign has an added meaning in a fingerprint. If it is on the left hand edge, the character to the right of it (no spaces are allowed in between) aquires new semantics. This only works for capital letters, if it is a lower case letter or punctuation, the new semantics will not be applied. The instructions for the fingerprint will start being executed at the left most edge of the following line, with a east delta. The position and delta are, of course, temporary for the execution of that particular call to the fingerprint.
All changes to the fingerprint (using G and P) remain until the end of execution.
These instructions will work only in a fingerprint, you can.
B ( -- ) Move calling IP backwards one step D (x y -- ) Change calling IP delta to (x, y) E ( -- n) Pushes size of stack F ( -- ) Move calling IP forwards one step G (x y -- c) Pushes character at current fingerprint location + (x,y) onto the stack K (n -- m) Moves nth element of stack on to top (pick) L (x y -- ) Changes calling IP location to (x, y) P (c x y -- ) Puts c at the current fingerprint location + (x,y). x and y are the offset of the current location. O (n -- m) Copies nth element to top of stack (roll)
These instruction's meanings have changed, or they have added meaning
v < > ^ All refer to the fp delta, not the IP delta ? _ | w Also refer to the fp delta [ ] r Also refer to the fp delta # ; j Change the fp location in the same way that they would normaly change the IP location k executes the instruction in the following fingerprint cell " Turns on string mode for the fingerprint ' Same as normal but looks at the next fp cell = If it is in the first cell on a line, it starts a new fingerprint semantic, otherwise it does the usual system call
If an instruction has not been listed above, it executes exacly the same as it normaly would.
There is a major bug in the fingerprint execution, if the position of the new letter you are defining is not at (0,0) then it will work in unpredictable ways. Thus only the first letter you define will work. There are also some minor wraping problems.