Citect for Windows Version 1.01

This document contains important information that is not included in the Citect for Windows Documentation or in online Help.

This document contains important information that is not included in the or in online Help.


0.0 Upgrade Information

0.1 Version 1.0 to 1.01

1.0 Getting Started

1.1 Getting Started - Errata

2.0 User's Guide

2.1 User's Guide - Errata

2.2 Relative Paths

2.3 Netware Lite Configuration

2.4 Additional Report Format Specifiers

3.0 Cicode Reference

3.1 Cicode Reference - Errata

3.2 New Cicode Functions

4.0 Protocols

4.1 Protocols Volume 1 - Errata

5.0 Graphics Designer

5.1 Graphics Designer - Errata

5.2 Setting up the Graphics Designer

0 Upgrade Information

We recommend you should only run Citect with windows 3.1 or greater and DOS 5.0 or greater. Windows 3.1 gives faster performance and is more compatable with network software than earlier versions. When Citect version 1.1 is released, it will require windows version 3.1 or greater to run, so you should upgrade now!.

0.1 Version 1.0 to 1.01

This version fixes various minor bugs and adds some minor enhancements from version 1.0. You don't have to make any changes to your databases for this upgrade but you must recompile all your databases before running.

A problem you may encounter when upgrading is a change in the CITECT.INI file. Version 1.0 put some parameters under [CONFIG] when they should be under the [CTEDIT] section. Version 1.01 has fixed this bug and when you install version 1.01 it will move your parameters from [CONFIG] to [CTEDIT]. If you install on a network the install program will modify the CITECT.INI file of the computer you install on, but it cannot modify the CITECT.INI file of any other computer. You must modify the CITECT.INI file on any other computers on the network which share the same citect installation.

If you don't do this correctly CTEDIT will not be able to find your existing databases and CITECT runtime will say that NO DATABASES INSTALLED when it starts up.

If running on a network you must install this version on all machines before restarting your system. This version is incompatable accross the network with version 1.0, ie the client and server must both be version 1.01. If you try to use a mismatched version the client will not login to the server. The clients will report the hardware error NO SERVER COULD BE FOUND.

1 Getting Started (Manual Revision 1.0)

1.1 Getting Started - Errata

Page 7 - The README.DOC file has been renamed README.WRI.

Page 23 - Alternative way to switch off the search mode has been introduced.

To switch off search mode, either click on the [Search] box or select the [Search] button and then the [Cancel] button at the bottom of the search form.

Page 27 - Alternative way to undelete a record has been introduced.

To undelete a record, either click on the [Deleted] box or select the [Delete] button or press [Alt] + [D].

2 User's Guide (Manual Revision 1.0)

2.1 User's Guide - Errata

Page 61 - REAL Array[5,2] should read REAL ArrayA[5,2]

Page 62 - REAL Array[5,2] should read REAL ArrayA[5,2]

Page 103 - The trend tag file name will default to \CITECT\DATA\<name> not \CITECT\USER\DATA\<name>.

Page 107 - The example for calculating disk storage should read:

Bytes Required = 464 x 5 + 176 + ...

= 607296 bytes

Page 109 - When defining graphics pages, you must either have a page number 1 as the startup page, or change the default value in the parameter [PAGE] [Startup]

Page 133 - The default font for buttons is not system font but the button font.

Page 160 - The {TYPE,N} Field has an extra option "UNACKNOWLEDGED". The Field {COMMENT,N} is not available in all alarms, only on the summary display.

Page 161 - The summary display format length is 120 characters not 16.

Page 168 - The CICODE section of the example should read:


Print("End of Report")

Shift_Prod = 0; !Reset the Shift production tonnage

Prompt("Shift Report Complete");


Page 197 - If defining a disk unit then the unit address must specify the name of the disk plc file. If defining a memory unit then leave the unit address blank.

Page 198 - From startup mode, the text should read."The channel will remain unused until activated after a failure of its primary unit".

