
SCRPAINT v2.2

A Freeware product

from

Genetic (DNA) Software

THE TEXT SCREEN IMAGE PAINTER


  Introduction.

SCRPAINT is a versatile and powerful Text Screen Editor, which whilst providing 
as comprehensive a list of features as possible, also remains simple and 
convenient to use. This ease of use is especially extended for those fortunate 
enough to use a mouse.

A text screen editor has many uses in itself, but in order to expand the 
possibilities SCRPAINT is accompanied by a number of ancillary utilities to add 
value to the screens generated. These are discussed further in one of the later 
sections.

  Text Screen Editing.

First of all, you might ask 'What use is a Text Screen Editor?'. I can't possibly 
give a comprehensive answer to this, but I can say what I have used SCRPAINT 
for in the past, and also provide a few pointers as to other possible uses.
Listed below are several examples, most of which you can study in action by 
using the enclosed files as indicated in each example.

  Batch (.BAT) file Screens.

Using a utility called SCRDISP.EXE enclosed with SCRPAINT, it is possible to 
design frontispiece type screens, instructions and even menus, which can then 
be displayed from a Batch file, using SCRDISP (and all in glorious technicolour!). 
SCRDISP also provides an easy and friendly facility for the key depression made 
to be tested for within a Batch file.
You can examine this process in action by running the .BAT file enclosed with 
SCRPAINT called RUNME.BAT.

  Better than BAT's.

If you use SDMC.EXE and SDMR.EXE then you can do far better than straight 
BAT's. For further info see the demos and the documentation file SDM.TXT.

  Usage in your own programs.

Using SCRPAINT, screens may be designed for use within your own applications, 
be they in BASIC, ASSEMBLER, or in fact almost any language which can output 
text to the screen.
As an example of this, you will find enclosed with SCRPAINT, a small game called 
MOLECULE.EXE where you have to determine the position of several molecules 
within a black box by firing rays at them, for which all the screens were designed 
using SCRPAINT and integrated with the code (written in 'C') from the .VRM output, 
processed through BIN2CODE.EXE to provide C code of the screen.

  Help and Documentation Screens.

SCRPAINT can also be used to design pleasing and effective help screens, as I 
hope the ones for SCRPAINT itself are, which need not be integrated with an 
application, but loaded in from files (again, as with SCRPAINT), thereby saving 
execution space with the negligible drawback of having to be read from disk 
(providing you have a hard disk of course!).

  Sign-on Identification Screens

Another ideal application is the design of Sign-on screens for identification 
purposes, ie. on Bulletin Boards or even on computer bootup, simply to say what 
the service is, and to look pretty as well.

  Editing Screen.

SCRPAINT's editing screen consists of a visible 24 line by 80 column area and a 
Status line which will show appropriate information. Although only 24 lines are 
visible SCRPAINT allows you to utilise the full 25 line screen, by flipping the 
status line to the top or bottom of the screen as required. Whenever a menu 
choice is required, a boxed list of the appropriate choices will appear at the top 
left of the screen.

  Status line.

The status line consists of 5 major portions, firstly the current cursor position, 
then various mode indicators, the current high ASCII graphic set, a small menu for 
use with a mouse, and finally the current colour/attribute in use. The left most 
portion of the status line will continually display the current row and column 
coordinates of the cursor, followed by an * if you are editing the alternate screen, 
or a dot if you are editing the primary screen.
The mode indicators are short text strings indicating that a particular editing 
mode is in force. These are from left to right:-
Ins	Insert mode is in force and any characters keyed will shift the rest 
of the current line 1 character to the right.
Up arrow	Indicates that the smart cursor is in force and next character keyed 
will be vertically above the current one.
Down arrow	As above but vertically below.
Left arrow	As above but characters will appear right to left rather than left to 
right.
Transp	Transparent mode is in force and any characters keyed will 
assume the colour/attribute which was already at that position.
Frame	Frame mode causes the cursor movements to draw a box type 
frame adjusting other matching characters as new ones are 
placed.
Paint	Paint mode causes the current colour/attribute to be used for all 
characters over which the cursor passes, without altering those 
characters.
The next portion of the status line consists of the numbers 1 to 9, 0 and the letter 
T each of which is followed by a special character. This is the currently selected 
graphic character set, and the numbers represent the function keys which will 
produce those characters. The T is the TAB key and allows enough characters in 
each set so that all framing characters can be represented in one graphic 
character set.
Right at the end of the status line is the word 'Colour' which will be displayed in 
the colour/attributes which are currently selected.

  Menus.

