CONDOR Copyright 1993 by Larry Mears All Rights Reserved version 5.0 Version 5.0 adds FONT support 50 line text mode, FAST custom Assembler routines for some graphics modes. "Requires a 80286 or later, CGA, EGA or VGA." "Limited performance with anything less than VGA." --------------------------------------------------------- ANY program that supports "EXTERNAL" ANSI (ANSI.SYS) already has __INSTANT__ Condor support built it! --------------------------------------------------------- CONDOR is DONATION-WARE there are no limits whatsoever. If you use Condor please send $15 donation or if you can't afford that much send what you can to encourage updates to CONDOR. You can't count on the other guy to do it. Send a small check or money order to: Larry Mears 11027 Crestfield Dr. Huntsville, AL 35803 Disclaimer: There is no gaurantee as to the performance of CONDOR. The user assumes ALL risks involved from the use of CONDOR. TERMINAL, BBS, OFFLINE READER, DIGI Publisher authors it's REAL easy for you to have CONDOR graphics in your program! Please see How_to.txt Index Installation ............................................. 1 Description ............................................. 1 Syntax ............................................. 2 Constants ............................................. 3 Variables ............................................. 3 Aborting ............................................. 3 Condor in Text modes ..................................... 3 Alternate Attention Sequences ............................ 3 CONDOR COMMANDS R_ Resolution ............................................. 4 b_ Sound Effects .......................................... 5 C_ Color Set ............................................. 5 D_ Drawto ............................................. 6 E_ Text Fonts ............................................. 6 F_ Flood Fill ............................................. 9 H_ Hollow Set ............................................. 9 L_ Lines ............................................. 10 M_ Drawing Mode ........................................... 10 n_ Notes Play Pitches ..................................... 11 O_ Circle ............................................. 11 P_ Plot a Polymarker ...................................... 11 p_ Position Cursor ........................................ 12 S_ Setcolor Register ...................................... 12 s_ Screen Clear and Control ............................... 13 T_ Type of POLYMARKER ..................................... 13 t_ Timed Pause ............................................ 13 w_ Write Text ............................................. 14 X_ eXtended Commands ...................................... 15 Z_ Rectangle .............................................. 17 z_ Text Rectangle .......................................... 17 /_ Comment, REMark ......................................... 17 &_ LOOPing .............................................. 18 <_ INPUT Command ........................................... 20 ?_ ASK CONDOR (auto-detection) ............................. 22 ANSI Support .............................................. 23 -1- CONDOR Copyright 1993 by Larry Mears All Rights Reserved version 5.0 INSTALLATION ------------ Condor is a console device driver. To use it you add a line in your CONFIG.SYS file like: DEVICE=CONDOR.SYS If you have a line in your CONFIG.SYS file like: device=ANSI.SYS remove it. You can load CONDOR.SYS HIGH. Condor will slow text output at the DOS command line but in applications that use DIRECT text output, most of them, there will be no slow down at all CONDOR.SYS doesn't eat CPU time by just being in memory. USERS should also read and EDIT the ACCESS.BAT file to set their ACCESS CODE right NOW! SYSOPs must LOCK out the < INPUT on the BBS local side refer to page -16- Also see LOCK & UNLOCK.BAT DESCRIPTION CONDOR is a ANSI.SYS replacment of sorts. CONDOR enables your CGA/EGA/VGA computer to do bitmap style graphics ANY time from DOS or from any program that uses DOS CON: for text output. With ANSI style graphics you get low resolution blocky looking 80x25 graphics, with CONDOR you get from 320x200 to 640x480 pixel graphics and ANSI too if you want because CONDOR recognizes most ANSI commands and can execute ANSI commands even while in a graphics mode. CONDOR will enhance online communications with it's abilities. Terminal and BBS authors will be able to access CONDOR by simply going through DOS for text output, the faster DIRECT method only works in TEXT modes and will not access CONDOR.SYS In TURBO C a bdos(2,character,0); command is all it takes to give a terminal CONDOR graphics and sound POWER! With CONDOR 4.0+ it is NOW possible to DRAW a ICON and use CONDOR's X4/X5/X6 T and < commands to achieve POINT and CLICK operation of BBSs or the DOS command line. After you install CONDOR and reboot your system try the included demo files by simply typing them from DOS. Like: C:\TYPE wabbit.r16 (.r16)=resolution mode 16, or if you like you can just type DEMO and the batch file will execute all the demos by just using DOS's "TYPE" command, Condor is at DOS level! The DEMO uses EGA and VGA screen modes. -2- SYNTAX ... As most know ANSI uses a esc[pram;pramCommand sequence it might look like esc[31;42m CONDOR is very different it is buffered. You load Condor's buffer and then execute it. Condor has a 8003 byte buffer. To load Condor's buffer you use a sequence like esc{command,data:command,data: ... esc} the 'esc' part is really the escape character asci character 27. Condor code will look like this: esc{R6:C1,1:L0,0,639,199:t90:R3:esc} that only loads the buffer Use esc# to execute the buffer. The execute command actually wants a 3rd character from A-z ( ascii values 65 to 122 including the weird characters in between upper and lower case) but if it encounters a SPACE or LF or any ascii character out of the A-z range it executes as if it received a A. This is so Condor's buffer can be divided up into sub-blocks and the esc# command can execute a specific block. Sub-blocks are not required, they are a feature for repetive things like music. Sub-blocks within Condor's buffer begin with the { character and end with the } character. They don't have the esc character like the beginning and ending block markers for the whole buffer, although BLOCK A is actually the esc{ mark at the beginning of the Condor buffer. A Sub-block must have a { start marker but doesn't require a ending marker, in this case the { sub-block marker acts as a entry point in the buffer and will execute till it hits a } character so several { markers can share one } marker. The position of the { sub-block marker dictates it's name. By the way carriage returns and line feeds are striped from the buffer at load time but SPACES remain. MOST of the commands require that the computer be in a graphics mode too, so you set that with the R command. ( REPLACE esc with the escape character ) esc{R6:b1:} {L10,10,140,190: {b12:} {t48:R3:esc} To execute this in sequence you would go esc#A esc#B esc#C esc#D (spaces for clarity only) Block C would get excuted twice but with this setup you could enter at block C and skip B. If you wanted though you could execute in any order but for this to work right you need to execute that R6: command first. The R3: command brings you back to a text mode. You could go esc#A esc#B esc#D IMPORTANT!! MOST ALL DOS programs run in text mode so you should ALWAYS switch back when done with your graphic. You can use the 't' command to pause for a short display time then do a R3: back to text mode. This might be a little confusing but sub-blocks aren't required you could just go esc{R6:b1:L10,10,140,190:b12:R3:esc}esc#A and do it all in one block. Sub-blocks are just for added utility. Condor's buffer remains intact until another esc{ ... esc} is encountered, so you can execute it several times with the esc#A and only load it once. You might do some repetive things so Condor's buffer and sub-blocks can be really useful. -3- CONSTANTS range from 0 to 9999. Condor will only grab 4 digits, trying to pass it more will mess things up. If you did something like this L25555100,90,10,10: the 25555100 part would be interpreted as L2555,100,90,10,10: and that 2555 would be off screen anyway. VARIABLES only exist in the '&' LOOP they are x,y,+,-,! refer to the section on the '&' LOOP command for details. ABORTing... The USER can press the CTRL key to abort a 't' pause command OR to abort a '&' LOOP. A more drastic abort is the ALT key, it will abort a 't' pause and the '&' LOOP plus abort the buffer BLOCK being executed and reset the screen to the mode it was in at bootup, plus set the text color in graphics and text mode to value 7 white. CONDOR COMMANDS in TEXT MODES: A few commands can be executed in a text mode like the sound effect command 'b', BUT as soon as a command that's illegal in text mode is encountered in the Condor buffer, execution will cease and all commands in the buffer after the illegal command will not be excuted. However if you set the mode to a graphics all commands will execute. This feature that was put in to keep someone from executing a graphics command while in a text mode (causes lockups) BUT I wanted to allow access to certain commands from text modes because text output is much faster and you might just want a beep or blurp. Commands that can be executed in text modes are the '&' LOOP command, the 'R' resolution switch command, the 'n' musical NOTES command, 't' timed pause, the 'w' command WRITE text at column / row, the 'p' position text cursor at column / row, the 'C' color command, 'b' sound effects, the 'z' command write a rectangle of characters, 's' Text Area, 'E' FONT Effects, and '?' ASK CONDOR system information (auto-detection). ALTERNATE ATTENTION SEQUENCE: Condor 4.1+ has a command that allows a additional escape sequence. Command is #!(character) example : #!~ would make the ~ tilde work as well as the ESCAPE ASCII 27 character. This is for services that FILTER out the escape character. Note that the addtional escape character becomes undisplayable. Look for MORPH.EXE, a utility that will convert the CONDOR graphics files with esc's to POWER or TILDE. Also use a 's1:' after the 'R' command in the file like ^{R18:s1:b4:C1,12:L0,0,100,100:^}^# and keep the Condor BUFFER short so you can keep the BBS pause screen prompt out of the buffer ie the ^{ .... ^} part. CPAINT's XSAVE will attempt to save a graphic out with one line buffering, by attempt I mean "some" things just can't be jammed into one line, but LOT's can! -4- CONDOR COMMANDS R set Resolution syntax example R6: ---------------- Switchs screen resolutions. This is the Most important command since most Condor commands need to be in a GRAPHIC mode to work. The R command automatically adjusts characters for the screen mode. Sets the HOLLOWS to TRUE (circles and rectangles will not be filled). Sets the point,line, and fill colors to 1. Sets the character attribute to 7, that's white characters with black background, sets the DRAW Mode to REPLACE, sets polymarkers to POINT and polymarker size to 1, also sets the number of text lines to 25. The R command serves as a reset command of sorts as well as a resolution switching command. This command is supposed to have no effect if a value is passed greater than the video hardware can support, however I am unable to test this since I have only VGA. Command identifier = R Parameter = Graphics mode to set Parameter Screen Colors Type Video values Resolution Adapter 0 40x25 16 TEXT ONLY 1 40x25 16 TEXT ONLY 2 80x25 16 TEXT ONLY 3 80x25 16 TEXT ONLY 4 320x200 4 GRAPHICS+TEXT CGA 5 320x200 4 GRAPHICS+TEXT CGA 6 640x200 2 GRAPHICS+TEXT CGA 7 80x25 2 TEXT ONLY 8 N/A N/A N/A 9 N/A N/A N/A 10 N/A N/A N/A 11 N/A N/A N/A 12 N/A N/A N/A 13 320x200 16 GRAPHICS+TEXT EGA 14 640x200 16 GRAPHICS+TEXT * EGA 15 640x350 2 GRAPHICS+TEXT EGA 16 640x350 16 GRAPHICS+TEXT * EGA 17 640x480 2 GRAPHICS+TEXT * VGA 18 640x480 16 GRAPHICS+TEXT * VGA 19 320x200 256 GRAPHICS+TEXT VGA 20 360x480 256 GRAPHICS-ONLY * VGA *Custom Assembler Routines for SPEED EXAMPLE: esc{R6:L319,10,219,110:D419,110:D319,10:t48:b15:R3:esc}esc#A Another way: esc{L319,10,219,110:D419,110:D319,10:t48:b15:R3:}{R6:esc} esc#B esc#A If you went esc#A esc#B nothing would happen except sub-block B execution because the A block tries to draw lines and that can only be done if a GRAPHICS mode is set, which block B sets with the R6: command. -5- b sound effects syntax example b19: --------------- Plays sound effects using the computer's speaker. It's bells and whistle time! Command identifier = b Parameter = effect number Effect # Name: -------- ----- 0 pute 1 yonk 2 Wood Pecker 3 British siren 4 buzz 5 Laughing Alien 6 woops 7 click-pop 8 meep 9 barber shears 10 zip-whistle 11 hey 12 insect 13 boing 14 broken chime 15 pebble in puddle 16 beep 17 long oh 18 harmonics 19 pinball 20 buzz-zapper EXAMPLE: esc{b19:esc} esc#A esc{R6:b1:b14:b20:b7:t48:R3:esc}esc#A esc{R6:&0,20,1,0,b,1,x:R3:esc}esc#A ....................................................................... C color set syntax example C1,2: ----------- C = command identifier Selects the register number to perform the screen operation with. 1st parameter selects screen operation color to change. 0 = Polmarker color, used for the (P Plot command), and the < INPUT command. 1 = line color, used for the (L Line Command) 2 = fill color, used for the (F Fill commands and Z rectangle, and C circle ) 3 = text color, used with the ( w command ). 2nd parameter selects the register number 0 to 255 depending on the graphic mode. EXAMPLE esc{R19:C1,2:L0,0,100,199:R3:esc}esc#A -6- D line DRAWTO syntax example D149,99: ------------- D = command identifier Draws a line from the place the last place a line or point was drawn. Use the C command to change line color. 1st parameter = X coordinate 2nd parameter = Y coordinate EXAMPLE esc{R6:P10,10:D100,20:D50,50:D10,10:R3:esc} esc#A ....................................................................... E text FONTS syntax example E4: more below... ------------ E = command identifier Changes the way TEXT looks, works in text or graphics modes. Will set FONTs from ROM or Condor's internal default FONTs, also manipulate FONTs in whole or part to create new FONTs. Note that this command is meant for VGA cards but some of the things it does will work on EGA cards, experiment! Note: The EGA TEXT mode screen is 350 pixels high and the VGA TEXT mode screen is _400_ pixels high, while the VGA Graphics mode screen is 480 pixels high. Switch/INIT -> IF 1st parameter = 0 to 6 then no other parameters are required. Description of 1st paremeter actions are as follows: ( continued on next page) -7- 0 = SET Default ROM-FONT for current active video mode. This is like CONDOR has always done, ie choses the correct ROM-FONT for the active video mode to maintain 25 lines of text. EXAMPLE esc{E0:esc}esc# 1 = SET 8x8 ROM-FONT yields 50 text rows in VGA text modes, 43 rows in EGA, in graphics modes it varies. Use the 's' command to set the number of text rows. Max text rows are Y coordinate/8 EXAMPLE esc{E1:esc}esc# 2 = SET 8x14 ROM-FONT yeilds 28 rows of text in VGA text modes, 25 rows in EGA text modes, in graphics mode the number of text rows vary. Use the 's' command to set the number of rows. Max rows are Y coordinate/14 EXAMPLE esc{E2:esc}esc# 3 = SET 8x16 ROM-FONT yields 25 rows of text in VGA text modes, 21 lines in EGA text mode, in graphics mode the number of text rows will vary. Use the 's' command to set the number of rows. Max rows are Y coordinate/16 EXAMPLE esc{E3:esc}esc# 4 = INITIALIZE and make ALTERABLE FONT Active as a 8x8 Font using CONDOR's DEFAULT 8x8 Font. See ascii characters 146, 168 and 173 EXAMPLE esc{E4:esc}esc# 5 = INITIALIZE and make ALTERABLE FONT Active as a 8x14 Font using CONDOR's DEFAULT 8x14 Font. See ascii characters 146, 168 and 173 EXAMPLE esc{E5:esc}esc# 6 = INITIALIZE and make ALTERABLE FONT Active as a 8x16 Font using CONDOR's DEFAULT 8x16 Font. This is actually just the 8x14 font padded on the bottom with zeros, this will make more space between lines. See ascii characters 146, 168 and 173 EXAMPLE esc{E6:esc}esc# Load / ALTER : In DECIMAL -> IF 1st parameter = 7 AND 2nd parameter = 0 THEN Load FONT Definition in DECIMAL 3rd parameter = character height (in pixels max 16) 4th parameter = number of characters to define(max 255) 5th parameter = ASCII value of character to begin at Remaining parameters are DATA for the FONT represented in whole numbers base 10, where the character is a matrix of bits ie 0 = 00000000 255=11111111 The base ten form is more efficient than the binary form. (continued on next page) -8- EXAMPLE make ascii 65 "A" a solid BLOCK and ASCII 66 "B" a line A FONT has to be all the same height, first INITIALIZE the FONT with E4: to E6: depending on the FONT height you want, then alter only the characters you want to customize, then issue a ACTIVATE command "E7,2,x:" You can build a whole custom FONT but I wouldn't recommend it for ONLINE graphics since it would be 10K or so just for the FONT, a graphics presentation from disk would be better suited for that. esc{E4:E7,0,8,1,65,255,255,255,255,255,255,255,255:0,0, 0,0,0,0,0,255:E7,2,8:esc}esc# In BINARY -> IF 1st parameter = 7 AND 2nd parameter = 1 THEN Load FONT Definitions in BINARY 3rd parameter = character height (in pixels max 16) 4th parameter = number of characters to define(max 255) 5th parameter = ASCII value of character to begin at remaining parameters are DATA for the FONT, * = bit ON, ANY other character = bit OFF EACH character definition _MUST_ end with a @ EXAMPLE make ascii 65 "A" ascii 66 "B" a new look First use a E4: to set the alterable FONT to 8x8. esc{E4: E7,1,8,2,65, ---**--- --*--*-- -******- -******- -******- -******- ***--*** --------@ ******-- **--***- ******-- *****--- **--***- ******-- ***----- --------@ E7,2,8:esc}esc# Same EXAMPLE but without all the CR/LF's esc{E4:E7,1,8,2,65,---**-----*--*---******--******- -******--******-***--***--------@******--**--***- ******--*****---**--***-******--***-------------@ E7,2,8:esc}esc# Important ACTIVATE -> IF 1st parameter = 7 AND 2nd parameter = 2 THEN MAKE Loaded FONT Definitions ACTIVE on SCREEN. 3rd parameter = character height (in pixels max 16) Makes the FONT you created the FONT used on the screen. It's possible to load the FONT up and wait till you want to make it visible. You could load the character definitions while someone was looking at some graphics and reading text. EXAMPLE esc{E7,2,8:esc}esc# -9- F flood FILLs syntax example F600,10,1: or f600,10: ------------- F or f = command identifier 'F' Fills a area by replacing ALL colors starting at specified X,Y coordinates till it hits a border of a specified OPERATION COLOR. If the command used is the 'f' fill the color at X,Y is gotten and replaced with the fill color set by the 'C'olor command. The 3rd parameter is dropped for the 'f' command. 1st parameter = X coordinate 2nd parameter = Y coordinate 3rd parameter = (0 to 3) specified OPERATION COLOR: 0 for current point color 1 for current line color 2 for current fill color 3 for current text color EXAMPLE esc{R16:C1,12:C2,2:P100,10:D200,100: D0,100:D100,10:F150,90,1:t48:b15:R3:esc} esc#A ....................................................................... H hollow set syntax example H0: ------------ H = command identifier When on non solids are drawn, a circle will be drawn instead of a disk. Parameter 1=on 0=off EXAMPLE esc{R6:H0:Z10,10,100,50:H1:Z110,10,200,50: t90:b7:R3:esc}esc#A -10- L draw LINE syntax example L0,0,300,150: ----------- L = command identifier Draws a line between specified points. Use the C command to change line color. 1st parameter = beginning X coordinate 2nd parameter = beginning Y coordinate 3rd parameter = ending X coordiante 4th parameter = ending Y coordinate EXAMPLE esc{R6:L0,0,639,0:L639,0,639,199: L639,199,0,199:L0,199,0,0: L0,199,639,0:L0,0,639,199: t90:b19:R3:esc}esc#A ....................................................................... M drawing MODE syntax example M2: -------------- M = command identifier Parameter sets drawing mode. 1 = replace 2 = XOR Will not work in graphics mode 19. Effects anything drawn after setting but only after a C command. So you set M then do a C (color set) anything draw with that color will be drawn in XOR mode. XOR mode is good for drawing things on top of things because if you draw it twice the XORed drawing disappears leaving the background untouched! Because XOR makes the 'F' fill command go koo-koo XOR is disabled whenever a fill operation occurs. You have to set the color again with the C command to restore XOR mode after a fill. To disable the XORing altogether use M1: or do a res switch with the R command. Note that in graphics mode 20 XORing isn't auto-disabled, So use M1: to turn it off, I think you may find this useful is some cases. EXAMPLE esc{R6:M2:H1:C1,1:Z100,20,200,198: Z50,50,250,160:t90:b7:Z50,50,250,160: t48:b20:R3:esc}esc#A -11- n notes play syntax example: ------------- n0,4000,1000,1: or n1,0,9999,100,10,500,1: n = command identifier Uses your computer's 1 bit sound and speaker to play pitches from 0 to 9999 timed sustains with sound shut off flag. Or can play a PITCH FROM TO with STEP and delays between steps with trailing SUSTAIN and sound shut on off FLAG. IF 1st parameter is 0 then 2nd parameter = pitch, range(0-9999) 3rd parameter = sustain in 18.2ths of a sec range(0-9999) 4th parameter = OFF FLAG 0=leave playing, 1=shut off IF 1st parameter is 1 then 2nd parameter = FROM pitch, value range(0-9999) 3rd parameter = TO pitch, value range(0-9999) 4th parameter = STEP value, range(1-9999) 5th parameter = DELAY between STEPs 18.2ths sec(0-9999) 6th parameter = SUSTAIN when TO value reached 18.2ths sec 7th parameter = OFF FLAG 0=leave playing 1=shut off EXAMPLE: esc{R6:n0,1100,4,0:n0,1200,4,0:n0,1300,4,0: n0,1400,4,0:n0,1500,4,0:n0,1600,4,0: n0,1700,4,0:n0,1800,4,0:n0,1900,4,0: n0,2000,4,0:n0,2100,4,0:n0,2200,4,0: n0,2300,4,0:n0,2400,4,0:n0,2500,4,1: R3:esc}esc#A ....................................................................... O CIRCLE syntax example O159,100,75: ---------- O = command identifier Draws a disc or circle depending if the H command is active or not. This command does not do a aspect ratio, so the best circles will be in the 320x200 and 640x480 graphics modes. 1st parameter = X coordinate of circle center 2nd parameter = Y coordinate of circle center 3rd parameter = radius of circle EXAMPLE esc{R6:O319,99,40:t48:R3:esc}esc#A ....................................................................... P PLOT a polymarker syntax example P149,99: -------------------- P = command identifier Plot a POLYMARKER on the screen. Use the C command to alter the color. The 'T' command will change what's plotted. 1st parameter = X coordinate 2nd parameter = Y coordinate EXAMPLE esc{R6:T3,1:P100,100:P0,0:P40,188:t48:R3:esc}esc#A -12- p position cursor syntax example p78,24: ----------------- p = Command identifier Positions the text cursor at column, row. The max row is limited by the 's' command. 1st parameter = column (1 to 80 ) 2nd parameter = row (1 to 25 ) EXAMPLE esc{R6:p10,21:esc}esc#A ...................................................................... S setcolor register ------------------- S = command identifier Sets one COLOR register for CGA/EGA/VGA the syntax is different depending on the adapter and current graphics mode set by the R command. This command also can change the BORDER color and switch BLINKing on/off. Supports (R19:) 320x200 256 colors too. IF in a CGA graphics mode R6: R5: or R4: --- syntax is like: S1,1: 1st parameter selects which to alter a Color Palette or a BORDER and BACKGROUND change. 0=Set border & background 1=Set color palette 2nd parameter is color value for background & border (0-15) or color palette(0-1) to change to. IF in a EGA/VGA graphics mode R13: TO R18: ------- syntax is like: S0,2,63: to set a register syntax is like: S1,63: to set border color syntax is like: S2,1: to set blink flag 1st parameter selects which to alter color register, border color or blink To set a COLOR REGISTER: 1st prammeter = 0 2nd parameter = REGISTER number ( 0 to 15 ) 3rd parameter = Color Val(0-63) (0-15)R13:,R14: To set the BORDER COLOR: 1st parameter = 1 2nd parameter = color Val(0-63) (0-15)R13:,R14: To turn BLINK on/off 1st parameter = 2 2nd parameter = 0 blink OFF or 1 blink ON IF in VGA/MCGA graphics mode R19: or R20: VGA(360x480 256 colors) -------- syntax is like: S227,24,255,0: 1st parameter = color register number 0-255 2nd parameter = RED value ( 0 - 63 ) 3rd parameter = GREEN value ( 0 - 63 ) 4th parameter = BLUE value ( 0 - 63 ) -13- s Screen Clear & Control syntax example s0: or s60: ------------------------ s = Command identifier Clears the screen by resetting the graphics mode to whatever mode is currently selected or adjusts the number of text lines the screen has. This command will CLEAR the WHOLE screen, use a ANSI esc[2J to only clear the TEXT area set by 's'. This command is meant for graphics modes, it has some minor effects in text modes. Parameter = 0 to 80 IF this parameter = 0 then just CLEAR whole screen. IF this parameter greater than zero then set TEXT lines screen has: 80 lines max(using 8x6 font with 480 tall modes) 1 line minimum EXAMPLE esc{R18:L10,10,639,180:t32:b12:s30:t48:b17:esc}esc#A ....................................................................... T polymarker TYPES T3,4: --------------------- T = command identifier Sets the polymarker(shape) to use. EFFECTS the pointer for the < INPUT comand and the output of the P "plot" command. Use the C command to alter the Color. 1st parameter picks type of polymarker 0 = pixel 1 = up arrow 2 = cross hair 3 = 5 point star 4 = rectangle 5 = diagonal cross 6 = diamond 7 = rectangle + 8 = circle + 9 = trivit 2nd parameter = size of polymarker, range 1 thru 255 EXAMPLE esc{R18:C0,12:T3,10:P100,100:t48:R3:esc}esc#A ....................................................................... t Timed Pause syntax example t52: -------------- t = Command identifier Wait for specified 18.2ths of a second. You can pause up to 1092 units, which is one full minute. If the graphic is a on-line graphic put this near the end of it to avoid serial buffer overflow or keep the pause short. To ABORT a Pause the User can press the Ctrl key. Parameter = 1 to 1092 18.2ths of a second EXAMPLE: esc{R6:Z20,20,150,140:t52:b19:R3:esc}esc#A -14- w Write text syntax example w10,20,LOOK AT US NOW - by Joe Walsh@ ------------- w = Command identifier Writes a string of characters ending with a @ symbol at the column, row specified. It's VERY VERY important to end the string with @, If you don't this command will eat the the code after it! Pressing the ALT key may recover. The @ symbol can be printed only if it is the only character in the string to print, ie w10,10,@ would print the @ symbol at location 10,10. Also note that the : need not be used after the @ symbol. This command has full access to the screen even if the screen has been shrunk with the 's' command. Use the C command to change the text color. Note: This command will not work in R20: you must draw all text in that mode, for now... 1st parameter = column ( 1 to 80 ) 2nd parameter = row ( 1 to Max needed) 3rd parameter = string of characters ending with a @ EXAMPLE esc{R6:w10,20,Back to Humans - by Queen@t52: R3:esc}esc#A -15- eXtended Commands ----------------- Extended commands are invoked by a captial X and a number ranging from 0 to 9999. X COMMANDS are ONLY available while in a GRAPHICS mode! "Some values skipped to help hold slight syntax compatibility with IG and BIG." . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X4 DEFINE and LOAD ZONE data X4,0,0,0,79,49,3,f/L: ----------------------------- X4 = command identifier Defines a rectangular area and associates a string of characters with it, a ZONE. The string is sent to the keyboard buffer by the " < " command if the ARROW key option is used. Most MOUSE driver software can produce ARROW key values and ENTER when the left button is pressed, this allows "Point and Click" operation of remote systems or the sending of short commands to the DOS command line. Zone ID -> 1st parameter = zone number to define/load This is a number between 0-63 or optional value is 9999. If Zone ID is 9999 ALL Zone's retangular areas are defined as -1,-1,-1,-1 by Condor internally. This is to give a quick clean slate. When "Zone Loopback" is on the '<' input command will continue to poll a user until he selects a valid defined ZONE or hits the ESC key. examples X4,9999: X4,9998: Zone Loopback ON X4,9997: Zone Loopback OFF (default loopback OFF) No other parameters are required if Zone ID is 9999-9997. Define Rectangle -> 2nd parameter = upper left corner X coordinate 3rd parameter = upper left corner Y coordinate 4th parameter = lower right corner X coordinate 5th parameter = lower right corner Y coordinate Load string data -> 6th parameter = number of characters in string to transmit to the keyboard, maximum 4, this limit imposed to keep things like "FORMAT C:\" from being hidden in a graphic. 7th = the string itself with a ending : seperator, don't count the seperator as part of the string length required for 6th parameter. example esc{R16:X4,0,0,0,79,49,1,G:esc}esc#A -16- S Y S O P S & BBS USERs IMPORTANT!!!! X5 Input '<' COMMAND LOCK X5,3,8905,2345,1758: ------------------------- X5 is DIGITAL LOCK to turn ZONE input on/off for BBS LOCAL side, affects the '<' input command. ALL users set your ACCESS code. Replace the xxxx,xxxx,xxxx with a made up sequence. ie X5,3,1,8,1959: My birthday. Where xxxx = any number between 0-9999 esc = ASCII character value 27 USERS ---> "X5,3,xxxx,xxxx,xxxx:" SETS your INPUT Command lockout access code, this access code can only be set once at BOOTUP when all the ACCESS CODEs are at zero, further access to ANY X5 command requires YOUR access Code. ALL should set a ACCESS code! example-> ECHO ON REM - esc{R4:X5,3,xxxx,xxxx,xxxx:R3:esc}esc#A SYSOPs ---> This SETs access code and LOCKs out < INPUT. At BOOTUP execute in a TEXT file TYPE"ed" from your AUTOEXEC.BAT or turn ECHO ON and make it a REM line in AUTOEXEC.BAT, a sequence like: ECHO ON REM - esc{R4:X5,3,xxxx,xxxx,xxxx:X5,0,xxxx,xxxx,xxxx:R3:esc}esc#A SYSOPs ---> "X5,0,xxxx,xxxx,xxxx:" turns '<' INPUT OFF, This is done from a text file TYPE"ed" to CONDOR DON'T put this in a MENU! Put it somewhere only the SYSOP can SEE. This command shuts down the < INPUT command, you don't want the < INPUT command working on the BBS local side except to test a MENU you created. If you don't shut down the < INPUT command on the BBS side the BBS will wait forever for input from the sysop's keyboard! You must do this privately only where the sysop's Condor sees it, you don't want put it in MENU text and shut down < INPUT on the USER SIDE. SYSOPs ---> "X5,1,xxxx,xxxx,xxxx:" Turns the < INPUT command access back ON. Do this to make < INPUT work for Point & Click Menu TESTing. Then SHUT it OFF!!! example-> ECHO ON REM - esc{R4:X5,1,xxxx,xxxx,xxxx:R3:esc}esc#A See LOCK.BAT, UNLOCK.BAT, ACCESS.BAT for extra help. ....................................................................... X6 Set ARROW key Step Rates X6,12,10: --------------------------- X6 = command identifier Set the X Y step rates for the arrow key key movements of the pointer invoked by the < input command used with the ZONES. 1st parameter = X step rate range 1 to 32 2nd parameter = Y step rate range 1 to 32 EXAMPLE esc{R18:X6,16,10:esc}esc#A -17- Z Rectangle syntax example Z0,0,639,199: ------------ Z = Command identifier Draws a rectangle, you specify the upper left and lower right corner coordinates. Use the C command to change colors and the H command to draw a solid instead of a frame. 1st parameter = upper left corner X coordinate 2nd parameter = upper left corner Y coordinate 3rd parameter = lower right corner X coordinate 4th parameter = lower right corner Y coordinate EXAMPLE esc{R6:Z20,50,277,189:t48:b15:R3:esc}esc#A ....................................................................... z TEXT Rectangle syntax example z1,1,80,25,*: ----------------- z = Command identifier Prints a rectangle made of a specified character with the upper left corner and lower right corners specifed as column and row coordinates. You can get high ascii characters by holding alt and typing the ascii value on the numeric keypad. Useful is ascii 219 for FILLING large areas and then only using the slow F or f command to fill in the edges. 1st parameter = upper left corner COLUMN ( 1 to 80 ) 2nd parameter = upper left corner ROW ( 1 to 25 ) 3rd parameter = lower right corner COLUMN ( 1 to 80 ) 4th parameter = lower right corner ROW ( 1 to 25 ) 5th parameter = CHARACTER to make the rectangle with followed by the : just like a number value. EXAMPLE esc{R6:z4,3,8,12,X:t48:b18:R3:esc}esc#A ....................................................................... / COMMENT syntax example /Anything you like ending with a@ ---------- / = command identifer Use this to add comments inside CONDOR script. It has no effect and will not be printed to the screen. The Comment must BEGIN with a / and end with a @ Maximum length of a comment is /...127 characters...@ example esc{R16:b0:/We just set 640x350x16@R3:esc}esc#A -18- & LOOP a command(s) &0,198,6,0,L,4,0,0,x,y: -------------------- & = command identifier Loops a command a specified number of times with stepping, special options for XOR ing and the write text command. You can loop a chain of commands, see parameter 5, BUT you can't loop a loop. Still this command is very powerful and worth every effort to learn! Note: PRESS the CTRL key to abort a loop. 1st parameter = FROM value if FROM value bigger than TO value loop will detect and step backwards. 2nd parameter = TO value 3rd parameter = step value, positive number only. 4th parameter = DELAY roughly a 360th of a second between each step of the loop. 5th parameter = command Identifier to loop. optional specification character after 5th parameter instead of comma: | = XOR stepping @ = get text for w command everytime otherwise text written from loop with the w command is last text written with w command before the loop was executed. w command now ignores CR and LF so loop command can be used for easy written text placement with the loop's stepping. NOTE: (Chain Gang) If a > symbol is given here as a command identifer chain gang option is invoked. This allows multiple commands to LOOPed. Instead of one command specified for this parameter a string of command identifers are passed. The > to get CONDOR's attention to chain- gang, and ending with the @ FOLLOWED by a comma. Like this >CL@, C is at command position 0 L is at command position 1 The position of the command is the key to which command will be executed. There can be up to 128 (0-127) commands in this command string in any order you like. Example: switching line color and drawing lines too esc{R14:&0,636,6,0,>CL@,16,0)1,3:1)319,99,x,20:0)1,2:1)319,99,+2,20: t48:b11:R3:esc}esc#A You can replace the ) above with the commands themself (or any non-numeric character) like so: esc{R14:&0,636,6,0,>CL@,16,0C1,1:1L319,99,x,179:0C1,2:1L319,99,+2,179: t48:b12:R3:esc}esc#A ( continued on next page ) -19- 6th parameter = total number of parameters command(s) that are being looped requires. You are required to specify the total number the command(s) requires ie L command requires 4 , ie C command 2. If using the CHAIN GANG option a L command requires 5 parameters, a C command 3. You can specify multiples of the required number such as 8 or 12 for the L command, Maximum up to 2048, for LOOPing several L ine commands at once, this works sort of like BASIC's READ DATA statements between each LOOP step. REMAINING parameters = whatever the command(s) being looped requires. If you use a "x" as a parameter it will be stepped in the direction of the FROM TO values, use a "y" and the loop will step the value in a reverse direction. You can use both "x" and "y" at the same time. If you use a number it will remain as a constant for the command being looped through out the loop execution. You can preceed constants for a command being LOOPed with +,-, or ! +CONSTANT will ADD the CONSTANT to the x step value. -CONSTANT will SUBTRACT the CONSTANT from the x step value. !CONSTANT will SUBTRACT the x step value from the CONSTANT. syntax example &10,50,4,0,L,4,x,+90,!639,-2: LOOP example, Written text option: esc{R6:&1,7,1,0,w@2,25,x,A. Item 1@ B. Item 2@ C. Item 3@ D. Item 4@ E. Item 5@ F. Item 6@ G. Item 7@ t72:b4:R3:esc}esc#A Example of loop used to READ DATA and step within at the same time in both directions. esc{R6:&0,639,4,0,L,16,319,99,x,0:319,99:y,0:319,99,x,199:319,99:y,199: t52:b16:R3:esc}esc#A -20- < INPUT Command <1,0,1: ---------------- < = command identifier Gets input from user's keyboard and transmits it as soon as the LAST command in the Condor Buffer is executed. Should be used near the end of a MENU, as the BBS will continue to send to the terminal while the INPUT command is waiting on the user. This is so the BBS will be waiting for INPUT when CONDOR sends the user's response at buffer excution exit. The INPUT command is good for letting you use any resolution you want for a BBS MENU and then to issue some reset commands. Also the < input command can optionally INVOKE ARROW key routine for the X4 command so ZONES can be pointed to and clicked on, you must use X4 to define and load the zone strings first and you should use CONDOR to draw some borders(ICONS) around the zones so the user will know where and what he is selecting when he clicks on a ZONE, that way you have the job of cosmetics, that's half the fun anyway. The selected Zone's associated data string is transmitted to the BBS as soon as CONDOR executes the last command in it's buffer. ZONE 63 is the default ZONE, it's associated data string will be sent if no ZONES match where the user clicked. You should always define ZONE 63. PLEASE see command X5 and use it right away as the input command can hang up a BBS on the local side and should be LOCKED out except when a SYSOP is testing menus he made using the < command. You may find the X6 command useful too. 1st parameter = Transmitt carriage return at the end of the string INPUTted? 1 = YES 0 = NO 2nd parameter = type of INPUT 0 = One key, (hot key) 1 = String, with a return to end input from user, max string length = 14 2 = MOUSE ZONE, activate a POLYMARKER mouse pointer, use the " T " command to select mouse type and size and the " C " command to set mouse color. User moves mouse with ARROW keys and clicks on a "ZONE". The associated ZONE string is copied into INPUT's buffer to be transmitted to BBS at the end of the CONDOR buffer execution via the keyboard buffer. 3rd parameter = Output options 0 = Don't show input typed from user on his screen. Has no effect on Mouse ZONES. 1 = Show input typed from user on screen. Has no effect on Mouse ZONES. 2 = Show input but throw it away, don't transmit it at the end of the chain. Does effect Mouse ZONE. 3 = Don't show input from user, and throw it away too. Does effect Mouse ZONE. ( continued on next page ) -21- Note: If 2 ZONES areas are over lapping on the screen the ZONE with the lower value ID number will get selected when the mouse is clicked on both ZONEs at the same time. +----+--------------------+ user clicks in here ---> |ID=1| | ZONE 1 gets selected +----+ ID=10 | | | +-------------------------+ +----+--------------------+ user clicks in here ---> |ID=7| | ZONE 2 gets selected +----+ ID=2 | | | +-------------------------+ Note also that the mouse is driven by the ARROW keys, so the mouse driver has to produce these or user presses ARROW keys. simple example esc{R16:C3,12:w6,10,Press the ARROW KEYs then ENTER!@ w2,11,Pick a square! It could be a fancy ICON.@ X4,9999:X4,9998:C1,11: Z1,1,150,99:X4,0,1,1,150,99,4,left: Z160,1,350,99:X4,55,160,1,350,99,4,rite: X4,63,0,0,639,349,4,oops:X6,16,16: C3,14:C0,14:T3,4:<0,2,1:R3:esc}esc#A NOTE: Don't use POINT & CLICK ZONES in graphics mode 19. XORing doesn't work in that mode so the pointer will make a mess. No real harm but it looks bad. -22- ? Ask CONDOR ?0: ------------ ? = command identifier Asks the CONDOR device questions. It loads the reply into the keyboard buffer and it is as if the user typed it. Can be issued in TEXT mode. 1st parameter selects the question to ask. 0 = Ask Condor system info, CONDOR will TYPE in ASCII the version number it is, what video hardware it finds and the current video mode selected. A Condor response to a ?0: query esc{?0:esc}esc#A would look something like: V4.0:$I:*D: and interpreted by the HOST asker as Version 4.0:$Hardware I:*Current_mode D: HARDWARE CHART: --------------------------------------- $A: no display $B: MDA mono display $C CGA color $D (reserved) $E EGA color $F EGA mono $G Professional Graphics Controller $H VGA analog mono $I VGA analog color $J (reserved) $K MCGA digital color $L MCGA analog mono $M MCGA analog color VIDEO MODE CHART: Res Colors Type --------------------------------------------------- *A: 40x25 16 TEXT *B: 40x25 16 TEXT *C: 80x25 16 TEXT *D: 80x25 16 TEXT *E: 320x200 4 GRAPHICS *F: 320x200 4 GRAPHICS *G: 640x200 2 GRAPHICS *H: 80x25 2 TEXT *I: N/A N/A N/A *J: N/A N/A N/A *K: N/A N/A N/A *L: N/A N/A N/A *M: N/A N/A N/A *N: 320x200 16 GRAPHICS *O: 640x200 16 GRAPHICS *P: 640x350 2 GRAPHICS *Q: 640x350 16 GRAPHICS *R: 640x480 2 GRAPHICS *S: 640x480 16 GRAPHICS *T: 320x200 256 GRAPHICS -23- ANSI SUPPORT ------------ CONDOR supports ANSI escape sequences. You can't place ANSI commands in the CONDOR buffer and execute them BUT you can first switch to a GRAPHICS mode with a CONDOR Rx: command then draw some lines, what have you, with CONDOR and at exit don't do a R3: command. The ANSI commands will still work, the only thing is that you will not get the ANSI background colors and BLINKing characters, this is how you mix CONDOR and ANSI commands to get the best of both. If you switch back to a TEXT mode then you get the ANSI character's background color and BLINK. CONDOR's R3: switches to color TEXT mode 80x25. I left most of the cursor positioning work for the ANSI commands to save on memory, CONDOR has to fit in 64K to work and I want to expand it little in the future. ANSI COMMANDS SUPPORTED: ------------------------ ? = numeric value esc[?;?H Move cursor to line, column. If no parameters specified cursor is sent to HOME (1,1) esc[?;?f Exactly the same as the above command. esc[?A Move cursor UP. Moves cursor up by the number of lines specifed without changing columns. If cursor is at the top line this command is ignored. esc[?B Move cursor DOWN. Moves cursor down by the number of lines specifed without changing columns. If cursor is at the bottom line this command is ignored. esc[?C Cursor FORWARD. Moves cursor forward by the specified number columns without changing lines. If the cursor is at the rightmost column command is ignored. esc[?D Cursor BACKWARD. Moves cursor backward by the specified number columns without changing lines. If the cursor is at the leftmost column command is ignored. esc[s SAVE cursor position. Get current cursor position and remember it. Use the esc[u sequence to set cursor to saved position. esc[u RESTORE Cursor Position. Sets the cursor to the SAVEed position established with the esc[s sequence. esc[2J Erase the TEXT Screen. Clears the TEXT screen only as defined by CONDOR's 's' command and moves the cursor to HOME (1,1). -24- ( ANSI Commands Continued ) esc[K ERASE Line. Clears all characters from cursor positon to the end of the line. esc[?;?;?m Set TEXT Attributes, TEXT Foreground colors and TEXT Background colors. TEXT Attribute values: 0 = All attributes OFF 1 = Bold ON 4 = NO EFFECT 5 = BLINK ON 7 = REVERSE Video ON 8 = CONCEALED ON FORGROUND color values: 30 = BLACK 31 = RED 32 = GREEN 33 = YELLOW 34 = BLUE 35 = MAGENTA 36 = CYAN 37 = WHITE BACKGROUND color values: 40 = BLACK 41 = RED 42 = GREEN 43 = YELLOW 44 = BLUE 45 = MAGENTA 46 = CYAN 47 = WHITE The ANSI commands esc[?h, esc[?l, esc[code;string;...p are NOT supported. The ANSI esc[6 command used for ANSI auto-detect is not supported, SEE CONDOR's '?0:' command for CONDOR 4.0+ auto-detection. ----------------------------------------------------------------------- I hope CONDOR will make changes in digital publishing and the online world but it depends on you, DEMAND "EXTERNAL" ANSI support as AT LEAST optional in HYPERTEXT READERS, MAJOR TERMINALs and BBSs. EXTERNAL ANSI support provides your terminal or BBS with access to CONDOR.SYS In Turbo C this is as SIMPLE as bdos(2,character,0); that's all they got to do and CONDOR will respond!!! It's pretty lame of authors that won't do this, it's so easy ... see HOW_TO.TXT Note that the faster DIRECT TEXT output is just that TEXT output, it does not work in graphics modes!