(*****************************************************************************) (* *) (* PICS - Pascal Integrated Communications System *) (* *) (* Version for CP/M Computers *) (* Copyright (c) 1986,1987 by *) (* Les Archambault *) (* *) (* All commercial rights reserved. *) (* *) (* This program is based on ROS Vers 3.4 by Steve Fox. It is released *) (* into the public domain for private use only. Additional thanks to: *) (* Irv Hoff whose 1k protocal in KMD was invaluable in writing the *) (* Turbo Pascal routines. The authors of DEARC for the basic code that *) (* deals with Arc files. The author of ASYNC.ARC for the code to make *) (* possible the interupt service routines. *) (* Special thanks to Lindsay Jones, Eric Daniel, Freeman Bradford and *) (* John Van Hengel for beta testing and support. *) (* *) (*****************************************************************************) 8/24/86 Version 1.0 Original Release 9/12/86 Version 1.1 Changed PICSOV2H.INC, the Print_log function to be able to show the name of the last caller in the user file. Changed the Wait_for_user procedure. For sysops using the NORTC.CLK module (no clock), added auto roll-over of the month and year variables. 10/18/86 Version 1.2 Repaired the code for displaying the log file, newin list and newin processing list. After the user file had been purged, these lists displayed extraneous information for the deleted users. Repaired the logic for calculating and displaying the time for systems with no Real Time Clocks. 11/18/86 Version 1.3 Re-wrote the newin processing section to allow adding the first record to an empty file. fixed record counting to not hang up on the same record when deleting records. fixed the bug where no filenames were stored in the newin file when files were uploaded by the batch mode. re-wrote the code in receive mode to speed things up so that 2mz machines would be able to operate at 2400 baud without missing bytes. 1/1/87 Version 1.4 Move position of GETKEY.BOX file in include list so that the first 3 function/procedures can be changed (by you) into overlays, thus making more TPA space available for dynamic variables. At the same time, moved a couple of routines to the end of the PICSKMS.INC file and made them into overlays. All the above changes result in one additional overlay file. In some cases where you have a large tpa anyway, you may want to keep these routines as non-overlay files to increase speed if you don't need the extra heap space. NOTE: ONLY THE FIRST THREE ROUTINES OF GETKEY.BOX MAY BE MADE INTO OVERLAYS! Added heap garbage colledtion routines. Now when you change between the messages, files or utilities menus the heap space for the menu just exited will be reclaimed. This also increases the heap space available for dynamic variables and directory entries. Removed all comments from the PICS14.PAS file. It turns out that during compilation, Turbo keeps the entire main file in memory, including the comments! By removing the comments i found that compilation can now be accomplished in a smaller tpa size system (around 49K). The above changes were made as a result of Sysops comments that when using a hard drive with cp/m systems, the hard disk drivers were using up some of the tpa, thus making it difficult (or impossible) to compile PICS on the hard disk. In addition, hard disk directorys tend to be larger then those on floppys, requiring a larger heap space to fit all the directory entries into ram. While i was at it, i added a test to stop the system from crashing if there isn't enough heap space for all the directory entries. Changed the routine that creates log entries to close the file after each log entry is made. In addition, fixed a bug that entered the name of the last valid caller in the current log entry if the current caller hung up before there was a valid password established. Added code to time out the sysop operating the system in the local mode. This timeout is 5 times as long as the regular input timeout you have set. This way, if the sysop gets up for coffee and forgets the system is running locally, it will put itself back online. Added log entry for "input timeout" to show when system hangs up on caller. Fixed bug that continued to give page breaks during message listings even though user used the nonstop command. Fixed code so that messages to deleted users won't show garbage in the message header. (before the message file is purged.) commented out the 'C' option in the "Change User Params" routine. This was done so that users couldn't change the number of characters per line (width) setting [default at 80]. The characters per line just effects the display of columns, and not the line width of regular output. Many users were becomming confused when they tried to use this command to change the width of all screen lines. You may un-comment the code if you prefer. If you do want to leave the code commented out, please remove the 'C' from your SYSMSG.TXT file and make a new SYSMSG.BB# file. Changed sysop user display from four to five line display to eliminate running off the screen when a user has a long name. Added exempt from purge to criterion for exceptional user list. Added code to make a new message index after each message is entered. This will let a caller see that the message has indeed been saved. Changed code to make sure that all files are closed and updated even though a caller hasen't logged in with a valid (or new) password. Added code to Newin processing to re-read the directory after hide and release to reflect the changes. added code to record new settings for system settings or system purge settings so that they will remain in effect even though you exit pics and then re_enter. This will mean fewer re-compiles when all you want to do is change one of the frequently changed defaults. 2/22/87 Version 1.5 During batch uploads to PICS, the size of the file to be uploaded (as sent in the header record) was compared to the amount of free space on the disk before the upload was allowed. Due to some strange results by different communications programs, i have changed the code so that the free disk space is compared to your setting for minimum disk space req- uired to allow uploads, after each of the individual files is uploaded. This means that we will be independent of any funny numbers for file size that are sent to PICS. Added support for .ARC compressed files. A new command ( 'A' ) has been added in the Files Menu that works just like entering a .LBR file. The user is shown the names of the files within the .ARC file. While in the arc mode, users can download any file from the .ARC file (no batch). It will be sent as a single file, still in the .ARC compressed format. The user must un-arc the downloaded file using his own un-arc program on his computer. Of course, functions like erase, find, delete, rename etc. will not operate while logged into an .ARC file. Arc files are also supported when making a SYSTEM.DIR file. A separate question is now asked like that for Librarys. Altered routines for Message Area and File Section changes so that a carriage return at the prompt defaults to the present area/section. Same when being asked for a section name. Note: Be careful when editing Newin records or making SYSTEM.DIR file, as the last file section you were in will be the default! Cleaned up the heap garbage collection routines that were sometimes causing a problem with library files. Repaired a bug introduced in vers 1.4 that stopped the directory from showing the first time a new caller went to the files sub-system, or didn't show the messages waiting to callers the first time the message area was entered. Added the macro string to the Config File so it will be saved each time it is edited. Made the procedure for writing the config file an overlay. Changed the order of the login screens so that a caller is shown the bulletins before he is shown the messages he has/or left in the initial message area. Fixed the problem so that if more than 20 files are batch uploaded, the caller still gets asked for descriptions for the first 20, and in addition, the program will now ask for descriptions for any completed batch uploaded files even though the batch process was aborted for whatever reason. The log file now lists in reverse order, showing the latest entries first. The prompt now asks for the date to stop the listing instead of starting. As before, a carriage return defaults to the current date for listing. Added pause routine to log file viewing routine ( not active if audit or printer are active). Also made the final pause inactive if audit or printer are active. Added choice of file sections so the file section where the SYSTEM.DIR file will be written is selectable by the sysop. In addition, a header may be written (if it exists in the SYSMSG.TXT file as the :G message) to the begining of the SYSTEM.DIR file. This way you may identify your system in the Directory file. Re-wrote the code that reads the SYSMSG.TXT file and creates the SYSMSG.BB# file so that long lines (greater than 80 chars.) are trun- cated and don't cause the program to bomb. Re-wrote parts of the file transfer protocals to increase compatibility with more communications programs, and perhaps to make it more stable. Fixed the transfer size in batch send mode, this should keep Procomm from bombing. Re-wrote and fixed the display of user stats (the 'Y' command) in the Utilities sub-system. The caller number was being shwon incorrectly and the times were those at logon rather than current. Added new feature to message system that i call "redirection". This feature allows anyone with a user access level of 250 or greater to include the File Section Name and File Name of a text file in a message. When the message is read the file will be displayed as part of the message. All message lines before the line with the redirection code are displayed normally, as are the lines following the redirection code, with the redirected file displayed between them. The format for redirection is: //Section name/Filename/ example : //NEWIN/THISFILE.TXT/ In the example the file THISFILE.TXT will be looked for in the NEWIN file section, and if found, displayed as part of the current message. If the file can not be found, a 'file not found' line will be displayed. The redirection names may be in upper or lower case. Anything else on the redirection line will be ignored. Please don't put any spaces in the redirection code. 3/7/87 vers 1.5a update This update is released as an Arc file containing changed files to replace the corresponding files in the vers 1.5 release. PICS15.PAS - Just to update the version and date listings. PICS0B.INC - Added code to stop a crash if a 0 length LBR or ARC file encountered while trying to read the directory of those files. PICS2I.INC - Removed code that rebuild message index after a message file purge was done. This was not necessary and took away some of our heap space. PICS2F.INC - Added additional code to Delete User Command to update the log and newin files to reflect the deleted user. PICS3A.INC - Added code to close lbr and arc files when going to the sysop or utility sub systems. Added several carrier tests. Repaired a problem that allowed the system to lock in a loop when someone hung up at the 'any key to continue' prompt after login stats were shown to the user. PICS2E.INC - Changed code so that in systems with no clock, the caller is not asked the 'change multiplier?' question. PICSVAR.INC AND PICS2H.INC - Changed the length of the Macro string allowed from 50 to 79 characters. PICSKMS.INC - Added a test when reading Arc files to prevent a crash if there isn't enough free memory to read the arc directory into. Added several carrier tests to prevent system hangup if caller hangs up during the login process. PICS2K.INC - Added default statement inadvertently left out that sometimes caused the system to think that it was trying to open an arc file the first time the files area was entered after initial pics startup. (thanks Rea Williams and John Allen). Fixed the time left display when caller has less than 5 minutes remaining. Fixed bug that allowed system to loop forever (lock) when someone hung up at the start of the Login routine. PICS0H.INC - Repaired pointer logic for the delete/insert message lines routines that sometimes caused the loss of additional lines typed in with the continue command. 6/4/87 Release 1.6 When compiling PICS, you should use all the new files supplied, except that you may use your old PICSDEF.INC file if you have special defaults in it. Thanks to Lavern Ogden, PC Technics 503-588-8183 for the great bug fix files. Many of the suggestions have been incorporated into this release version. If you would like to see the complete files, look for PICSMODS.TXT & PICSMODS.UPD on your favorite system. The changes suggested for the Keypressed and read keyboard turbo routines were not implemented, as turbo already used the same bios calls. Be careful, as these changes only apply line numbers in PICSPC 1.1A. Fixed a bug caused the system to sometimes run endlessly in a loop when someone hung up in the very first part of the logon sequence. Repaired pointer logic for message delete and insert lines that sometimes lost track of the last lines typed in with the message 'C'ontinue command. Fixed the routine that tells users that they have less than 2 minutes left, when they actually had five. Added code to display a new directory after most of the Sysop file commands have been executed. Some of the commands did not do this. Fixed all the Sysop file commands to properly handle nul and non-existant file names so a crash doesn't result. I really thought that Sysops would be more careful, but i guess we have to be protected from ourselves too. Corrected logic in newin processing statement that determines if a file name should be searched for. Also added code to be able to look at all the previously found newin entry(s) when using the search for file feature. Fixed bug in display of Article Selections that didn't show all remaining available Articles after one was displayed with an access level higher than that of the current caller. Added Lavern ogden's change #14 (PICSMODS.UPD) so during prompted input, a question mark char. is treated as a special character only if it is the first char on the line, instead of anywhere in the line. Added code to test all file areas known to PICS (instead of just the NEWIN area) when a file is being uploaded to pics. If the file exists, the caller is notified, and the 'failed' message that is entered into the log file now has an additional note 'file exists'. Any file area with an access level >= 250 and the SYSTEM file area is not subject to this test for the file's existence. Changed the Delete User sysop command to search for the nearest User record matching the name typed in by the sysop, instead of requiring the exact name. This should help with deleting users where weird stuff somehow gets into the user record. The names found are now displayed before the Delete? question is asked of the sysop. Also added more I/O error trapping to the Delete User command to insure against system crashes. When a caller is reading the newin file list from another file section, it now indicates that a full list is available in the Newin file section, if no files are found in the current file section. Fixed a bug that sometimes failed to properly access the initial file area when the caller used the 'F'iles Command from the Messages Menu for the first time. Changed Display Users list ( 'B'rief ) to display the City, State, Computer and date last on information as well as the user name. (The 'B' user list option is automatic for regular access level callers.) I have attempted to fix the system crash problem created when a brand new sysop brings up the program for the first time without reading any of the documentation, and then resets his system at the bouncing dots because he doesn't know what to do next. The next time that he re-started the program it crashed. This could be gotten around by deleting all the .BB# files and starting again. Now i have added code to check for zero length files and prevent this type of crash. The last caller number has been added to the system status information so that sysops can see the system activity level without going into the program. The ability to change the caller number has been added to the hange system parameters sysop level command screen. The dit User sysop level command has been expanded to show the conference numbers, names, and descriptions when asking for conference number authorizations. The sysop command during reading messages has been completely changed. It now automatically enters the dit User sysop command and displays all the information for the sender of the message. To validate a user you must change the access level and time limits as well as any other parameteres you wish. A new extension has been added for automatic macro processing. When automatic macro processing begins, a check is made for a file named: MACRO.LST . If it is found the macro commands to be executed are taken from it instead of your default macro string (which is stored in memory). If no file with that name exists, the default macro string is used. The MACRO.LST file is an ascii file generated with an editor like the Turbo Editor (no soft CR's). Only ONE command per line is accepted. If a delimeter (space, semi-colon, comma) is present after the command, the rest of the line may be used for comments and is ignored by PICS. The file may contain as many lines as you like. A sample macro file called MACRO.SAM has been included in the distribution. The sysop 'O' command for processing macros has been changed to allow you to choose which macro to execute when both exist. If no MACRO.LST file exists, the in-memory macro is executed (with the 'S'tart command). The 'E'dit macro command reminds you that it can only edit the in-memory macro when the MACRO.LST file exists also. The ^M used to represent Carriage Returns in macro strings has been fixed so that it now does work properly. Fixed a file transfer bug when sending an arc member using 128 byte blocks when the file being sent is longer than 256 records. Added error trapping when reading arc files and their headers. There are a lot of potential errors that can exist in what appear to be .ARC files and we have to be able to trap them. Fixed the code that credited time for uploads back to the caller. This was not working correctly. Along with this, the 'time on today' of the status line did not include any time previously on in the same day. This has been fixed. The caller number has been added to the system settings screen that is available at the 'bouncing dots' when pics is waiting for a caller. This screen can now be displayed by a Carriage Return as well as the Control J. The screen remains displayed for about 30 seconds, but can be turned off by pressing any key during the time that it is present. The sysop commands for displaying the log and message files, (the 'L' and 'R') commands now ask for a date in the customary MM/DD/YY format instead of the previous DD/MM/YY format. Entering a CR still gives the current date as a default. Added code so that when Pics is first brought up (from the A>: prompt), if the auto macro switch is turned on, and the current time is before macro execution is due, the macro will execute later today. In past releases, it skipped today and started working tomorrow. Les Archambault