Whenever multiple options are available a menu block will appear at the top left 
corner of the screen. The required option may then be selected either by keying 
the appropriate high-lighted letter, or by moving the highlight bar to the 
appropriate entry using the up and down arrow keys, and pressing enter/CR. 
Escape will normally exit the menu with no action.
Mouse users can simply left click on the choice required, or right click to escape 
from the menu..

  General editing.

SCRPAINT accepts most of the fairly standard key combinations for editing text, 
with the exception of a few which are more appropriate to proper word processors. 
These key combinations are:-
Up arrow	Cursor up one line.
Down arrow	Cursor down one line.
Right arrow	Cursor right one character.
Left arrow	Cursor left one character.
Ctl Rt arrow	Cursor one word right.
Ctl Lt arrow	Cursor one word left.
PgUp	Cursor to top of screen.
PgDn	Cursor to bottom of screen.
Home	Cursor to left side of screen.
End	Cursor to right side of screen.
Ins	Go into Insert mode. Any characters keyed will shift the rest of the 
current line, from the cursor position on, 1 character to the right.
Del	Delete the current character and shift the rest of the line one 
character to the left.
Back Del	As above but delete the previous character.
Ctrl PgUp	Smart cursor up. Keyed characters will follow each other vertically 
up the screen until a cursor arrow key is used.
Ctrl PgDn	Smart cursor down. As above but vertically down the screen.
Ctrl Home	Smart cursor left. Keyed characters will appear right to left until a 
cursor arrow key is used.
Alt D	Delete the line upon which the cursor is currently placed, and 
shuffle up all lines below this. The new line of spaces created at 
the bottom of the screen will assume the current colour/attributes.
Alt I	Insert a new line above the line on which the cursor is placed. This 
new line will consist of spaces in the current colour/attribute and 
shuffle down all lines below.
When deleting characters from a line, the spaces which are created at the end of 
the line, will be created using the colour/attribute of the previous line end 
character, in order to preserve the appearance of the line.

  Editing modes.

  Paint mode.

Paint mode is entered by use of the Alt P key combination.
In Paint mode the current colour/attribute setting is used to set the colour/attribute 
for all characters over which the cursor passes, without altering the character 
representation.

  Transparent mode.

Transparent mode is selected by use of the Alt T key combination.
In Transparent mode any characters keyed will assume the colour/attribute which 
was already in existence for the character previously at that position.

  Frame mode.

Frame mode is entered by use of the Alt F key combination.
In Frame mode moving the cursor will cause a series of box type graphics 
characters to be laid down. These box graphics will, wherever possible, 
automatically link up to other nearby box characters, allowing tables and boxes to 
be drawn.

  Wide mode.

Wide mode is entered by pressing the Alt-W key combination.
On selecting Wide mode a file selection popup will appear, listing all files with 
the extension .FNT. These files contain the definitions large characters which, 
whilst in Wide mode (indicated by the letters Wi on the status bar) can be placed 
on screen by simply pressing the appropriate letter or symbol key.
Once you have selected a file, you will be prompted for the character to use to 
build the wide characters, at which point you may select from the full 0-255 
character set.
For example, with the supplied font file SCR3X3.FNT, if you press the 'a' or 'A' 
key whilst in Wide mode then the a 3 character by 3 character letter A would 
appear on your screen at the current cursor position and you cursor moved to the 
right by the new characters width.
Normally, spaces in the placed characters will overwrite existing characters and 
attributes on screen, but when in Transparent mode (Alt-T), these spaces will act 
as though invisible, and not overwrite.
If you wish to exit Wide character mode, simply press Alt-W again. The next time 
you use Alt-W it will remember the font you were using.
If, at any stage, you wish to change the wide font being used, press Alt-F2 which 
will bring up the file selection window again, for selection of a new font file.
For further information on creating font files, see the section on SCRPAINT font 
files.

  Insert mode.

