I am researching a concept that I am hoping to call a uniengine.
I define the word uniengine as follows.
A uniengine is a software process that obeys a sequence of software language commands which commands are expressed by a set of unicode characters designated for the purpose and where the said software language has no program sequence changing commands.
For research purposes I am devising a uniengine that uses a few more than 1024 code units and placing these uniengine codes in the private use area. From the unicode documentation, I have decide to place them in the middle of the private use area, using U+EC00 to U+EFFF as a block and placing the additional character codes within U+EB00 to U+EBFF.
The codes U+EC00 to U+EFFF each have essentially the same meaning, namely, "place the ten least significant bits of this code into the accumulator register of the uniengine" which permits 1024 different bit patterns to be placed in the accumulator register of the uniengine.
The other commands are intended to include a comprehensive set of commands for certain graphics and other purposes, yet to be essentially a small set of easily implemented instructions in the hope that the uniengine technique will be widely implemented.
The other commands include such items as COPY ACCUMULATOR TO X0 and COPY ACCUMULATOR TO Y0 and MOVEPEN and DRAWLINE. There is also a COPY ACCUMULATOR TO X0 AND THEN DRAWLINE command and so on. So a four code sequence of loading the accumulator, copying the accumulator to Y0, loading the accumulator, copying the accumulator to X0 and then drawing a line allows a line to a specified coordinate to be drawn. There are a variety of commands being developed so that both raster graphics and vector graphics may be drawn. The intention is to produce a comprehensive set of commands to allow the possibility of drawing graphics up to 1048576 pixels by 1048576 pixels in x,y,z,t space. However, many uses are envisaged as being in simple x,y graphics about 200 pixels in size in the x and y directions or thereabouts. Commands to generate colours and store up to 256 colours are also included. This will enable a unicode document to contain graphics. The idea is that a computer software package will receive unicode characters and draw each character in the current cell which has the point (0,0) as its top left corner and then move the position of the (0,0) point ready to receive the next character. In the event of a uniengine graphics command being received, the current (0,0) point will be used as the (0,0) point for the uniengine graphics commands.
I feel that this is a useful development as many documents need to contain pictures and the use of a uniengine graphics system to describe them within the unicode document using an open standard will be a useful alternative to having to include a link to a separate graphics file. The use of vector graphics in a context of producing a raster scan will allow pictures to be encoded in uniengine graphics in a compact method, drawing all contiguous pixels of the same colour in a row with one drawline command.
A command to fill a rectangle with a single colour is also included, yet constructs such as circles and so on are deliberately not included as the uniengine graphics are intended to express a ready completed graphic, not one which is to be computed as such. The use of the filled rectangle command is seen as reasonable so that it may be used to produce a background colour fill.
Another use for the uniengine is to access hypercode. Commands such as COPY ACCUMULATOR TO H2 and COPY ACCUMULATOR TO H1 and COPY ACCUMULATOR TO H0 are provided and an instruction DRAW THE CHARACTER DENOTED BY THE H REGISTERS is provided. The latter instruction would draw the character denoted by the code 1048576*H2 + 1024*H1 + H0.
The method used for designating hypercode characters, hypercode being a name suggested by me for characters beyond U+10FFFF, could possibly be agreed as being by a method involving uniengine vector graphics commands, so that an application for registration of a hypercode character would need to include a uniengine vector graphics coding sequence for the character. A library of such definitions could be maintained on a website and made available on a CD-ROM as well. Naturally, arrangements for correct scaling of the character into the document would need to be agreed. Such a uniengine graphics definition method for hypercode characters might be particularly useful for encoding such characters as music type.
25 February 2001
This archive was generated by hypermail 2.1.2 : Tue Jul 10 2001 - 17:21:19 EDT