Skip to main content

PUBLIC DOMAIN FEATURE - "NEOCHROME MASTER"
by Chaos, Inc. of the Delta Force (member of the Union)
slightly corrected and justified by Richard Karsmakers

Well, well, aren't you all an infinitely lucky bunch! On this
very ST NEWS disk (in the PROGRAMS folder to be more accurate),
you will find a new version of the popular drawing program
"NEOchrome". It is somewhat improved over the original versions
(up to and including version 1.0 were 'original').
The file is called "NEO_2_19.PRG".

The program is called "NEOchrome Master" and has the following
features:
- Up to 10 different work screens
- Totally keyboard controlled
- Faster drawing of the board
- Calculate colors, STE as well
- Using of the Fileselector box with loading AND saving
- Loading- and saving-routines for different picture types:
- NEOchrome
- Degas packed and unpacked
- IFF
- Doodle
- Checking the commandline and changing to the right picture
type and loading the picture.
- Formatting of disks 100% MS-DOS
- Deleting files
- Rotate objects at any angle (not only 90°)
- Cutter utility to cut objects into a library
- Saving of the copybox in image format
- Totally new animation tool
- Saving of the color palette (assembler and C syntax)
- And changing the color palette in every scanline
- STE/Blitter support
- Rasters!
- Magnifier in the lower border of the fullscreen
- Saving all options
- TT support (?)
- ....

Lots of options are now also accessible by pressing keys on the
keyboard instead of clicking the mouse on the "NEOchrome" menu.
The key assignments are:

'A' Animate tool
'B' Brush
'C' Copybox
'D' Disk
'E' Eraser
'F' Fill
'G' Grabber
'I' Grid
'J' Jack Knife
'L' Line
'N' Nozzle
'P' Pencil
'R' Rasters
'S' Shapes
'T' Text
'X' Cutter

Escape Turn board on and off