Insert mode is entered by pressing the Ins key.
In Insert mode any characters keyed will be placed at the current cursor position, 
and shift the rest of the current line, including the character previously at the 
cursor position, 1 character to the right.

  Smart cursor.

 The smart cursor is available in all 4 normal directions, but is not relevant in the 
normal left to right typing of text, and is obtained by pressing the key 
combinations Ctrl PgUp (smart cursor up), Ctrl PgDn (smart cursor down), and Ctrl 
Home (smart cursor left).
 The smart cursor in effect replaces the normal consecutive placement of 
characters, whereby characters follow one another when keyed from left to right. 
With smart cursor up, down, or left, the character keyed is placed at the current 
cursor location, and then the cursor is moved in the direction indicated, ready for 
the next character to be keyed.
This makes it possible to key text vertically in both directions, or even back to 
front across the page.

  Saving Screens.

Screens produced using SCRPAINT may be saved in a multiplicity of formats, 
each of which is detailed below.
Where a save is made and a screen of that name already exists, then the 
previous version is saved with the same name and suffix, apart from the last 
character of the suffix, which is changed to a 'B'.
On selecting screen save, by either keying Alt-S or left clicking on the S in the 
status bar mouse menu, a menu will pop up asking for you to select the format 
required. Once this has been selected, another pop up window will appear, 
showing the current screen name if any, followed by the required prefix, and on 
the next line, the disk and path for the saved screen.
If you wish to save under the same name as loaded or previously saved, then 
simply press enter, else overtype as required and press enter. If you save as a 
new name and it already exists, a prompt will appear asking if you wish to 
overwrite the existing file.
NOTE: In previous versions there was an OBJect mode save which has now been 
dropped due to inconsistencies with various linkers etc. Instead, screens may be 
incorporated more effectively into an application by use of a companion utility to 
SCRPAINT called BIN2CODE.EXE. This utility will take any file and convert it into 
language code and data statements, which can then be incorporated and 
compiled into your normal source programs. See the separate document file on 
BIN2CODE.

  SCRPAINT internal format (.SCR).

Screens saved in this format are a compressed representation of the PC's video 
memory area, and as such will only work if the screen memory is at segment 
B800 for colour screens, and B000 for monochrome adapters.
This method, being direct to video RAM is almost the fastest way of displaying a 
full screen of information.

  ANSI format (.ANS).

Screens may also be saved as strings of ANSI escape sequences, for use where 
writing directly to the video RAM is not desirable.
These screens may simply be output to the console (or even typed from the 
command prompt) to be displayed.
If you are designing a screen for use where a prompt will follow the screen 
display, (ie. for a Bulletin board), then the one solution is to avoid using the top 
two lines, and to allow them to scroll of the top of the screen when the two line 
prompt (or whatever) is output, thereby retaining the required image. It would be 
better to mark the required screen, less two lines, as a block, and then save this 
as a block in ANSI format, which can then be typed as required.
The code used should provide quite compact ANSI files.

  BASIC binary save format (.BSV).

This type of saved screen can subsequently be BLOADed into the Video RAM 
area by a BASIC program by simply coding BLOAD "filename".

  Text format (.TXS).

It is also possible to save a screen as a pure set of text lines, each with trailing 
blanks removed, and terminated with Carriage return/Line feed as normal.

  Video Ram format (.VRM).

This format simply saves the screen in exactly the format that it takes in video 
memory ie. 4000 bytes consisting of interleaved characters and attributes. This 
type of screen may be written directly to video memory, when compiled into an 
application in conjunction with BIN2CODE.EXE.
This format may also provide some compatability with other screen painters.

  Loading Screens.

A variety of different format screens may be loaded into SCRPAINT for editing, 
each of which is detailed below.
When a screen type has been selected from the first menu, a second menu will 
appear for selection of the required screen file.
Use the UP and DOWN arrow keys to move the highlighted bar, or PGUP and 
PGDN to page, mouse users can right click on the words 'more' at top and bottom 
to scroll in the appropriate direction, and select a file by left clicking on it. 
The highlight bar may also be moved by use of the first letter of a file name. For 
example, if there are 3 files called S1.XXX, S2.XXX and S3.XXX, then pressing S 
once will move the highlight to S1.XXX, pressing it again to S2.XXX, again will 
move it to S3.XXX and finally pressing S again will move the highlight back to 
S1.XXX.
Once the highlight bar is over the file required, pressing Enter will load that file. If 
the highlight is placed over a Disk or Directory entry, then when enter is pressed 
the menu will change to show the files for that Disk/Directory.
Pressing Escape will abort the screen load.

  SCRPAINT internal format (.SCR).