Page 205 - Appendix C - Parameters, Default Values.

Delete the " " from the string Default Values.

Default Value "C:\CITECT\BIN" is wrong.

Default Value C:\CITECT\BIN is correct.

Page 206 - Appendix C - Parameters, new parameters to [Alarm] Section.


This parameter, when set, will cause alarms that have become inactive and have been

acknowledged to remain in the OFF ACKNOWLEDGED alarm list until the operator

clears them from the list using the "AlarmClear()" function.

Default Value 0

Allowable values 0 (disable)

1 (enable)


This parameter changes the meaning of the AlarmDisable() function. Normally and

and by default, when an alarm is disabled it is no longer processed by the system.

This means that it will no longer appears in the alarm displays (except the disabled list),

it is no longer logged and no longer changes state with the PLC variable.

Setting this field changes the meaning of Disable in that the alarm is still processed and

logged but is no longer displayed on the alarm display lists, or summaries.

Default Value 0

Allowable values 0 (disable completely)

1 (disable display only)


This parameter is for use with the high resolution alarms. When set to 1 the alarms

are ordered to Millisecond accuracey when they become inactive as well as when the

become active. When set to 0 (default) the millisecond time is only read when alarm

becomes active.

Default value 0

Allowable values 0 (Use Millisec accuracy only when becoming active)

1 (Use Millisec accuracy for active and inactive transitions)


This parameter indicate what type of High resolution counter or millisecond timer

is being used in the PLC.

Default Value 0

Allowable values 0 (BCD millisecond timer)

1 (Continous counter)


This parameter is used to specify a list of hardware alarm error numbers that you are not

interested in and do not want the system to process. A list of error numbers can be specified

which will all be ignored by the hardware alarm system.

Default Value none

Allowable values comma seperated list of hardware error code.


The period at which the alarm and event data is saved to disk. To ensure that alarm and

event data is restored after a system crash or shutdown the alarm and event data is

periodically saved to disk. This value specifies the period at which the saving is done.

Note the smaller the period the greater system load.

Default Value 0 (disabled)

Allowable Values (seconds)


This is the path to the primary save file. There are two save files, usually one for each

of the two alarm servers. The SavePrimary path is the directory that this alarm server

will create its save file in. When restoring the most recent of the Primary andSecondary

save file is used.

Default Value [BIN] (the bin directory in the citect.ini file)

Allowable Values


The path to the secondary save file. This is only used when there are two alarm servers

active and should point to the save file of the other alarm server.

Default Value "" (none)

Allowable Values


This parameter determines the rate at which the alarms are scanned. A value of 500

(default) indicates that the PLC data will be scanned and the alarms processed every

500 milliseconds.

Default Value 500

Allowable values 0 to 60000


The SummaryMode allows you to specify how the summary event are to be logged to the

summary log device. The events can be logged in two different was. Either in order of

the time they went ON or in the order of the time they went OFF. For each of these

modes you can specify if the summary events are to be removed from the screen after

logging or should remain until removed with the AlarmSumDelete() function.

Default Value 0

Allowable Values 0 (log in ON time order and remove from list)

1 (log in ON time order but leave in list)

2 (log in OFF time order and remove from list)

3 (log in OFF time order but leave in list)


The allowable values for SummaryLength has increased from 1872 to 32,000. Note that each event takes 62 bytes of memory plus the length of the comment. So 32,000 events will take up at least 1.9 Mb of memory, you should have enough memory to keep these events in physical ram or reduce the number of events.


This parameter allows for the fact that the two alarm servers may not record an alarm

event at exactly the same time. This value is used when one alarm server tells another

server to perform some action on a summary entry. The first alarm server sends it's

recorded summary time with the second using that time +/- the Tolerance to find the

corresponding alarm summary in its table.

Default Value 10 (seconds)

Allowable Values


This parameter determines whether the alarm summary data is copied from the other

alarm server or not. Normally on startup the second alarm server will get all the alarm

and summary data from the first server. SumStartupCopy allows the summary data to

