
A summary for those that haven’t been keeping up with this series:
I found a number of 5.25″ disks at a thrift store a number of years ago. I finally got around to acquiring a 5.25″ disk drive and extracting the contents a while back. Since then I have been posting the contents here.
Based on the contents, at least some of these disks were apparently once owned by someone named Connie who used to run the “Close Encounters” Special Interest Group (SIG) on Delphi in the mid 1980s.
A specific definition of this SIG was found in a document on one of the disks: “This SIG, known as ‘Close Encounters’, is a forum for the discussion of relationships that develop via computer services like the Source, CompuServe, and Delphi. Our primary emphasis is on the sexual aspects of those relationships.”
This service was text based and was accessed via whatever terminal program you used on your computer to dial in to Delphi’s servers. Many of these disks have forum messages, e-mails and chat session logs. All of this is pre-internet stuff and I don’t know if there are any archives in existence today of what was on Delphi in the 1980s. In any case, much of this stuff would have been private at the time and probably wouldn’t be in such archives even if they existed.
This post includes the contents of FORMS.DOC which is dated December 31st, 2107 which obviously can’t be right. The date and time was probably not set correctly when this document was created/downloaded. The date of this document on Delphi was 25-SEP-1985. This document describes the forms system on Delphi which allowed you (or at least admins) to create text documents that allowed user input/response. This looks like a another terminal capture and it also includes several examples of forms on Delphi.
See the previous post here.
===
FORMS.DOC
===
read forms Name: FORMS DOCUMENTATION - VERSION 1. Type: DOCUMENT Date: 25-SEP-1985 17:33 by CHIP Size: 33205 This is the latest version of the FORMS Documentation. It includes all enhancements in the forms program up to September 24, 1985. Keywords: SPECIFIC AREAS, FORMS, TEXTRIEVE ACTION> dis FORMS SPECIFICATIONS VERSION 1.0 I. The GVC Forms system is designed to be a powerful and friendly method of gathering and distributing highly specific information from users. Users are presented with explanatory text and questions that are completely under the control of the forms designer. At any time during the process of filling out a form, a user can press CTRLZ to enter REVIEW mode. At the REVIEW> prompt, a user can scan his previous answers, change any of them, leave the form, or return to where he was when he typed CTRLZ. II. Some uses of the forms program are: i. Catalogs and Online Ordering ii. Surveys iii. Request Forms iv. User Feedback v. Convention, Seminar or Warrenty Registration vi. Database Data Entry vii. Password-Protected Text III. The forms program is integrated with GVC's proprietary Textrieve system. Forms are placed in Textrieve in the same manner that text is enterred, using the POST command (i.e. POST <return> or POST filename <return>). The Textrieve area must be configured by GVC personnel to accept forms. However, any text enterred into a forms-configured area that does not have .FORM at the start of the first line will be treated as regular text. IV. After a form is designed and loaded into the system, the designer should immediately run the form. If there are any errors detected by the system, they will be displayed during the operation of the form, and the form will abort before allowing users to enter information. The forms designer Page 2 should look at the error notices, find where the mistakes were made and fix them, continuing this process until the form is operating properly. V. Completed forms are processed via electronic mail. They are sent immediately to the username(s) specified by the forms designer. If the forms designer so designates, the user can have a copy of the complete form sent to his own mailbox. VI. A form can contain a maximum of 255 questions and comments. A question can have a maximum of 255 characters (with no carriage returns). A text response can have a maximum of 255 characters (with no carriage returns). VII. The following dot commands (dot commands have a period "." in the first column followed by a command word) can be used in a form. Commands in parentheses are the acceptable abbreviations for the command. As with GVC's text formatting commands, users will not SEE these commands. Character capitalization (upper vs lower) does not matter to the commands. However, case does affect how the text is presented to the users. i. .FORM This command must be at the top of the form. If it is not there, the form will not be processed, and the user will be presented with the commands rather than with the form itself. On the line following the .FORM should be placed the Form Name. The Form Name will be the "Subj:" when the form is sent via electronic mail. Form Name can not be on more than one line. It has a maximum length of 255 characters. For example: .FORM Widget Order Form <= Form Name When a form is created or altered, it should be tested. To properly test a form, place a "/" i front of the Form Name. Then run the form. The "/" will put the program into Test Mode and tell the program to run a more complete diagnistic on the form. When you are satisfied that the form is working properly, remove the "/". The forms program will operate in Test Mode, but it will be somewhat slower for the user. ii. .QUESTION (.QU) This command is followed by a question name (15 characters max, with no ">", "<" or "/") and by the actual text of the question (255 characters max). For example: Page 3 .QUESTION Last name <= Question Name What is your last name? <= Question If the question is omitted, the question name is used to prompt the user (followed by a colon). For example: .QUESTION Last name In this example, the user would be prompted: LAST NAME : If you wish to restrict the size of the response to something less than 255 characters, you may put the character limit in <>'s after the .QUESTION (with no spaces in between). The limit must be between 1 and 255 inclusive. For example: .QU<25> LAST NAME What is your last name? The above example will ask the user to reenter his response if the initial response is longer than 25 characters. It will inform him of the 25 character limit. iii. .YESNO (.YN) This command is followed by a question name and question that is to be answered with a yes or a no (y or n). If the question is omitted, the question name (followed by a colon) is used as the prompt. For Example: .YESNO Same address Do you want it shipped to your billing address? (y/n) iv. .MCHOICE (.MC) and .CHOICE (.CH) This command is followed by a question name and a question requiring the user to select between several choices (20 choices maximum, 255 characters max per choice). As with the text of a question, the case of the letters in the choices determines the case that is displayed to the user. The choices are placed after the dot command .CHOICE (.CH). For example: .MCHOICE Education How much education have you had? .CHOICE None Page 4 .CHOICE Grammar school .CHOICE High scholl .CHOICE College .CHOICE Graduate School A special case of the .MCHOICE command occurs when the last choice is OTHER. .MCHOICE Sex What is your sex? .CHOICE Male .CHOICE Female .CHOICE Other In the above example, if the user selects OTHER, he will then be prompted: Please explain : His explanation will be used as the response (rather than the word OTHER). v. .COMMENT (.CO) and .END COMMENT (.ECO) This command is follow by text that is to be displayed at any part of the form during the filling-out process. The command .END COMMENT (.ECO) will signify end of the text. Text placed in here will be treated the same as other outputed text (i.e. text-formatting dot commands will be recognized). There is no limit to the amount of text that can be put within a comment. For example: .COMMENT .center ELEPHANT ORDER FORM .blank .indent 4 This form allows you to place your order for African and American elephants. Elephants will be shipped freight-collect (Collars, leashes and riding baskets not included in price). .END COMMENT vi. .INTEGER (.INT) This command forces the user to respond with an integer. For example: Page 5 .INTEGER STORIES TALL How many floors are there in your office building? If the user responds with something other than an integer, he is asked to enter a whole number or integer. vii. .DOLLAR (.DOL) DOLLAR is similar to .INTEGER except that it requires the user to respond with an answer that is in dollars. It will accept any number with between 0 and 10 decimal places and convert it to 2 decimal places. If the user types in a non-numeric character, he is asked to reenter his answer in dollars. viii. .DATE DATE requires the user to enter a date in the form mm/dd/yy, m/d/yy, mm-dd-yy, mm/dd/y, etc. It will also accept responses such as Next Tuesday and Yesterday. It produces an 11 character string in the form dd/mmm/yyyy. For example: .DATE departure When would you like to leave? In the above example, if the user responds with 4-5-88, the system will convert it to 04-JAN-1988. If the user enters less than complete information, the system assumes the nearest date in the future that contains the information passed. To have the system assume a date in the past, use the <past> qualifier. For example: .DATE<past> birth date When were you born? ix. .PASSWORD (.PW) PASSWORD is used to test a users knowledge of a certain word or phrase. .PASSWORD must be followed by a //YES or //NO (see below). If the password is entered correctly, the system is set at YES for the condition statement. When the user types in the password, it is not displayed on his terminal. At a later point in the form, if a user does a scan, he will not be shown the password (as he would be shown any other response made on the form). The actual password is the Question Name. It is restricted to 15 characters maximum. A Question MUST Page 6 following the Question Name. Remember, the Question Name is not public information in this instance. For example: .PW //NO //QUIT AAARDVARK What's the secret animal code name? In the above example, if the user does not type in AARDVARK, he is taken out of the form (see //YES, //NO and //QUIT described later in this text). x. .TEXT (.TX) The .TEXT command allows the user to enter more than one line of text in response to a question (up to a maximum of 20 lines). He concludes his text input with a CTRLZ to enter, or a CTRLC to reenter. He is given a prompt similar to the mail prompt which explains these commands to him. After the text has been enterred, the user can go back and replace a single line or the whole response. xi. .DISPOSE (.DS) This command is used to specify what is to be done with the completed form. It must be used and should appear only once. Username(s) are placed on the line following this command to specify mail addresses where the form is to be mailed. //KEEP can be used to signify that the user can have a copy of the form sent to his mailbox. Two examples: .DISPOSE WES JOHNWG .DISPOSE MARCJ //KEEP In the first example, the form will be electronically mailed to usernames WES and JOHNWG. In the second example, the form will be electronically mailed to username MARCJ. The user will be asked whether he wishes to have the form sent to his mailbox. If he responds affirmatively, then the program will mail him a copy of the completed form. If the form is to be placed in a file the //FILE= option is included. For example: .DISPOSE //FILE=GARBAGE.DAT Page 7 In the above example, the form would be copied to file GARBAGE.DAT. xii. .OUTPUT (.OP) and .END OUTPUT (.EOP) If a specific format for the form that is actually sent is required, then the .OUTPUT command must be used. If .OUTPUT is ommitted, then the output will be in structured with each question name followed by the user's response in the order that the questions were asked. All text that is placed on lines following the .OUTPUT command is treated as text that is meant to be included in the output form, with the following exceptions: i. //question name// Anywhere this appears, the system substitutes the actual response to the question. For example: My favorite color is //favorite color//. The above would put the response to question about favorite color into the sentence. If the user said RED, then in the outputed form, the sentence would read: My favorite color is RED. The question name only has to be long enough to make it unique. If FAVORITE COLOR is the only question name beginning with an F, then //F// would also work (although it might be confusing to the manager who is debugging or editting the form). A special case of the //question name// is used if the users username is to be inserted into the form. Then the format is: //*USERNAME// A second special case of the //question name// is used if the current date is to be inserted into the form. The date will be inserted as dd-mmm-yyyy (11 characters). The format is: //*DATE// A third special case of the //question name// is used if the current time is to be inserted into the form. The time will be inserted as hh-mm (5 characters) where hours are on a 24 scale and the time is system time (Eastern time). The format is: Page 8 //*TIME// If a fixed amount of characters is to be set aside for the response, such as in a list, then the format is //question name<width,jusification>//, where WIDTH is the number of characters allocated for the form and JUSTIFICATION is how the response should be positioned within the allocated space (L for left justified, R for right justified and C for center justified). A few examples: //price<10,R>// //title<80,C>// //last name<30,L>// In the first example, the response to the question about price is right justified within the 10 characters allotted to the response. In the second example, the response to the question about title is centered on the form. In the third example, the response to the question about last name is left justified within the allotted 30 characters. If the length of the response exceeds the allotted width, then all spaces within the allotted area are filled with asterisks ("*"s). ii. .PRINTIF and .END PRINTIF The .PRINTIF command is used to decide whether a group of lines should be included in the output. If the condition following the .PRINTIF command is satisfied, then all text following it will be included in the output. If the condition is not satisfied, then all text following the .PRINTIF command but preceding an .END PRINTIF command will not be included (in either case, the .PRINTIF and .END PRINTIF themselves will not be included in the output). The .PRINTIF command has two formats. 1. .PRINTIF<question name> In this format, if the question was responded to with anything other than a blank, then the subsequent lines will be included in the output. 2. .PRINTIF<question name response> In this format, if the response to the question is the same as the response in the statement, then the condition is true and the subsequent lines are included in the response. The Page 9 RESPONSE can be abbreviated to as few characters as are likely to make it unique. A few examples of .PRINTIF .PRINTIF<ship address> .PRINTIF<continue y> In the first example, if the question about SHIP ADDRESS was answered with a non-blank response, then subsequent lines would be included. In the second example, if the question about CONTINUEing was responed to with a YES, the the subsequent lines would be included. VIII. The following additional // statements can be used in a form. // statements are meant for the experienced forms designer. Friendly and complete forms can be created without using these statements. i. //GOTO statement A //GOTO statement tells the program to move to someplace other than the next question when it is done with the current question or comment. If the GOTO moves back to a question that has already been answered, then all responses after that question are erased so that they can be reentered. //GOTO is followed by the question name of the question that the program should move to. The entire question name is not needed, only enough of it to make the selection unique. If the question name in the //GOTO statement does not exist, the GOTO is ignored. //GOTO can follow .QUESTION, .YESNO, .MC, .TEXT, .INTEGER, .DOLLAR and .COMMENT. It can not be placed anywhere else. If no GOTO statement is used, the system selects the next question or comment in the file. An example of //GOTO: .qu //goto address NAME What is your name ii. //Condition Statements //Condition statements combine an IF statement with a //GOTO. If the condition in the //Condition is satisfied, then the program will move on the the question indicated after thw //Condition. //Condition statements are only used with .YESNO, .PASSWORD and Page 10 .MCHOICE. Condition statements are followed by the Question Name of the question that is to be asked if the condition is satisfied. No //goto is needed (or can be used) with a condition statement. Only one //Condition or //GOTO can be used after a given .YESNO, .PASSWORD or .MCHOICE. There are two possible condition statements which can follow .YESNO or .PASSWORD: 1. //YES This is true if the question is responded to with a YES. For example: .yn //yes last name give name Would you like to leave your name? (y/n) In the above example, if the user responds with a Y, the system moves to the LAST NAME question. If he responds with N, it goes to the next question or comment in the file. 2. //NO This is true if the question is responded to with a NO (or the password was entered correctly). Multiple choice Condition Statements use the format: //{choice number}, where choice number is the choice that must be selected to satisfy the condition. For example: .mchoice //2 type of dog animal type What kind of pet do you have? .choice Cat .choice Dog .choice Fish .choice Wombat .choice Other In the above example, if the user selects DOG, the program will go to the TYPE OF DOG question. Dog is the second choice and the //condition is //2. If he selects something other than Dog, the program will move to the next question or comment in the file. Page 11 iii. //QUIT //quit is a special word that can be placed after a //GOTO or //Condition. It tells the system that instead of going to another question, leave the program straight away. No confirming prompt will be given to the user. //QUIT is designed to be used primarily when the form contains extensive text at the top (using .COMMENT). When the user has read all of this explanatory text (but has not yet invested any time and effort into entering information), he is asked if he wants to fill out the form. If he resonds with an N, the system reverts back to Textrieve. For example: .co The Caveman convention is being held this year on December 19th at the Bedrock Convention Center in Flint, Michigan. It will run through the 21st. The registraction fee is $45 per attendee. This can be paid by MasterCard, Visa or check. Lodging is available in abundance. .eco .yn //no //quit register Would you like to register for the convention? (y/n) iv. //COMPLETE //Complete is similar to //Quit. It follows //Goto and //Condition statements. However, instead of aborting the program, //Complete tells the system that the user has finished filling it out and is ready to send it. The system calls its own //Complete when it reaches the last question or comment in the form. An example of //Complete: .yn //no //complete more to tell Would you like to tell us more? (y/n) Page 12 SAMPLE 1 (Simple example, no //s) .FORM WOMBAT Order Form .comment This is a form to order Wombats. If you do not wish to order any of our special Wombats, please press CTRL_C to quit. .eco .qu name What is your name? .qu(25) street address What is your street address? .qu(25) city What city do you live in? .qu(2) state What state do you live in? .integer zip code What is your zip code? .qu phone number What is your phone number? .comment Now that you have given us your background information, please select the Wombat of your dreams. .end comment .mc color What color Wombat do you want? .ch Blue .ch Red .ch Green .ch Brown .yn other colors ok Will you accept another color? (y/n) .mc size What size Wombat do you prefer? .ch Page 13 Small .ch Medium .ch Large .ch Obese .yn other sizes ok Will you accept another size? (y/n) .co Thank you for ordering from Western Wombat Distributors. Your Wombat will arrive by Pony Express in the next few weeks. .eco .dispose wombatman Page 14 SAMPLE 2 (Complicated Example) (Contains //GOTO, //Conditions, //QUIT, //COMPLETE) .form Carpentry Estimate Application .co My name is Martha, and I'm an online carpenter. I can fix broken roofs, put up beautiful aluminum siding, renovate kitchens, and build additions to your home. .b I give FREE estimates. .eco .yn //no //quit want estimate? Would you like me to come over and make an estimate? .mc //2 build what type of work What do you need done? .ch Fix Something .ch Build Something .text fix what What do you need fixed? .qu when broke When did it break? .date<past> //goto estimate fix when When do you need it fixed? .mc //1 addition build what What do you need built? .ch Addition to the house .ch New Kitchen .ch Remodeled Bathroom .ch Something Else .co //goto estimate We can do that easily. .eco .integer addition size Approximately how many square feet is the addition? .integer Page 15 floors How many floors will it have? .mc //3 another estimate time When can I come over to give you a free estimate. .ch Monday .ch Tuesday .ch Wednesday .ch Thursday .ch Friday .comment //goto //complete That will be fine. I will see you then. .eco .yn //yes estimate Another day OK Wednesday's a bad day for me. Could we try another day? .comment That's too bad. I will try an make it over on Wednesday. .eco .dispose thecarpenter //keep .output This is an appointment to visit //*USERNAME// and give an .printif<fix what> estimate to fix //fix what//. .printif<build what> estimate to build //build what//. .end printif I will come over on //estimate t//. .end output ACTION>