This will straightforwardly load a screen for editing.

  ANSI format (.ANS).

To load in an ANSI format screen for editing you must have installed ANSI.SYS in 
your system, by placing the DEVICE=\DOS\ANSI.SYS statement in your 
CONFIG.SYS file. If you have not done this then you will be presented with a load 
of gobbledygook, rather than an intelligible screen.

  BASIC binary save format (.BSV).

This will straightforwardly load a BASIC .BSV screen for editing.

  Block loading (.BLK)

This will load in a previously save block, initially positioning the block at the 
same point from where it was saved, but highlighted as in the block move 
operation, allowing the block to be moved to the required position before pasting 
down using enter.

  ANSI Block load (.ABL)

As with straight ANSI screens.

  Text format (.TXS).

It is possible to load any text file into SCRPAINT, provided it is suffixed .TXS (if 
not then the DOS shell can be used to copy it).
The load procedure first displays an information panel detailing the procedure for 
loading, which is basically that the load will take place one line at a time, 
whenever the space bar is pressed. If the line just loaded is not required, then 
pressing the Del key will cause the next line loaded to overwrite the current one.
Pressing Carriage return at any time will terminate the loading process.
If more than 25 lines are loaded, the screen will start to scroll, losing the lines 
first loaded.

  Video RAM format (.VRM)

Restore a video RAM format screen directly.

  Block Operations.

SCRPAINT provides a host of options for manipulating blocks of the screen from 
simple copying to text justification.

  General Block operations.

Block operations are initiated via the Alt-B key combination which will have no 
effect initially, until the first corner is marked by pressing enter. If you are a 
mouse user, then block definition may be initiated by simply placing the mouse 
cursor wherever you wish to start a block and pressing the right mouse button for 
the first corner and again for the other corner.
Using the keyboard, the block can be marked out by placing the cursor (all the 
normal cursor movement functions are available) at one corner of the desired 
block, and pressing Carriage Return. The cursor should then be moved to the 
other corner of the desired block (once again, all normal cursor movement 
functions are available), and whilst this is happening, the block enclosed will be 
highlighted by flashing status colours.
Once at the desired opposite block corner, pressing enter will mark off the block 
and cause the main block menu to appear at the top left of the screen.
If multiple operations are being performed on the same block of the screen, it is 
possible to immediately select the previous block, by pressing Ctrl-PgUp (after 
pressing Alt-B), which will then immediately progress to the main block menu 
selection.
If block is marked out as being only one character cell, ie. Carriage return has 
been pressed twice at the same cursor position, or the mouse right clicked twice 
on the same place, then this will be assumed to mean the whole screen. This is 
useful when it is required to place a border round, or tile, the entire screen.
This menu contains multiple options which are as follows:-

  Box Block.

If this option is selected, then a secondary menu will appear asking for the border 
style to be used when boxing the Block.
If any of the first 5 choices are selected, then the block will be boxed using those 
standard box graphics, and you will be returned to normal editing. If the any 
character option is selected, then a further window will appear asking which of the 
characters 0-255 you wish to use to box the block you have |defined.
On making your selection, the block defined will be marked out by a box of that 
single character.

  Change characters.

This option will allow you to change all the characters within the defined area 
from one character to another. This is done by selecting the character to change 
on the character selection popup window, followed by the character that you wish 
to change it to.
This will have no effect on the colour/attributes on any changed characters.

  Copy Block.

When you select this option, the highlighted block will remain upon the screen, 
and it is now possible to move the highlighted block, containing a copy of the 
original block, around the screen using the cursor arrow keys or the mouse. Once 
the copied block is in the required position, pressing Carriage Return, or the left 
mouse button, will drop the block at that position and return you to normal editing.
If you with to make multiple copies, then whilst moving te block for copying, you 
may press the S key which will stamp a copy of the block, but leave you in block 
copy mode.
Mouse users may swap to the secondary screen by clicking the right mouse 
button, and back again as required.

 Delete Block.

