THE ARTIST REV. 1.1a by Stefan Posthuma
The ArtiST is a monochrome drawing program written entirely in GfA
BASIC.
First Remark:
I have to dissapoint those who have a 512K-ST without TOS-ROM;
the program won't run on this configuration, simply because you
don't have enought memory. My advise: start saving money to buy
TOS-ROM, it is very useful, believe me!
The ArtiST, the background story:
At the HCC-beurs, when I first met Richard Karsmakers, I just
started writing this program. At that time, only the main menu was
ready. Well, a few months passed, and I finally completed it. The
result: a GfA program of about 87K, some 5800 lines of program
text. But it worked out well, and I am quite satisfied with the
result. But why another GfA monochrome drawing program, while the
ST-user is drowning in drawing programs? The answer is quite
simple: I just thought it was fun writing it, and I had to do
something with that expensive ST of mine! I started writing
drawing programs some 5 years ago, when I was 15 years old, on a
VIC-20. Later I bought a 64 and wrote a program called 'The
Graphic Master' which consisted of a sprite editor, a character
editor and a drawing program. Writing drawing programs on a 64 is
terribly difficult, since there isn't a fancy operating system
with all kinds of graphic routines in it. I had to write all line,
circle and fill algorithms myself and I had to program them in
6502 assembler, which costed me a lot of blood, sweat and tears.
But somehow the jury of the Micro Masters Holland competition
liked it so much that they decided to reward me with a PC. After
having some problems with that machine, I swapped it against an
ST. I immediately started writing a drawing program in ST-BASIC,
but that was a piece of #%£$. As soon as I got my hands on GfA, I
trashed the piece of #%£$ and started all over again. Here is the
result!
The ArtiST, the manual:
Starting up the program:
The file ARTIST.BAS can be edited and processed by the GfA-BASIC
interpreter, or run through the GfA BASIC run-only interpreter.
This run-only interpreter is provided on the disk, and it is
called ARTIST.PRG. So just double-click this icon and the program
will start automatically. If you have a 512K-ST, remove all
RAMdisks, accessories ect., because this program uses a lot of
memory.
Because I am a menu-happy kind of programmer, the ArtiST is based
heavily on menu's. As soon as the program starts, you are
confronted with the main menu from which all options of the
program can be chosen. A brief list of selectable options follows
on the following pages.
FILES: From this menu, you can load either ArtiST or DEGAS
pictures. When you load a picture created with the
normal DEGAS, the program will automatically set the
colors. A DEGAS-ELITE picture will be loaded correctly
(provided it wasn't crunched) but the colors will not be
set. You can also save pictures, rename or kill files
and set the default drive. (Finding out wether a drive
is attached or not, is quite tricky, so I had to
compromise: empty disks are not recognised. But drives A
and B are always selectable.)
DESK: You will get a desktop with a menu-bar. Here you can
print pictures or blocks. I used this setup so you can
use accessories to set up your printer if you need to.
(Or call other accessories, like disk-formatters etc.)
DRAW: This will call the main draw menu. More on this later.
BLOCKS: You will be presented with the main block menu. More on
this later.
SPECIAL: This menu enables you to set the mirror mode, set grid
mode and distancing, enable/disable a crosshair, an
infowindow and the clipping. If you enable the
crosshair, the mousepointer in drawing mode will be
replaced by a crosshair. If you enable the infowindow,
you will get a little square on the screen in which the
X- and Y-coordinates of the mouse and the drawing mode
will be displayed, during drawing mode.
EDITS: Something that looks like a menu-bar will be activated,
from which you can choose a fill, brush or line editor.
The editors all have one thing in common: set a pixel
using the left button, and delete one using the right
button. (Besides that, the fill- and brush-editor are
practically the same.) In the fill editor, clicking
inside the box that contains the actual fill-pattern
will enable you to select one of eight user-defined
fill-patterns.
QUIT: If you run out of inspiration, or you simply want to
quit, this is perfect for you.
ABOUT: Some information about the ArtiST.
The Drawmenu
If you select 'DRAW' from the main menu, you will be confronted
with the Drawmenu, which is really important. This menu allows you
to do the actual artwork, clear or invert the screen, select the
graphic mode and set the drawing color. You can also define the
clipping rectangle (which is only useful if the clipping was
enabled in the SPECIAL menu.) Basically, all lines, circles ect.
are 'cut-off' when they fall outside the clipping retangle.
Select a mode like line or circle, then click the 'OK' field or
simply press the right mousebutton. Now you are in drawmode.
Pressing the left button now will set the startpoint for lines,
boxes or set the centrepoint for circles, ellipses ect. Move the
mouse around (pressing the right button now, will 'unhook' the
line, circle, or whatever you selected), and press the left button
again to draw the actual line, circle ect. If you are not
satisfied, press the UNDO key and the line, circle, etc. will
dissapear. One eception is the Polyline function, where pressing
the right mousebutton will result in the completion of the
polyline. In drawmode, when no line, circle, ect. is activated,
pressing the right button will activate the menu belonging to the
actual drawing mode. So if you are drawing lines, you will get the
menu to set linestile, lineheight ect.
If you select 'Fill', move the mouse into the area that has to be
filled, and press the left button. Be careful with this, if you
try to fill something immediately after you already filled it, the
GEM fill-routine sometimes takes a long time to realize that the
area is already filled! Also, take care when filling in mirror
mode.
In 'turnframe' mode, draw a frame the ususal way, and wait a while
(compute... compute...) then turn the frame using the arrow keys.
Draw it with RETURN and cancel with ESCAPE.
In drawing mode, pressing the ESCAPE key will bring you to the
Mainmenu immediately, and pressing the TAB key will bring you to
the Drawmenu. When entering text, pressing UNDO will restore the
last text you used.
The Blockmenu
In the blockmenu, you can set all the options for block
operations. You can move or copy a block, or keep it steady. (This
is useful when you want to, let's say invert a piece of the screen
without moving it). You can also use the last block you selected
in previous block operations. Click 'OK' and you will be allowed
to capture a new block, (or use the old one). Move the block
around with the mouse, and paste it down using the left
mousebutton. Using the arrowkeys, you can shrink the block,
providing it is entirely visible, so no parts of the block fall
outside the screen. Shrinking is only useful after lots of block-
modifications, after which lots of white might appear around the
edges of the block. Pressing UNDO will erase the last block pasted
down, pressing ESCAPE brings you to the Mainmenu, and pressing TAB
will bring you to the Blockmenu.
If you press the right mousebutton, you will get the block-
modifications menu. From this menu you can enlarge, fold, bend and
do lots of more interesting things with blocks. Click 'OK' to
enter modification mode. In this mode, pressing the left button
will re-draw the block, pressing the right button will take the
new block and enter blockmode. Pressing ESCAPE will restore the
original block and enter blockmode.
In Resize-mode, pressing HELP will allow you to enter a value to
resize the block, so if you enter '2', the block will become twice
as large as it used to be, and entering '0.5' will reduce the
block to half its original size.
Rotating a block 90 degrees, costs a lot of memory, because you
have to store each separate pixel. On my system, a 260ST with TOS-
ROM, only tiny blocks could be rotated, so I thought of another
way to do the job. It is a little slow, and not so elegant, but it
works, and you can rotate large parts of the screen.
Almost every block option can be executed 'horizontal' or
'vertical'. As you will notice, the blocks you can modify
vertically are much larger than the blocks you can modify
horizontally. This is because GfA BASIC stores vertical screen
cuts differently than horizontal screen cuts. (If you have a
1MEG-ST, don't worry about this, you should be able to modify the
entire screen, either horizontally or vertically, providing you
don't have large RAMdisks and/or accessories.)
This conludes the short summary of controls. It is not at all
complete, but I tried to make the program as user-friendly as
possible, so you'll get the hang of it while working with it.
The Bugs....
Every program contains bugs, even GfA BASIC. There is a bug in the
SPRITE command. If you turn off a sprite, the program might just
crash hopelessly. In the freehand drawing mode, I work with
sprites. In order to make a sprite dissapear, I put it in the top-
left-hand corner of the screen. If this area is black, two little
16-bit wide lines just might appear there. This is just a
remainder of the sprite that is sitting there....
Also, the command to set the user-defined line style is does not
work correctly, so I had to use the following VDI-call:
DPOKE CONTRL ,113 !VDI function number 113
DPOKE CONTRL+2,0
DPOKE CONTRL+4,0
DPOKE CONTRL+6,1
DPOKE INTIN ,STYLE% !(A 16-bit integer, representing the line
VDISYS pattern)
The 'turnframe' algorithm isn't 100% proof. Sometimes, the frame
you can turn is not identical to the frame you've just drawn, but
this happens rarely. Besides this, I could not discover any bugs,
but I am sure there must be some nasty little ones, hidden
somewhere.. If you find one, please contact me, I will appreciate
it.
Updates
This program was written on a 512K-ST. So I had to watch my memory
closely, and I had to stick to one workscreen. But as soon as I
buy 1MEG expansion, I will make a new version with more
workscreens. Also, when I buy a color monitor (when will that
be????), maybe I will write a color version of the ArtiST.
If you have a good suggestion for the ArtiST, or if you have a
question about the ArtiST, or about GfA BASIC in general, contact
me! I will be glad to help you out.
The Digital Insanity ST Sofware Research & Development Fund
I am just a poor student, working really hard trying to create
nice software on the ST, who has to maintain his ST, buy fresh
floppies and sometimes a nice program.... If you want to stimulate
the software production at the D.I. offices, or if you just like
the ArtiST a lot, feel free to donate any amount of money to the
following Giro-number: 5689205
Each donation will highly increase the chances of me buying a
1MEG-expansion, a color monitor, a double-sided disk-drive and a
modem before the year 2000......
Copying
This program is Public Domain, so you can copy it freely under the
only condition that you do not change it in any way.
If you copy this program, make sure to copy the following files:
ARTIST.PRG - the GfA run-only interpreter.
ARTIST.BAS - the actual basic program. This is unprotected, so you
can list it using the GfA basic interpreter. Maybe
there are some useful things in it....
ARTMEN.PIC - a folder containing the menu pictures, and some more
stuff, which are used by the ArtiST.
ARTFILES - a folder containing some sample pictures, blocks etc.
ARTSHOW.PRG- the slideshow This compiled GfA program shows both
ArtiST and DEGAS pictures from the root directory.
README.TXT - the readme file.
Contact
The General Manager and Senior Programmer of Digital Insanity
Software, Stefan Posthuma, can be contacted at the following
adress:
Stefan Posthuma
9e Donk 4
5233 PJ Den Bosch
Holland
tel: 073-416499 (call only afer 18.00 hours)
I can also be found each Saturday morning at the VEST-ZN meetings
in Electronicaland in Den Bosch. If you write in, don't forget to
add an extra stamp, so I can reply!
Well, this is the end of the story. I wish you lots of fun using
the ArtiST!
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.