Shift-ESC Select color #0 as painting color
'1' Select color #1 as painting color
'2' ...
. ...
'9' ...
'0' Select color #10 as painting color
'ß'D Select color #11 as painting color (on German keyboard)
'-'GB Select color #11 as painting color (on UK keyboard)
'''D Select color #12 as painting color (on German keyboard)
'='GB Select color #12 as painting color (on UK keyboard)
'#'D ...
'`'GB
Backspace ...
Help Select color #15 as painting color

'0' Select workscreen #0 (on numeric keypad)
'1' Select workscreen #1 (")
'2' ...#2
'3' ...#3
....
'9' ...#9

Space Selects the actual color palette

In General:

"NEOchrome Master" is done by Chaos, Inc. of The Delta Force
(member of the still ruling UNION). It's based on a reassembled
version of "NEOchrome" v1.0.

Now follows a description of all the new functions:

UNDO

UNDO of the board is now split into two parts: UNDO in general
and color undo. Clicking at UNDO uses the normal UNDO function
(Pressing the 'Undo' key does the same). If you change anything
in the color palette, and you would like to turn these changes
back, click with the left mouse button at color (undo). Clicking
with the right mouse button at color (undo) changes only the
actual painting color back.

JACK KNIFE

One new function of the jack knife is to print the contents of
the copybuffer (jack knife and copybox buffer are equal). This
can be done by clicking at 'print' or by pressing 'F10'.

REMAP

Another new function is called 'remap'. Imagine the following
situation: You painted a font and you want to use this font in a
picture. But the color palette of the picture is different from
the one of the font. So you've to change the colors of the font
to fit to the color palette of the picture. This can be done by
using 'remap'. Mark the block you like to remap and cut or copy
it. This is important, because by cutting/copying (F1/F2) the
object, "NEOchrome Master" knows the color palette of the
original object. Then switch to your new picture and paste (F3)
the object. Drag it to the place where it should be (rasters are
recognized) and remap (F5). "NEOchrome" now tries to fit the
original object to the new color palette as well as possible.
But there's another feature. Clicking with the right button at
'remap' or pressing 'Shift+F5' forces "NEOchrome Master" to use
only the colors between the left and right color mark. This is
useful to convert pictures to one/two/three planes, or to change
a lot of colors at once.
But remember: "NEOchrome Master" always uses the color palette
which was active when you copied/cut the object. If you don't
cut the object, then the old color palette will be used.

COPYBOX

You can now rotate the contents of the copybox at any angle. To
select any angle other than 90° click on the angle value with
the left (or right) button. This will increase (decrease) the
angle. You can also select the direction of the rotation by
clicking on the small arrow to the right of the angle.
Rotating for 90° uses the old "NEOchrome" routine.

GRABBER

"NEOchrome Master" is capable of calculating the colors needed
between two colors. Put the left and the right color mark (move
them by dragging with the right mouse button) to the desired
left and right value of the colors. Select 'calculate colors'.
"NEOchrome Master" will now calculate all colors between the
left and right color mark so that there is a continuous color
flow from the left color marked to the right one.
You can now save the selected color palette (see 'Rasters' for
more details on selecting palettes) in an ASCII-file to include
it into your source code. "NEOchrome Master" can save for use
with assembler or C.
It's now also possible to save the contents of the copybox as
an image file. This means that "NEOchrome Master" saves the data
of the copybox, not an ASCII file. All 'CopyBxxx.xxx' are now
saved in the actual load directory.
Clicking with the right button at 'SAVE COPYB.xx' allows you to
enter the filename and path under which the file is saved.

FILL

Left button will fill as usual. The right button will fill with
Color #0 to delete a polygon.
All 'miscellaneous' options are now available at the fill
function. This was necessary in order to get a new place to put
the Raster function in.

ERASER

Clicking once on the eraser icon selects eraser function. If
you click with the right button again on this icon "NEOchrome
Master" quits. Pressing the left button again deletes the whole
picture without any UNDO.

DISK

"NEOchrome Master" is now able to load different picture type
files. After clicking once at the disk icon you're able to
select the desired picture type for loading and saving
separately.
"NEOchrome Master" is able to check for the right picture type
and select this type automatically. This is only possible when
the selected picture has been saved in IFF-format, by "NEOchrome
Master" in NEOchrome format, or as packed "Degas" picture.
Otherwise, "NEOchrome Master" will try to load the picture by
the selected format.
Saving pictures is always done in the selected format.
You can format disk 100% MS-DOS compatible on any TOS version
by clicking at 'format' (single- and double sided).
To delete files simply click 'delete'.

CUTTER

This is one of the most complex new routines in "NEOchrome
Master". I'll try to explain it as clear as possible, but you've
got to try it on your own for full understanding.

With the help of the Cutter you can cut objects to animate them
or to save them into a special file called 'object-file'. This
file contains all information about the cut objects, so you can
use this object file to be loaded by your own program as a
graphics library.

There are two ways of selecting objects: First, you can open a
box similar to the way of the copybox. Second, you can force
"NEOchrome" to search for a frame which surrounds the object.
Here, it is necessary to set the painting color to the color of
the frame (e.g. using the grabber). Afterwards click into the
frame with the right mouse button.

After selecting any objects it is possible to change the size
of the selecting box by clicking the left mouse button at any
side or edge of the selecting box. This will resize the
selecting box in the way you'd clicked at the object.

In order to move a selecting box you click into the selected
area with the right mouse button.

Realise, so far you just selected an object. To put it into
your graphics library, click on 'ADD' placed in the options menu
(F1 or F2 will do the same). The selected object is inserted
before the right box.

How to replace/show/delete a object that is already stored in
your graphics library?

(i) Select the actual object using the right and left arrow.
(ii) click on 'Change'/'Show'/'Delete'.

(Note: You can only insert or add an object when you'd
selected an area before.)

"NEOchrome Master" knows the position of all cut objects. By
clicking on 'Show', it sets the selecting box to its stored
position. The program also knows the name of the picture from
which the objects are cut. 'Show' also switches to the
corresponding screen from which the object was cut.

How to save/load/clear all objects of your library?

(i) Click on save/load/new.

If you save your library, "NEOchrome Master" asks you whether
it should save all headers as well. 'No' means that the pure
data is being saved without any further information (Note: This
format can't be loaded again!). 'Yes' will save all information,
like position and size, too (Note: Only this format can be
loaded again). If you load a library, the program asks you
whether it should load all pictures, too. As you may remember,
"NEOchrome Master" also knows the name of the pictures from
which the objects were cut. All these pictures are loaded by
selecting 'Yes'.

In case you've changed some graphics simply select 're-cut'
(F10) and "NEOchrome Master" will cut all objects again.

The structure of the object-file (for use with own programs) is
the following:
For none-C-programmers: char=byte, int=word.

For version $0100:

Char header[6]; Always 'NEOOBJ'
Int version; Version e.g. $0100
Char filenames[4][13]; Names of the four used pictures
Long filelength; Number of bytes following after
this entry
Int number; Number of objects in this file

-----------------------------------------------------------------

For Version $0101:

Char header[6]; Always 'NEOOBJ'
Int version; Version e.g. $0101
Int internal_bytes; Number of internal bytes following;

This is repeated as often as internal_bytes/14:

--->
| Char screen_number; Number of the following workscreen
| Char filename[13]; Filename for this workscreen
---

Long filelength; Number of bytes following after
this entry
Int number; Number of objects in this file

The following structure is called 'object_header':

( 0) long offset; Offset to object data (relative to
object_header[0])
( 4) int width;
( 6) int height;
( 8) unsigned char mask; Is there a mask? (unused)
( 9) unsigned char planes; # of planes (always 4)
(10) int width_bytes;
(12) int x_neo; Position at NEOchrome picture
(14) int y_neo; -'-
(16) long reserved; reserved for future use...

Saving without any headers starts at this point:
After all object_headers follows the data of the objects....

There's another feature: Clicking with the right button at
'add'/'Replace' or holding the shiftkey during 'F1'-'F4' forces
"NEOchrome Master" to add also the used rasters/colorpalette to
the object. E.g. you've got an object with some rasters in it.
Cut it with Shift-'F1'. Then all the rasters which are used by
the object are saved too. Under the number of the actual object,
a small 'R' will appear if this object is saved with rasters.

These rasters are saved after the data of each object. Their
fileformat is the same as '*.RST'. Only the used rasters are
saved. There Offsets (which were relative to the screenstart)
are now relative to the top of the object.

What about the multi flag in the object_header?

Bits 0.. 7: The number of the screen from which the object is
cut.
Bits 8..15: The number of rasters which are used by the object
(Important!)
Bits 15..31: Yet reserved for future use.

ANIMATE

The animation tool can show all objects cut or loaded by the
Cutter. The number of the actual object is written between the
two arrows. This object is shown on the screen. The position
where this object is drawn can be changed by clicking in the
icons at the lower right edge of the screen. There are five
position where objects can be drawn:

(i) Left top edge of the screen. That means, that all left
upper edges of the objects are placed in the upper left
edge of the screen.
(ii) Right top edge of the screen.....
(iii) Right bottom of the screen...
(iv) Left bottom of the screen.
(v) Centre of the screen. All objects are centred in the
middle of the screen (e.g. useful for objects that are
getting greater).

'Animate' can also automatically show all objects. You can tell
"NEOchrome Master" where to start and where to end. To do so,
click on arrow up or down of the desired border. The program
will start with the number shown in the left arrow. It will end
with the number shown in the right arrow (e.g. to show objects
5..9 select '9' in the right border by clicking on the up/down
arrows; then select '5' for the left arrow).
Clicking with the left mouse button in one of the arrows shows
the next/previous object. At the end, "NEOchrome" will start all
over again. Clicking with the right mouse button into one of the
buttons shows all objects automatically. This means, that
"NEOchrome Master" in/decreases the number of the actual object
by itself. To increase the speed of the animation you must again
click with the right/left mouse button into the arrow. Whether
to use the right or left mouse button depends on the direction
of the animation (it's the same thing than the changing of speed
for the color animation).
There's one big problem: If the speed of the animation is at
maximum level there is no more mouse cursor. To decrease the
speed to a normal level press cursor down. Consequently you can
press cursor up for more speed. Cursor left and right selects
the previous/next object to show.

Sometimes it is necessary to show the objects in a way called
"ping pong". Here "NEOchrome Master" doesn't start over again at
the right border. Instead it changes the direction and animates
back. You can select this way by clicking at '<->'. But there
is more to say....

Maybe you have more than one animation in your graphics library
(e.g. 1..5 and 6..9). These are two 'sequences'. You can change
the actual sequence by clicking at the right or left arrow
beside 'sequenz'. Every sequence has its own parameters. If you
change from one sequence to another one, "NEOchrome Master"
changes all parameters to their previous values.
'Saving' just saves the values of all sequences - not the
objects!
With the help of 'load', you can load new values into the
animate tool. The objects remain unchanged.

RASTERS

To get more colourful pictures you can now change the color
palette at a specific scanline. This can be done by the
'rasters' option.

There can be up to 200 color palettes per picture. The actual
color palette can be selected by clicking on the right and left
arrow. Color palette #0 is the so-called 'vbl-palette'. This
palette is shown from the beginning of the screen up to the
first raster. To set a color palette at a specific scanline,
click with the mouse cursor into your picture. At this position,
the raster will appear.
There's one big problem! If you change the color palette at
every scanline the system crashes after approximately 17
rasters. This is a problem of Atari, not "NEOchrome" (for
insiders: NEOchrome will stay in the HBL-routine and just wait
for the next border. So the IRQ mask stays at $2600 and the
keyboard can't send its mouse-coordinates. This crashes the
system. If anybody knows a solution to this problem please let
me know!).
Another problem is the Blitter. The structure of the Atari ST
makes it impossible, at least for me, to get stable rasters
without turning the Blitter off. This means that the rasters
flicker when moving big objects with the copybox. Turn the
Blitter off (using the 'miscellany' menu) and they stay quiet.
(Again, solutions to this problem are appreciated by me, Chaos,
Inc.).

The position of the actual raster is written in the options
board. It can also be showed by clicking at 'Show'. You can
erase a raster from your picture by either clicking at y=0 or
clicking at 'Delete'.
To transfer a single color palette click on the arrow-up. This
stores the actual color palette in a buffer. You can read this
buffer by clicking at arrow-down. This causes "NEOchrome Master"
to replace the actual color palette by the stored one.
You can also save/load rasters by clicking at save/load. All
rasters are erased from the screen by clicking at 'new'.
All rasters with position and colors can be stored by clicking
at 'Put'. Afterwards it's possible to get all these rasters
again by clicking at 'Get'. This is useful to transfer all
rasters from one picture/screen to another.

Here is the format of the file containing all rasters (*.RST):

----->
| WORD y_position; /* shows the position of this
raster */
| WORD palette[16]; /* The colors of the raster */
|
------ This is repeated 200 times.

The first entry of the file is always the vbl-palette. Its y-
position is set to zero. All following rasters with a y_position
of zero are not active.
It's also possible that the y_positions of the rasters are not
sorted. It's exactly the same setting as made in "NEOchrome
Master".

To save only the used rasters, click at 'SAVE' with the right
mouse button.

There's another button, called 'LD PAL'. This means 'Load
Palette'.
Imagine the following situation. You painted a logo. Now you
want this logo to get more colourful. e.g. with all rainbow
colors in it.
The color in which the logo is painted may be #1. Set rasters
into your logo at every scanline. The palette of the rasters
could be copied by using arrow-up and arrow-down (s.a.). Now you
must change color #0 at every palette. Now it's time to use 'LD
PAL'. Select color #1. This color would be changed by 'LD PAL'.
Select the first raster of the logo as the actual raster. Click
on 'LD PAL'. NEOchrome now asks for a *.PAL file. This file
contains only colors. The first color of the file overwrites the
selected color of the actual palette. The next color of the file
overwrites the selected color of the next raster following the
actual raster on the screen. This means, that you can change
only one color, but in all following rasters.

The format of this *.PAL file is very simple:
It contains only words without any header. This means every
color is coded into one word (like in the color palette register
at $FF8240). The end of the file is marked by $ffff or by the
physical file end.

Important Note for painting with rasters: "NEOchrome Master"
always shows in its board the color palette used at the
mouse position. Imagine the following situation. You are drawing
a picture with two palettes. They are switched at position y=50.
The actual color palette is #1 (from 50..199). Painting at y=20
shows you the color palette which is used at this coordinate.
Moving the mouse cursor into the board always shows the actual
color palette (here it's the wrong one, because your're painting
with palette #0). Maybe you get confused looking at the wrong
color palette. Now it's time to use 'space'. Move the
mouse cursor back at position y=20. Press space. This selects
the palette #0 (used at y=20) as the actual one. Moving into the
option board now shows the color palette you are working with.
Pressing 'space' works with all drawing function, not only with
the rasters....

One more thing about rasters.... Only saving a picture in IFF-
format saves the rasters, too. Remember: pictures with rasters
should always be saved in IFF-format (Otherwise you lose your
rasters).
(NEOchrome adds a new chunk to the IFF-file. This chunk is
called 'RAST' and its contents is the same than a *.RST file
containing only the used rasters)

MISCELLANEOUS

But there are a few more options. First of all, you can select
whether you want to work with the 4096 STE-Colors. This works on
ANY ST(E). When you select STE on an normal ST, then you can
adjust up to 4096 colors, but you can only see up to 512 (by the
way, I'm working on a version which is able to display all 4096
colors on normal STs).
Next, you can turn the blitter on and off. When you are working
with rasters, the blitter disturbs the system. It's switched off
automatically when you set a raster. With this button you can
turn the blitter on again (then you've got flickering
rasters)...
You can turn the 'Magnifying glasses' of the fullscreen on and
off. You can also adjust the height of this magnify. This
maximum height depends on your ST and monitor. Use left and
right button to increase or decrease the value.
What now follows is the so called 'adjustable border'.
Depending on your ST the number of NOPs may differ a little from
other STs. If you've difficulties with your ST (e.g. flickering
border, shifting of the whole picture,..) then try to adjust
this value. There are different values for 50 and 60 Hz. Again,
left button to increase, right button to decrease. Sometimes,
the whole picture is shifted, even when you're not using
fullscreen. Then toggle the synchronisation from 60->50 or 50-
>60, then your ST should be working normally.
On the right side is the button 'COLOR #'. With the help of
this button you can show the number of all colors inside the
color palette. Another button is called 'PORTA 7'. Using this
button toggles the 7th Bit of the port A of the soundchip
(useful to switch a cache on/off).
The next button allows you to switch from 50 to 60 Hz or vice
visa.
The last button, 'Save all options', saves all options that you
can select with "NEOchrome Master". These are e.g. the line
width, the text style, the picture format, the height of the
border, the number of NOPs...

That's it folks.....

I'm always glad to hear your opinion, critics and wishes about
"NEOchrome Master". Send them to me or give me a call.... Every
bug that is sent to me will be fixed (Please make a good
description containing TOS version, computer type, RAM
configuration, NEOchrome version and bug description).

If you like "NEOchrome Master", then send some donation either
to Dave Staugas or to me: Chaos, Inc.
The address of Dave Staugas is mentioned in the scroller of the
program. When some people decide to send me (or Dave) some
money, then there will be some updates with even more features.
If you have any good routines (e.g. anti-aliasing with 16
colours) please send them to me (the address will follow), I'll
try to put them in further versions.

And remember..... "NEOchrome" beats 'em all!

What was new for version 2.07:

- Some bugs have been fixed.
- Rasters now over the whole screen at any scanline.
- 'LD PAL' to change only one color, but in every palette.
- STE support could be switched on and off
- Magnifying glasses at the lower border of the fullscreen.
- Calculating colors also for STE.
- The automatic recognition for the file type is now better.
- You can now save all options that you selected.

What was new for version 2.10:

- Totally new keyboard control routine, that's able to
repair damaged data packages sent by IKBD. It's a little
bit self repairing. I hope that you don't have as much
trouble as with TurboAss' keyboard routine (In fact all
version above 1.50 are really very (!) good!).
- The load_object_bug of version 2.07 is fixed.

What was new for version 2.15:

- The whole thing with the keyboard driver is rewritten.
This means that you can now use up to 200 rasters even
with 60 Hz. If you're now using more than 180 rasters at
60 Hz there is nearly no more flickering.
- Rotating an object at 90° uses now the old rotate-routine
from NEOchrome V1.0. It's much faster now and more
useful.
- Automatic putting of rasters from scanline x to scanline
y.
- Different left and right color marks for different
screens.

What was new for version 2.16:

- And again some bugs (e.g. transfer Jack Knife from one
screen to another) were fixed
- Showing the number of the color inside the color box.
- Sorting rasters.
- Save only used rasters->shorter IFF-pictures
- Right button at UNDO is now color undo.
- Right button at 'SAVE Copyb.xx' allows you to enter a
path and filename
- Right button at 'Save Raster' saves only used rasters.
- Adding the used rasters to objects too.
- Adjustable border-open-routine (works on every ST).
- Animation with background (Click where you want your
object).

What was new for version 2.17:

- NEOchrome checks itself for link viruses.
- There's a small 'R' under the object number, when this
object is cut with rasters.
- A printer output of the copybox using grey tones.
- Selectable background colour for right button (pencil and
fill).
- Left and right button with pencil draw with color #0.
- Right button at Show (Object) shows the object (and
rasters) physically.
- Recut cuts rasters too.
- There's a little color palette in the border of the
fullscreen.
- IFF can now load and save STE-colors.
- IFF-Save Bug is fixed (saved pictures hadn't worked on
Atari-Transputer-Workstations (That's no joke!)).

What was new for version 2.18:

- No more bug-fixing...
- A remap function
- The copybox is put at the old place by using paste.
- You can toggle the bit 7 of Port A of the PSG (e.g. to
switch a cache on and off).

What's new for version 2.19 (first official release)

- A little effect when you start NEOchrome (just see)
- The sync-errors are corrected

Now....let's have a look at what is planned for future versions:

- TT support. (much, much work to go)
- A selectable grid width
- Only using 1,2,3, or 4 planes
- Bigger pictures (e.g. 640x400)
- Monochrome painting (?)
- Selecting of number of workscreens to get more memory for
cutter
- Anti-aliasing
- Dithered fill
- IFF loader for more than four planes (or less)
- Painting with more than 16 colours

Was signed

Chaos, Inc. of The Delta Force.

P.S.: The contact address for any suggestions, donations or bug
reports is:

PLK 136681E
7050 Waiblingen
West-Germany
(But don't send illegal software - we are NO pirates!)

Editorial notes:

Some things that the programmer did not mention is the fact
that the program does not like to work together with the
software blitter, "Turbo ST". When using my harddisk,
"Neochrome" ships it! It is best to use it with the least
programs installed as possible.

Disclaimer
The text of the articles is identical to the originals like they appeared in old ST NEWS issues. Please take into consideration that the author(s) was (were) a lot younger and less responsible back then. So bad jokes, bad English, youthful arrogance, insults, bravura, over-crediting and tastelessness should be taken with at least a grain of salt. Any contact and/or payment information, as well as deadlines/release dates of any kind should be regarded as outdated. Due to the fact that these pages are not actually contained in an Atari executable here, references to scroll texts, featured demo screens and hidden articles may also be irrelevant.