When this option is selected, the block defined will be filled with spaces in the 
current colour/attribute.

  Edit Block colour/attributes.

This option allows the colour/attributes in  a block to  be changed from one 
combination  to another, without  affecting any other colour/attributes  in that  
block, or  any of  the characters.
Before selecting block processing,  you should set the current colour/attribute to 
the one that you wish to change from by either using Alt-A to directly set the 
colour, moving over a character whose colour needs changing and keying Alt-m 
(mimic), or for mouse users by moving the mouse cursor over a character of the 
right colour and double clicking the left mouse button..
When the  option is  chosen, a small secondary menu will appear asking if you 
wish to edit the Ink and Paper colours, just the ink colours or just the paper 
colours. Selecting these as required will have the obvious effect.
The  standard  colour/attribute selection panel will then appear in the 
colour/attributes that you are changing. The colour/attribute then selected  will 
modify every character  within the block  that contains  the original 
colour/attribute, according to whether Ink, Paper or both are to be modified.
This makes it possible to reset the background of a screen which is blue, with 
multi-coloured text, from blue to black without altering any of the text colours.

  Force Block colour/attributes.

This option  will  work in exactly the same way as Edit above, but 
colours/attributes for Ink, Paper or both, as selected, will be forced for all 
characters within the block.

  Invert colour/attributes.

As it says!

  Justify Block.

 This option  is used  to perform  various justification  options, as in the section 
on justification below.

  Move Block.

This option is similar to  the Copy option, but will  delete the original block as in 
the Delete option above.

  Paste save of Block.

The block  defined may  be  saved into  a Paste  buffer  for subsequent multi-
copying to the screen as required.

  Save

This option will save the current block as a SCRPAINT or ANSI format file for  later 
inclusion using the load  mechanism, which contains a  block SCRPAINT and ANSI 
load option.
This can be used for storing logo blocks, or standard screen sections as required.

  Tile

This option will request a character to be entered or chosen by use of the  arrow 
keys,  and this character  will then be used to tile the current block in the current 
attributes.

  Exit block process.

This option  may be  selected to  cancel the  current  block operation.

  Paste Save Restore.

When a block of the screen has been saved to the paste  buffer, it may be  
recalled at any  stage, by pressing  the Alt-F1  key combination which  will  
deposit  the copy  of  the  previously stored block  at  the  current cursor  position  
(top  left  of block).
If there is nothing in the paste buffer, or there is not enough room to place the 
copied block,  then an error message will  be displayed. The buffer will be 
emptied when requesting Help.
This block may then be moved around the screen using the cursor keys, as with a  
normal block copy, and  then deposited at  the required position using Carriage 
Return.

  Text/Character Justification.

When the justification option is selected from the block  menu, a secondary  
menu  containing the  justification  options  will appear at the right of the 
selection.
This menu contains 4 justification options which are  described below, but bear in  
mind that this  justification works on  all characters (except space that is), and not 
just normal text.

  Centre Text/Characters.

This option will centre all text/characters within the block defined, with no 
adjustments to existing spacing.

  Left Justification.

This option will  remove all leading  spaces from  character strings within the 
block, aligning them all at the left hand block edge.

  Normal Justification.

This option will cause character strings (words) within  the block to start at  the left 
hand block  edge and end at  the right hand block  edge, by  adjusting the  amount 
of  spaces between each character string (word) on a line.
Currently this will not try  to adjust very short lines,  or those ending in a fullstop, 
but because space padding starts at the left hand side, may cause a certain 
amount of spaciousness about the left hand text portion in certain cases.

  Right Justification.

This option will remove all trailing spaces from character strings within the block, 
aligning them all at the right hand block edge.

  Configuration Options.

SCRPAINT maintains a configuration file in the root directory, called 
SCRPAINT.CFG, which may be modified by using the configuration menu which is 
obtained by either keying Alt-N, or by left clicking on the N in the status bar 
mouse menu.

  Menu colours - Normal.

This option allows the main menu paper and ink colours to be set by use of the 
normal colour/attribute change pop-up window.

  Menu colours - Bar.

As above, but for the selection bar.

  Menu colours - Keys.