not be sent.

Default Value 1

Allowable Values 1 (Send data)

0 (Don't send data)

Page 217 - Appendix C - Parameters, [CtEdit].Data Default Value should be C:\CITECT\DATA.

Page 218 - Appendix C - Parameters, a new parameter in [CtEdit] Section.


The text editor used for Cicode and Report files.

Default Value Notepad

Allowable Values

Page 210 - The parameter [ANIMATOR].FullScreen is missing. This parameter enables citect to startup in the full screen mode. This option has the same effect as the DspFullScreen function.

Page 271 - The disk unit editor CTDISK is located in the \CITECT\BIN directory.

Page 235 - The [protocol].Watchtime parameter is in seconds not milliseconds.

Page 238 - The [Trend].Redundancy parameter should say 1(enable), 0(disable.

2.2 Relative Paths

When citect runs the current directory is set to the \citect\bin directory. This directory contains citect EXE files, DLL's and other internal data. You should not write data into this directory. If you specify a simple file name, one with no path, in the device database or other file function, that file will be opened in the \citect\bin directory. To solve this problem CITECT supports relative paths in the device database, trend database and any function which uses a file name, eg FileOpen, DspFileSetName, etc. The following relative paths are supported:

Prefix Physical Path

[data] x:\citect\data

[bin] x:\citect\bin

[run] x:\citect\user\<database>

To use a relative path to put a file in the x:\citect\data directory specify [data]:filename.txt. For example if CITECT is installed on the drive C: and the demo database is installed:

Relative Path Physical Path

[bin]:test.txt c:\citect\bin\test.txt

[run]:test.txt c:\citect\user\demo\test.txt

[data]:test.txt c:\citect\data\test.txt

You should use relative paths where possible as they make your database more portable. Eg if you move you database from drive C: to drive D: you will not have to change any device, trend or open function call.

2.3 Netware Lite Configuration V1.0

Note Netware Lite can only be used with Windows Version 3.1 (or later) and Dos Version 5.0 (or later).

To configure a Netware Lite Network for Citect:

Modify the AUTOEXEC.BAT file as follows:

















Modify the CONFIG.SYS file as follows:





SHELL=c:\ c:\ /p /e:1000


















Modify the CONFIG.SYS file as follows:





SHELL=c:\ c:\ /p /e:1000



When using Netware Lite you must choose either "No Network Installed" or "Microsoft 100% LAN Compatible" in the Windows setup.

The IPXODI.COM and LSL.COM supplied with Windows should be used with Netware lite, on all Machines.

Do not use INT 2, INT 9 or above and do not use a base I/O address below 300 for your LAN card unless you use VPICDA.386, - available from either Microsoft or Novell.

Use the NET setup utility to increase the number of client tasks in the Netware lite server configuration by 20 for each client connected.

Windows should be installed on the local drive of each Client and Citect can be loaded from the Server.

2.4 Additional Report Format Specifiers

{FF} Form Feed

2.5 Printers and Form Feeds.

The Windows print manager has been designed for page based printers, eg Laser printers and shared network printers. The print manager will not print anything on the printer until the entire page is complete then it will print the entire page. This is the best way when printers are shared on a network as it stops output from different uses becoming mixed.

However this is not what you want for alarm and keyboard logging. If you send alarm logging to this type of printer Citect will flush the data to the printer when the current page is full or the [DEVICE].FlushTime (default to 10 seconds) time has passed. So if you have one alarm occuring per minute, each alarm will be printed on a new page.

You may bypass the windows print manager by writing the output as a file. Set the device type to 0 (ASCII File) and specify the file name as LPT1.DOS, LPT2.DOS or LPT3.DOS. When you log to this device the data will be printed immediately on the printer with no extra form feeds.

For correct logging operation you should reserve one printer to be you logging printer, this should be a local printer and not on the network server. You may send any other non logging printouts, eg reports etc to a shared network or local printer.

3 Cicode Reference (Manual Revision 1.0)

3.1 Cicode Reference - Errata

Page 27 - The example is wrong. WHILE Current > 0 DO should be WHILE Current >= 0 DO, as the alarm record functions will return -1 for failure not 0.

Page 49 - The function ConstPi() function should read Pi().

Page 189-190 - The function TimeSecond should be TimeSec and the function TimeMinute should be called TimeMin.

Page 201 - The examples for the TrnGetTable() function should read as below. This function returns trend data at second period not minutes. Also the first element in the array must be passed, not just the name of the array.


REAL TrendTable1[100];

/* Defines an array of a maximum of 100 entries where the trend data is stored.





/* The values of trend tag "OP1" is stored in

Table TrendTable1.Data is stored at the

following times:

18/12/91 09:00:00 TrendTable1[0]

08:59:58 TrendTable1[1]

08:59:56 TrendTable1[2]



18/12/91 08:59:42 TrendTable1[9] */


! Get the average of the trend data.

Page 205 - The TrnSetPen() function should read;

Syntax TrnSetPen(AN,Pen,Tag)

AN The AN where the trend is located.

Pen The trend pen number:

-2 The first available pen

0 The pen currently in focus.

1...8 Pen1...Pen8.

Tag Trend tag.

If Trend Tag = ! then the Pen will be deleted.

Page 201-208 - When passing arrays to functions you must pass the first variable you want to access, not just the name of the array.

INT array1[10];

fn(Array1[0]); ! for the start of the array

fn(Array1[5]); ! start at 6th element

Page 214 - The WinNewAt() now supports an extra mode (16). This mode should only be used with child windows, eg mode 1 and 2. When enabled the keyboard echo, any prompts and error messages will be displayed on the parent window.

Page 214 - The example shows calling the function WinNew, this should be WinNewAt. Mode 4 should read, 'no maximize, minimize or system icons'.

Page 219 - The name of the third argument in the syntax should be value not default:

WndPutProfile(Group, Parameter, value)

Page 220 - The example shows the 0 parameter in the wrong function, should be as follows:

WndShow(WndFind("Microsoft Excel"), 0);

Page 226 - The following new Cicode error codes have been added:

303 INVALID AN The AN specified in the function is not defined.

304 FILE SERVER FAIL The citect has detected a file server fail condition and will switch to the standby file server.

305 AN CONFLICT Animation in conflict, you are trying to display two different types of animation on the same AN. For example a bar graph and a symbol.

306..308 RESERVED These error codes reserved for future version.

309 TREND DATA GATED The trend data requested was gated by the trigger expression.

3.2 New Cicode Functions

The following cicode functions were added after the cicode manual was printed.


Description Clears Alarms. Clears an acknowledged an off alarm from the active alarm list. If the alarm parameter "AckHold" is set to 1 alarms that go off and have been acknowledged will not be removed from the active list until this clear function is called.

Syntax AlarmClear(Mode, Value)

Mode.......The type of clear:

0........Clear a single alarm

The alarm where the cursor is positioned is cleared.

Value is not used and should be set to 0.

1........Clear a page of alarm

Set Value to the AN where the alarm list is displayed.

To clear the displayed page of all currently displayed

alarm lists, set Value to -1. To clear the displayed page

of the alarm list where the cursor is positioned, set Value

to 0.

2........Clear a category of alarms

Set Value to the alarm category (0-255) of the alarms to

be cleared. The alarm category 0 implies all categories.

Value can also be a group handle if a group of categoris is

to be disabled.

Value....Used in conjunction with Mode to specify the alarms to clear.

Examples [System Keyboard]

Key Sequence Clear

Command AlarmClear(2,0)

Comment Clear all categories of inactive alarms.


Description Displays the last unack alarms on the screen. You should use this function to display the last alarms on every page or whatever pages you require. This function uses less memory than the AlarmDsp function which should only be used for the alarm page.

Syntax AlarmDspLast(hAn, count, type)

hAn.......animation number to display last alarm

count....number of alarms to display. This argument is optional and if not specified will default to 1.

type.....Type of alarm to display(see AlarmDsp).

This argument is optional and if not

specified will defalt to 1.


! Display the last active alarms on AN 10



Description Gets alarm field data from the alarm record number. This function can only be called on the alarm server.

Syntax AlarmGetFieldRec(record, sField)

record.....Alarm record number

sField......Alarm field name



GetNameFromTag(STRING sTag)

INT record;


record = AlarmFirstTagRec(sTag, "", "");

IF record <> -1 THEN

sName = AlarmGetFieldRec(record,"NAME");


sName = "";





Description Changes the threshold of analog alarms by the alarm record number. This function can only be called on the alarm server.

Syntax AlarmSetThresholdRec(rec, type,value)

rec........alarm record number

type.......threshold to change (see AlarmSetThreshold) value to set



Description Appends a new blank record to the alarm summary. The {ONTIME} {OFFTIME} etc. data will have to be set using the AlarmSumSet() function.

Syntax AlarmSumAppend(sTag)

sTag.......Alarm tag to append.


! Append alarm to summary display



Description Set the execution mode of cicode tasks. This allows controling the write to local PLC image mode, the range check on the configured scales and echo error messages to user.

Syntax CodeSetMode(type, value)

type..............type of mode

0...Write to local PLC image

1...Check scales on write

2...Echo error message to user

value.............value of the mode, 0 disable 1 enable

Examples ! disable local image write

CodeSetMode(0, 0);


Description Copies a string to the windows clipboard. Once the string is in the clipboard any window program may paste the string.

Syntax ClipCopy(sText)

sText..............string to copy

Examples ClipCopy("put this in clipboard");


Description Pastes a string from the windows clipboard. If the clipboard is empty then a empty string will be returned.

Syntax ClipPaste()

Examples ! Get string from clipboard into sText

sText = ClipPaste();


Description Writes a line of text to the windows clipboard. This function allows you to write many lines of text to the clipboard. Call this function to write each line of text then pass a empty string to tell citect to write all the data into the clipboard.

Syntax ClipWriteLn(sText)

sText..............line to write, empty to close

Examples ClipWriteLn("first line of text");

ClipWriteLn("second line of text");

ClipWriteLn(""); ! complete write


Description Reads a line of text from the windows clipboard. This function allows you to read many lines of text from the clipboard. Call this function to read each line of text from the clipboard. When the end of the clipboard is reached a empty string will be returned.

Syntax ClipReadLn()

Examples ! Get first line of text from clipboard

sText = ClipReadLn();

WHILE StrLength(sText) > 0 DO

! do something with text


! read next line of clipboard

sText = ClipReadLn();



Description Get information on a trend definition.

Syntax DspTrendInfo(hTrend, type)

hTrend...........trend number

type...............type of trend info

0 type of trend 0 = line, 1 = bar

1 number of samples in trend

2 pixel height of trend

3 pixel width of trend

4 number of trend pens

Examples ! get the number of samples for trend 3.

nSamples = DspTrendInfo(3, 1);


Description Creates a history file for the given device. The current device file is closed and renamed to be a history file, then a new file is created.

Syntax DevHistory(hDev)

hDev............Device Number

Examples ! create history file



Description Control the device in a device specific way. The type and the data are dependent on what type of device is. dBase devices may be packed to physical remove deleted records or reindexed to regenerate the keys.

Syntax DevControl(hDev, type, sData)

hDev..............Device Number

type...............Type of command

Ascii device

not supported

dBase devices

0...reindex the device

1...pack the database file

Printer devices

not supported

sData.............Command data

Examples ! pack a dBase file device

DevControl(hDev, 1, "");


Description Zaps the given device number. If a database device all the records are deleted from the current database. If an ASCIIZ file the ASCIIZ file is truncated to 0 length.

Syntax DevZap(hDev)

hDev..............Device Number

Examples ! delete all records in database



Description Get error information. Returns extened error information on the last error that occured.

Syntax ErrInfo(type)

type................Type of error information

0 = animation number of error

Examples ! get animation number last error occured

hAn = ErrInfo(0);


Description Goto the given form number. The form will be displayed on top of all windows and the keyboard focus will be set to this form.

Syntax FormGoto(hForm)

hForm...............Form number

Examples FormGoto(hForm)


Description Sets the position of a form on the screen, before it is displayed. This function must be called after FormNew and before FormRead.

Syntax FormPosition(x, y, mode)

x......................X coordinate of form

y......................Y coordinate of form.

mode................future use, set to 0


hForm = FormNew("title", 20, 5, 0);

! display form at x=100, y=50

FormPosition(100, 50, 0);


Description Get the current user privledge. This allows you to write cicode functions which can control access via the users current priv.

Syntax GetPriv(priv, area)

priv.................priv level (1..8)

area...............area of priv (0..255)

Examples ! user must have priv 2

IF GetPriv(2, 0) THEN

! do operation here


Prompt("No priv for command");



Description Get DOS enviroment variable.

Syntax GetEnv(sName) of enviroment variable.

Examples sPath = GetEnv("Path");

! get the current DOS path


Description Set a idle time logout for the current user. If the current user does not execute a command for the given time, the user will be prompted. If the prompt is ignored then the user will be logged out. The idle time is specified in minutes, Specify -1 to disable the current logout timeout. Call this function from the Entry Command in the User database to specify each users individual idle times, or at startup if all users have the same idle time.

Syntax LogoutIdle(idle)

idle...............Number of minutes the user must be idle to be then logged out.

Examples LogoutIdle(20);

! Log the current user out after 20 minutes if no command is executed.


Description This function is similar to the StrToReal() function except that the function halts if it is passed an empty string. This function is useful if you want to check keyboard input from the operator to set control points. Eg it stops a setpoint from being set to 0 if the operator hits ENTER by mistake.

Syntax StrToReal(String)

String The string to convert.



Command SP123 = StrToValue(arg1);

Comment Set Setpoint 123 to value unless invalid value


Description This function converts the given time variable into the time at midnite of the given day (ie time at 0:0:0 of this day). This is useful when you must do calculations with the time and date.

Syntax TimeMidNite(time)

time The time variable.


timeNow = TimeCurrent();

! get the time variable at 7am today

time7am =TimeMidNite(timeNow) + 7*60*60;

IF timeNow > time7am AND timeNow < time7am + 10 THEN


Prompt("Wake Up!");



Description This gets information on the given unit number.

Syntax UnitInfo(unit,type)

unit The unit number.

type The type of info. of unit

1.....protocol of unit

2.....protocol address

3.....state, 1=running, 16=offline

4.....last generic error

5.....last driver error

6.....disabled flag

7.....statistics, min read time

8.....statistics, max read time

9.....statistics, avg read time


sName = UnitInfo(20, 0); ! get name of unit 20


Description Prints the given file to the printer. The file must be saved from the WinFile() function. This allows you to save a file then print it later.

Syntax WinPrintFile(sFile, sPort)

sFile.............file name

sPort............Printer port name LPT1:


! save image to disk then print.


! print to LPT1:

WinPrintFile("temp", "LPT1:");


Description Put a profile string into any INI file.

Syntax WndPutFileProfile(sGroup, sName, sData, sFile) of group of variable

sData.................variable data

sFile...................INI file name

Examples WndPutFileProfile(Name(), "What", "100", "USER.INI");


Description Get a profile string from any INI file.

Syntax WndGetFileProfile(sGroup, sName, sDefault, sFile) of group of variable

sDefault..............default value

sFile...................INI file name


! get this user startup page from


sStartup = WndGetFileProfile(Name(), "Startup", "menu", "USER.INI");


4 Protocols (Manual Revision 1.0)

4.1 Protocols Volume 1 - Errata

Page 37 - AB protocol I/O PORT Data Highway address should be 0 to 77 Octal

When declaring PLC arrays or remap variables the size of the array or

citect variable must be less than the maximum request length of the protocol. See the table below for the maximum length for your protocol.

Protocol Maximum Bit size

KE 1920

KT 1920


CCM 2048



TIWAY 2048










4.2 EISA Computers

EISA computers have the facility to disable interrupts from boards which are not configured correctly via the EISA configuration utility. If you are having no response from a Hardware Card check you EISA configuration for that card. If you still get no response try another interrupt.

If the board which you are using requires to use an interrupt which is being used by a COM port, the EISA configuration will move the COM port to another interrupt but you must also disable this COM port.

4.3 PCXI Digiboard

Page 219. Jumpers J2, J3 must be set to the 64K position not the 128K position. Set both jumpers between pins 2 and 3.

4.4 COMXI Digiboard

Page 221. Jumpers J5 to J13 should be J5 to J14

5 Graphics Designer (Manual Revision 1.0)

5.1 Graphics Designer - Errata

5.2 Setting up the Graphics Designer

The graphic editor is a DOS application and so does not use the windows display drivers, it uses a driver called CITECT.DSP in the c:\citect\bin directory. When citect is setup the standard IBM VGA driver is installed. If you want to use another driver, copy from list below to the CITECT.DSP file. The mode of the graphic driver is set in the CITECT.INI file under [draw].mode. The following drivers are supplied with citect. For extra drivers contact Citect Techinical Support.

File Name Description Mode


AHDCMPQ.DSP Compaq 256 VGA 0=(640x480x256)

AHDTL4L.DSP Tseng ET-4000 2=(640x480x256)



AHDIBMX.DSP IBM XGA 0=(640x480x256),


AHDTIGA.DSP TIGA 2.0 0=(depends on card)

The printer driver is called CITECT.PRT in the c:\citect\bin directory. When citect is setup the printer driver is set to Epson Compatible 8 bin B/W printer. If you want to use another driver, copy from list below to the CITECT.PRT file. The setup of the printout is set in the file Printer Attribitue file CITECT.PAT, a PAT file is set up for each of the supplied printers. The following drivers are supplied with citect. For extra drivers contact citect techinical support.

File Name Printer Driver

AHDBW8.PRT Epson Compatible 8 pin B/W

AHDCO8.PRT Epson Compatible 8 pin Colour

AHDBW24.PRT Epson Compatible 24 pin B/W

AHDCO24.PRT Epson Compatible 24 pin Colour

AHDDJET.PRT Hewlett Packard Deskjet

AHDLJTP.PRT Hewlett Packard LaserJet

AHDPJET.PRT Hewlett Packard PaintJet

AHDPJXL.PRT Hewlett Packard PaintJet XL

To use the Hewlett packard LaserJet printer copy the printer driver and PAT file to the CITECT files. Note that all the files in the \citect\bin directory are read only, so you must first use the ATTRIB command to make them read/write. The following DOS commands will install the HP LaserJet Printer:








5.2.1 Printer Attribute File Format

The CITECT.PAT file controls the printout from the graphic editor. Most of the options may be set to -1 which means to take the default value. The file has the following format:

Line Description

0 Width of output in dots

1 Height of output in dots

2 Image orientation 0=normal, 1=landscape

3 Black/white reversal 0=yes,1=no

4 Threshold value 0..255

5 form feed 0=yes, 1=no

6 BIOS/DOS flag

7 Dots per inch (depends on printer)

8 Number of copies

9 Centering 0=yes, 1=no

10 X offset in dots

11 Y offset in dots

12 Printer ID

13 COM Port

14 Process ID for EMS

15 Bold Printing

16 Parallel port 0=LPT1,1=LPT2,2=LPT3

17 Image size

18 Colour Correction

19 Halftone method 0=no dither, 1=magic square

20 Hue adjustment

21 Saturation adjustment

22 Page size

23 Horizontal page size

24 Vertical page size