As above, but for the highlighted key letters of each entry.

  Menu colours - Inactive.

As above, but for the inactive menu entries.

  Status bar colours.

This option allows the colours of the status bar to be altered in exactly the same 
way as for menus.

  Frame style.

Selecting this option will bring up the pop-up window normally seen when 
selecting a boxed area frame, but with the character option inactive. This will set 
the frame style for all pop-up windows/menus.

  Tran/Inv markers.

SCRPAINT screens or blocks, which can be used with SCRDISP and SDMR, are 
rectangular areas, making drop shadows and holes impossible. To rectify this it 
is possible to specify any 2 character codes from 0 to 255 to represent 
Transparent and Invisible character positions.
A Transparent character position is one which, when displayed using SCRDISP 
etc. will not overwrite the underlying character, but alter its attributes to the ones 
displayed in SCRPAINT, allowing the 'greying out' of backgrounds for drop 
shadows.
An Invisible character position is fairly self explanatory, it simply will not 
overwrite the underlying character when displayed using SCRDISP etc. This is 
useful for the corners of drop shadows.
Both of these can be seen in use on the supplied demo.
Internally SCRPAINT will place a Transparent or Invisible character whenever you 
press Ctrl-T or Ctrl-U respectively (Ctrl-I is TAB so U is for Unseen!), but these will 
be the characters you specify in the configuration. These values are actually 
translated to 0 and 255 for Transparent and Invisible respectively, when a screen 
is saved.

  Help screen path.

This option allows you to set a path which will point to the Help screens 
SCRPAINT uses, so that they can be displayed when SCRPAINT is operating in a 
directory other than its own.
If this is set incorrectly, then attempting to display the help screens will produce 
an audible error indication.

  Snow checking.

On certain, older computer systems, direct writing to video memory causes 
extremely annoying flicker on screen. It is possible to alleviate this by clicking on 
this choice, but it will not take effect until you exit and restart SCRPAINT.
This WILL have a significant slowing effect on SCRPAINT's performance.

  Save and Exit.

Once you are happy with the adjusted configuration, select this option to save the 
configuration and exit back to normal  editing.
These settings are now saved for whenever you restart SCRPAINT again.

  Exit - no save

Exactly what it says, but leaving any changes in force until SCRPAINT is exited.

  DOS Shell.

Pressing Alt-F10, or selecting the > on the status bar mouse menu, will blank the 
screen, and place you at a DOS command line prompt.
This will not lose your current screen and allows you to carry out almost any DOS 
commands without actually leaving SCRPAINT.
In order to preserve as much memory as possible, SCRPAINT will save itself to 
disk first, and then shell to DOS, maximising your free memory by only using 9K 
whilst you are running in the shell.
Once you have finished, keying EXIT and pressing Carriage Return will return you 
to SCRPAINT, after reloading from disk, to exactly where you were last editing.

  SCRPAINT font files.

As has already been explained in the section on Wide characters, it is possible to 
place characters on screen, which are made up of a series of other characters in 
a shape approximating the required character/symbol.
This is achieved by providing a text file defining the required characters as a 
SCRPAINT font (.FNT extension) file, which follows the format detailed below:
The first line of the file must be a line starting with the word Flags followed by a 
space and then 3 characters. These 3 characters represent, respectively, the 
character to be used to indicate a space, the character to be used to indicate a 
filled character position, and finally a terminator character.
To explain this fully, lets take the start of a font file and two characters that are 
defined in it as an example.
-------------------------------------------------------------------------
Flags .#;
Char Aa
.#####.;     Semicolons can be used to put comments in
##...##;	or even to mark end of line if spaces required
#######;	or editor doesnt mark end of line as SCRPAINT required
##...##
##...##
Char F
FFFFFFF;	This character is an F	
FF.....
FFFFF..
FF.....
FF.....
-----------------------------------------------------------------
In this example, if this were the font selected, and SCRPAINT is in wide mode, 
then pressing the 'A' or 'a' would place a block character like the one following the 
line 'Char Aa', but with the dots replaced with spaces, and the hashes with the 
substitution character specified on first entering wide mode.
The terminator character can serve 3 distinct functions. Firstly it can act as a 
delimiter so that comments can be place after it. Secondly it is usefule if your 
editor doesn't terminate lines as SCRPAINT requires them and avoids 
incompatabilities, although if your editor places CR/LF on the end of each line this 
is not required. Third and finally, if you actually need to put in real spaces, some 
editors will trim these of, and placing a terminator forces trailing spaces to be 
retained.
Any other characters present within a character block will be placed exactly as 
they appear so that the F will always appear to be made up of a series of F 
characters as above, whereas the A will be made up of the character specified 
when Wide mode was invoked.
Sample fonts for 3x3 and 5x7 character sets called SCR3X3.FNT and 
SCR5X7.FNT should accompany SCRPAINT and will serve as good examples.

  Colour/Attribute control.

Below is a short summary of the various methods of colour/attribute control which 
may have been covered elsewhere in this manual.

  Changing current Colour/Attributes.

To change the current colour/attributes which are used for new characters, lines 
etc., press Alt-A or if you are using a mouse, left click on the sample colour area 
of the status bar.
This will produce the colour/attribute panel at the top left of the screen
To modify the ink/foreground colour/attributes, use the up and down arrow keys to 
change the colour, whilst pressing TAB will toggle to the paper/background colour 
for modification in the same way.
Another short menu is available to the right of this window, and the appropriate 
colour/attribute changes will take place when the first letter of the required 
selection is pressed, ie. F will toggle flashing on and off, B will toggle Bright on 
and off.
Normal, Invisible, Reverse and Underline are provided mainly for users of 
Monochrome screens, to enable them to quickly select appropriate settings. Each 
of these will attempt to act as a toggle, although this is not always possible.
At the bottom of the window, there are 3 lines, the first of which always contains 
the text 'Colour Sample', and will be displayed in the currently selected 
colours/attributes. The next two lines detail the colour/attribute setting in words 
and numbers. The words should need no explanation, but the colour numbers are 
explained as:-
No	The number representing the colour/attribute chosen
Fl	The flashing bit
Paper	The paper number from 0 to 7
Br	The brightness bit
Ink	The ink number from 0 to 7

  Editing Colour/Attributes in a block.

This has been covered in the section on block processing.

  Using existing Colour/Attribute.

A quick way of setting  the current colour/attribute to be  the same as  those of  an  
existing character is to position the cursor over that character and press the 
mimic colour key  combination Alt-M. Alternatively, users with a mouse may 
simply double left click over the character with the required colours/attributes.
The current colour/attributes will now be set to those of  that character.

  Modifying Ink or Paper only.

  Paint mode - Overtype Colour/Attribute.

When paint mode is selected via  the Alt-P key combination, wherever the cursor 
is moved will leave a trail in the currently selected colour/attribute.
This will  not modify  any  of the  characters over  which  the cursor is moved 
unless characters are actually typed.

  Monochrome screens/simulation.

In recognising that there are a lot of mono screens in use, and that displays 
should be exchangeable between colour or monochrome screens, 2 major new 
features have been added.
First, the colour/attribute selection window contains 4 entries directly selectable 
for the 4 main attribute choices on monochrome screens ie. N for Normal, I for 
Invisible, R for Reverse and U for Underline, as well as the F for Flashing and B 
for Bright.
Secondly, a useful fetaure for colour screen users who need to see if the screens 
they design will work on monochrome screens has been added. This is activated 
by pressing Alt-Y or left clicking on the Y in the status bar mouse menu, and will 
effectively display the screen as it would appear on a monochrome video.
The only difficulty is that Underlining can not be directly displayed, so to show 
underlined text, it is displayed in blue. One problem which can look odd, is that 
space characters can inadvertently have the underline attribute on, so any of 
these are higlighted using a bright, upside down, exclamation mark as an 
indicator and precautionary measure.

  Help screens.

Help may be obtained at most times by pressing the Alt-H key combination or, for 
mouse users, left clicking on the H in the status bar mouse menu. This will 
present a main Help menu screen, where pressing an Alt key combination will 
provide help information on that combination.
If you are using a mouse, then simply click over the area of interest, and if it is a 
topic, another help screen will appear. To return to the main help menu simply left 
click again.
To exit the main help screen,press escape, or for mouse users, left click on the 
exit message at the bottom of the screen.
Several general topics are also  available via the function keys as indicated on 
the right hand side of the main help screen.

  File formats for .SCR and .BLK files

A new feature of version 2 is file compression on the internal formats, but as 
these may be of value to someone, this is how they work, but if you want to use 
them I'll leave you to write your own decode and display routines (PS if you want 
to incorporate a screen elsewhere it's probably easier with this version to use the 
.VRM format).
Basically Screen and Block files are straight copies of portions of Video RAM, in 
the case of a screen the full 4000 bytes, for a Block, only those characters and 
attributes required.
But to make matters interesting, I have added compression to give significant 
space savings, which has been achieved by rearranging things so that all the 
characters come first, followed by all the attributes in order to give more scope for 
compression.
Anyway for a .SCR file, the first byte is the border colour, and the second byte is 
always 0. This should then be followed by 4 bytes set to $$ (dollar, pound, 
pound, dollar or in hex - 24,9C,24,9C or in decimal - 36,156,156,36) to indicate a 
compressed screen for compatability with version 1. This will then be followed by 
the compressed data as detailed below.
For a .BLK file, the first and third bytes containd the block width and depth, the 
second and fourth contain the row and column of the block when it was saved. 
This will then be followed by the $$ compression flag and screen data as 
above.
Compression is simply repeating character compression using binary zero as the 
compression flag. Where a binary 0 is found this will be followed by either 
another binary 0 indicating that there was a valid binary 0 at this point in the 
screen, or it will be followed by a 1 byte count of the number of occurrences of the 
character in the next byte. (like I said pretty simple).
The fun bit is that you must determine what the expanded length is going to be 
and when you reach that point in the expansion, swap over to expanding the 
attributes and interleaving these into the expanded characters, as is normal in 
video ram.
I hope this helps!

  Sample Programs, Screens etc.

  Sample Screens.

Enclosed with SCRPAINT, and if you have installed it,  probably  in a directory 
called SAMPLES, you will find a series of sample screens in the various formats 
which SCRPAINT can edit.

There are also  several programs/BAT's,  these being  a set  of demonstration 
BAT's for the .SCR, .BLK, .ANS and .TXS screen formats, and the executable 
programs to assist in their display

  Sample Programs.

  SCRWAIT.EXE.

This companion utility is primarily for use in BATch files where a screen saved in 
ANSI or text mode can be first typed, but in order to respond to the user in the 
batch file, a check needs to be made on the key actions. Please see the separate 
document file for this utility.

  SCRDISP.EXE.

This companion utility is primarily for use in BATch files and will redisplay a 
SCRPAINT generated screen or block with a set of powerful options to affect the 
display and check the users responses. Please see the separate document file 
for this utility.

  SCRCAP.EXE.

This is a memory resident text screen capture utility which will allow you to 
capture text screens from any other application and is a useful way of transferring 
screens from one screen designer to another. SCRCAP /R will remove this utility 
from memory if it was the last memory resident program loaded.

When the capture sequence of Alt-Left Shift-S is pressed it will prompt for a 
filename of upto 8 characters which it will then save as specified, with a suffix of 
.VRM. This screen may then be loaded into SCRPAINT, edited and saved in any 
format required.

  BIN2CODE.EXE.

This utility will process any binary/data file and translate the data contents it 
finds into a source statement for including in a module for any language. Please 
see the BIN2CODE.CFG file for an explanation of how this utility works.

  SDMC.EXE and SDMR.EXE.

These two utilities allow you to far surpass what can be achieved using BAT files 
and build almost full applications, within limitattions. Certainly very pretty and 
fairly sophisticated menuing systems can be designed with all the tailoring and 
personalisation you ever desired. Please see the file SDM.TXT and the demos for 
further information.



  Feedback.

Your contribution to the improvement of Freeware software is absolutely vital, so 
I would be delighted to hear any comments or suggestions or complaints, 
concerning any piece of software that you find under the 'Genetic (DNA) Software' 
name, including SCRPAINT of course.
To make your thoughts known you can drop me a line via snail mail as - DN 
ARMITAGE, 45 WALTON PK, PANNAL, HARROGATE, N YORKSHIRE, HG3 1EJ.
Thanking you in expectation of some feedback, hope you find this program of use.
SCRPAINT v2.2		Genetic (DNA) Software

- 14 -


