HISTORY

28.3 KB c65c90c6354d8dff…
                                 RELEASE HISTORY
                                 =============== 
12-15-91 v2.10

-  Changed the way CKIT was handling the speaker beep
   on keyboard timeout beeps.

-  Added ck_NOSYSTEM.  When TRUE, tells CKIT open_door() not
   not to expect a filename but a pointer to a structure
   for it's information.  The structure is typed in ckit.h as

   typedef struct ckitgeneric {
    char port[6];                   /* COM:X  COM0: equals local  */
    short min_left;                 /* minutes left */
   };

   This will allow your door program to read any BBS system file
   and pass the information CKIT needs thru the structure.
   open_door() will still accept the port:AAAA:X.


   If you don't need this, then no changes are necassary in your source
   code.  However, if you would like make your door compatible with a
   BBS system that CKIT does not support (such as WWIV), then you
   can read the WWIV file, fill in the appropriate CKIT variables
   (ck_fullname, ck_ckit, etc) and the ckitgeneric structure with
   the port and minutes left.  Then set CK_NOSYSTEM = TRUE, and call
   open_door().  You should fill in ck_fullname, ck_baud etc before
   you call open_door() so that the status line will contain the
   proper information.  If you don't, it won't hurt anything and
   CKIT will pick it anyway the next time it updates the status line.
   (either after one minute or by typing ALT-H to scroll thru).
   Be careful you pay attention to the size of the CKIT arrays that
   you will be filling in and you don't exceed them.  For instance,
   ck_fullname is declared as ck_fullname[26] (including null).
   Check the docs for the size/types of the variables.

- Added ck_NO_FKEYS.  When TRUE it will disable the local
  sysop keyboard F-keys and ALT keys except for ALT-H.
  Default is FALSE. (F-keys enabled)

- Change set_kybd_time() so that each call to it zeros the
  present keyboard timer time

- A big one here.  I think I finally tracked down the cause
  of CKIT suddenly hanging at times up while transmitting
  for no reason while it was apprently waiting on CTS when
  CTS  was OK.  I finally managed to duplicate it repeatly and
  found the cause.

- Fix a bug were a if you specified USERSFILE=TRUE and there
  was an error opening the users file, it trashed a register
  internally that shouldn't have gotten trashed.  Under normal
  conditions it would not have affected anything. (if the users
  file was opened OK).

- If Ckit finds a generic.sys file in use, it will no longer ask
  for the person's first and last name.  You will have to add this
  to your program to do so. i.e.
          if(GENERIC) {
            newline();
            s_puts("Please enter first and last name (MAX 25) ->");
            get_cmdline_raw(45);
            strncpy(fullname, cmdline, 25);
        }

- New variable added called short ck_silent.  This variable when TRUE
  will prevent keyboard timeout beeps from being sent to the local
  console.  It can be set/reset manual thru your program and it will
  also following the setting of F7 for PCBoard systems. (caller alarm toggle).

- Fixed some ANSI strings in the library so that it will no longer
  attempt to set background color to black.  This should make things
  a little easier for people using background colors other than black
  and will allow you to only change the foreground colors (leaving the
  background alone) when using ck_color();.

- Ckit was not always picking the node number up correctly from
  DORINFOx.DEF files. (x being the node number).  Fixed.

09-25-91 v2.08

-   Changed ck_DOTS operation.
    Setting ck_DOTS = char will cause char to be echoed to the
    remote/local console.  ck_DOTS = NULL cancels.

-   ck_system_time_used() was prototyped incorrectly in ckit.h
    as ck_system_time_left().  Fixed.

-   Some variables in ckit.h did not have the "ck_" prefixed
    to the variable name.  Fixed.

-   Added support to MBBS systems. (PCBoard clone found in largely Europe).

-   Changed ck_set_ANSI() to accept TRUE/FALSE (short) depending
    whether or not the user wanted to turn ANSI compability ON or OFF.
    The previous ck_set_ANSI() toggled this setting.  The prototype
    for ck_set_ANSI is now -  short  ck_set_ANSI(short) where the short
    is either TRUE/FALSE.  (1 or 0).  It returns whatever you pass it.

    Why is this routine necassary?   When C-kit first opens a system file
    it determines from the file whether the wanted the user wants
    ANSI control, (ansi_NG will be set, GRAPHICS FALSE) OR if they wanted
    ANSI control with graphics (ansi_NG false, GRAPHICS TRUE).  To save
    code size and execution time in the internal library rountines
    (such as ck_pos_cursor etc) , there is only one internal variable
    that C-kit checks to see if ANSI was desired.  This routine only becomes
    necassary when a user of your door is using generic.sys.  The
    generic.sys has no way of knowing whether the user wanted ANSI or
    has ANSI selected.   If the door program detects that a generic.sys
    file is being used, it should then stop and ask if the user desires
    ANSI control and if the user wants ANSI control with color.
    set ansi_ng TRUE, graphics FALSE  and ck_set_ANSI(TRUE)  (ansi w/o color)
    set ansi_ng FALSE, graphics TRUE  and ck_set_ANSI(TRUE)  (ansi w/color)
    set ansi_ng FALSE, graphics FALSE and ck_set_ANSI(FALSE) (no ansi)

    Notice that ck_set_ANSI() is the logical OR'ing of the other two
    variables (ansi_ng and graphics) which is what C-kit does at the
    begining of a door.  That way instead of doing this each time
    routines such as ck_pos_cursor() etc.. is called it only has to
    check one variable making the code smaller and faster.

-   Changed ck_dos_shell() to use the spawnlp() funtion in C.
    The syntax for ck_dos_shell() has changed.  It is now
    prototyped as ck_dos_shell(char *, char *); where
    the 1st string pointer is the program to execute and
    the 2nd string pointer is the command line arguments
    to be passed to the program. Example taken from
    CKITDEMO.C.  It should return an error level correctly
    now reguardless of which compiler you are using.
    The max. DOS limit for the length of cmd line arguments
    is 128 chars so the 2nd string pointer should not exceed this.

   void    filexfer(void) {
   sprintf(zmodem_cmds, "portx %X,%X pB4096 pa3000 handshake cts sz %s", \
            uart_base, irq, doc_filename);
    if(dos_shell("dsz", zmodem_cmds)) {
        s_puts("\n\aTransfer aborted");
    } else {
        s_puts("\nTransfer complete");
    }

-   There was a minor change in the ckit.h file under the
    users structure.  Added user.packed_byte after user.protocol.
    This location had not been used in previos PCBoard releases.
    Changed ck_user.last_read to ck_user.last_read[39] in
    user file structure.

-   Yes, Gary, you no longer have to use word alignment when using
    the user structure or ck_update_user() function!.  This means
    also that Microsoft C users will need to add the Zp1 switch
    on the command line.  Zp1 tells MSC to pack structures on
    1 (BYTE) bounderies.

08-18-91 v2.0

-   It is not necassary to use WORD alignment EXCEPT if you
    plan on using the user structure or the update_user() function.
    Otherwise, BYTE or WORD alignment should work OK.

-   Added the short ck_system_time_used(void); function.

-   ALL ckit's variables/functions now begin with the letters "ck_"
    See upgrade file.

 -  Added ck_DOTS.  This will cause dots "." to be echoed to
    the screen when true and using one of the keyboard inputs.

 -  Fixed fullname so that it will display more than 2 names for
    PCBboard 14.5.

 -  Ckit will no longer exit your program on it's own.  If open_door()
    fails, it will now return an error code based what the problem it
    had.  If open_door() is successful,  it will return a NULL.
    The error codes are as follows:
     ==========
        1   ;Unable to open BBS system file (pcboard.sys,door.sys etc)
        2   ;Problem reading BBS system file
        3   ;Unrecognized BBS file type
        4   ;Unable to open pcboard USERS file
        5   ;Invalid User record or problem seeking to user record
        6   ;Problem reading USER record
        7   ;PORT command syntax error
        8   ;Fossil driver specified but no Fossil driver installed
        9   ;Memory allocation problem

-   Added ability to change ALL of Ckit's exit message and they can be
    of any length.  The code looks for an array of pointers to the exit
    messages and uses the option variable to pick which one to print.
    This pointer to the array of pointer is now public so you can
    define you own array of pointers to the 5 exit messages.  They must
    be in this order.  See ck_logoff_msgs;

-  display_file() will only print a "generic" message now.
   "ERROR: Unable to open file!\a\r\n".  If you want it to print
   a specific file error message, the you need to change error_msg11.
   This message is limited to 47 characters NOT including the NULL terminator.
   strcpy(error_msg11, "\a\nUnable to locate CKIT.DOC");
        if(display_file(doc_filename)) {
                newline();
        };

-  Added set keyboard time out routine.  This will allow the door author
   to set keyboard timer.  See set_kybd_time();

-  The keyboard timer will not beep locally now if display has been turned
   off.  (display = FALSE).

-   Added ability to change Ckit's general purpose messages.
    See ck_gen_msgs;

-    Added system_time_used().   This will report back the number of minutes
     since the door was opened.  It does include time used in previous calls.
     You can use this function along with mins_left_system() to create
     you prompt the same way display_time() does.
     s_printf("( %d used, %d left)", system_time_used()+prev_used, \
                                      mins_left_system()+time_credit);

-   The global variable option will now be available BEFORE a call to
    close_door() is made.  If DUMP_USER goes TRUE, you can now check
    option to see why it went TRUE BEFORE calling close_door().

-   Fixed a problem in the large model libraries
    with updating users record.

-  Change syntax of ansi_NG to ansi_ng in MSC libraries.

-   Fixed a problem with the port command that only occured
    if port was passed as the 3rd argument

-   Changed get_cmdline() to accept chars > than ASCII 128

-   Added switch for ansi when using PCB14.5+ pcboard.sys file
    to know if the caller wanted ANSI but no color.

-   Ckit was not allowing ANSI cursor commands if the door.sys file
    had the user set for ANSI with no graphics.  (ansi_ng).  Fixed.

-   Added a new variable short non_ibm.  This indicates whether the caller
    called using 7 bits instead of 8 bits.  Using 7 bits doesn't allow
    for IBM graphic characters above 128 to be displayed correctly.

-   Added time_credit, and mins_left_system() to the door documentation.
    These were always available but was left out of the documentation
    for some unknown reason..:)

-   Added two more variables:
    short uart_base -  will contain the base address of the port in use.
    short irq - will contain the interrupt request in use.

-   Corrected a problem with display_file again.. Also rearranged
    and optimized some code in the display_file().   You should
    see a SUBSTANTIAL improvement in the way display_file works for
    speed.

-   Increased the strings main_dir[] and gen_dir[] from 15 chars.
    to 80 characters.

-   Added proto's for Ctrl-K set of functions that were left out
    of CKIT.H

-   CKIT.H had a variable called current_conference.  This should
    have been called current_conf.  fixed

-   If you were using pos_cursor() (ANSI cursor control) and you
    were displaying peices of a string on the same line, and
    you didn't have any line feeds and you went past line 22
    (into the local status bar), Ckit would try and scroll the
    screen each time you called pos_cursor() with a row number
    greater than 22 even though you were still on the same line.
    Fixed.


07-15-91
-   Added switch for ansi when using PCB14.5+ pcboard.sys file
    to know if the caller wanted ANSI but no color.

-   Ckit was not allowing ANSI cursor commands if the door.sys file
    had the user set for ANSI with no graphics.  (ansi_NG).  Fixed.

-   Added a new variable short non_ibm.  This indicates whether the caller
    called using 7 bits instead of 8 bits.  Using 7 bits doesn't allow
    for IBM graphic characters above 128 to be displayed correctly.

-   Fixed a problem in the LARGE memory model where it was not reading
    a DORINFOx.DEF file correctly for the graphics preference.

07-08-91  v1.81ß
-   Added time_credit, and mins_left_system() to the door documentation.
    These were always available but was left out of the documentation
    for some unknown reason..:)

07-Jul-91 v1.81ß

-   Added two more variables in CKIT.H.
    short uart_base -  will contain the base address of the port in use.
    short irq - will contain the interrupt request in use.

-  Optimized some code in the interrupt handlers.

02-Jul-91 v1.81ß

-   Corrected a problem with display_file again.. Also rearranged
    and optimized some code in the display_file().   You should
    see a SUBSTANTIAL improvement in the way display_file works for
    speed.

-   Increased the strings main_dir[] and gen_dir[] from 15 chars.
    to 80 characters.

-   Optimized some other code in CKIT.
21-Jun-91 v1.81ß

-   Added proto's for Ctrl-K set of functions that were left out
    of CKIT.H

-   CKIT.H had a variable called current_conference.  This should
    have been called current_conf.  fixed

-   If you were using pos_cursor() (ANSI cursor control) and you
    were displaying peices of a string on the same line, and
    you didn't have any line feeds and you went past line 23
    (into the local status bar), Ckit would try and scroll the
    screen each time you called pos_cursor() with a row number
    greater than 23 even though you were still on the same line.
    Fixed.

15-Jun-91 v1.8

-   Added support for FOSSIL drivers.  Ckit will now
    detect if a fossil driver is in use.  See the
    open_door() in the docs.  You will need to add
    this to your door doc files.

-   Added more capability to inkey().  inkey() will now
    watch time left and set DUMP_USER.

-   Included some useful information with using close_door()
    and C's atexit() function.  Door authors need to
    read this! and look at the ckitdemo.c usage of it.

-   Fixed a potential problem whereas if exit_msg[] was
    a NULL,  Ckit could get hung up.

05-May-91 v1.76D

-   Added chatmode set to TRUE when the sysop drops to DOS
    so the door program can know that a screen re-fresh is
    needed.  See chatmode usage in DOC file for more info.

-   Fixed the PORT:XXXX:X cmd, CKIT wasn't picking up the port
    base address/irq correctly.

    NOTE DOOR AUTHORS:
       You should include in your documentation the PORT usage
       cmd and compile your door program to accept and pass
       this information to open_door().  Pls see docs.

-   Fixed display_file() so it would not display the EOF
    character.


24-Mar-91 v1.76

-   Added support for RBBS-PC and other systems using the DORINFOx.DEF
    system files.

-   Source code for reading PCBoard data files are available on Data-Comp BBS
    and may be linked with your C door program if desired.   RBBS and
    and others will be as they become available.

15-Feb-91 v1.75C

-   Not sure what happend 1.75B but anyway, the C version fixed
    a few loose ends.

-   Fixed code so that door.sys, wildcat, and generic.sys files are closed
    after a call to open_door().

-   Changed so that if sysop is logged on,  (using pcboard.sys),  the
    firstname will be set to what is in the pcboard.sys file instead
    of "sysop".

-   Added a pointer to the internal buffer that pcboard.sys is held and
    which will be used to update pcboard.sys when returning to the board.
    Added pointer to internal pcboard.sys buffer - BYTE *pcbsysbuf

-   Changed logoff_msg[] to exit_msg[].   logoff_msg[] is now displayed if
    the user says good-bye within the door.  See CKIT.H for the macros
    LOGOFF and EXITDOOR.  The complete log-off routines and source code
    for reading pcboard.dat files are on Data-Comp BBS.  These can be
    linked with CKIT if you want to add a log-off feature for PCBoard
    doors.

24-Nov-90 v1.75
-   Fixed a problem in the last release for sysops using the
    pcboard.sys file.  CKIT would always report "Time adjusted
    for upcoming event".

12-Nov-90 v1.75
-   Added a function to update user record IF you are writing the
    door for use with PCBoard 14.5.  The new function name is
    update_user().

-   Added the ability to turn on and off Control K checking, if
    desired.  This involves the additon of 3 functions.
    CtrlK_ON, CtrlK_OFF, and check_CTRL_K.

-   Added chat mode via function key 10.  Also a variable
    short chatmode is set to TRUE when chat mode has taken
    place.

-   CKIT will now read a file called GENERIC.SYS.  This file
    will allow the door to work on ANY BBS system, depending on
    the level of information required for door.

-   Added some enhancements to the status line for the COM port
    status.  It will now display the status of CTS, DTR, DSR
    and DCD.

-   Fixed a problem with ALL the medium models.  Also fixed a
    problem with the delay() function in the MSC libraries.
    There is also a large memory model now available for
    registered users.

16-Sep-90 v1.71
    Release of version 1.71
        This release was intended to be a maintenance release.
        There were, however, a few things added and a couple items
        repaired.

-   Added a function to re-enable keyboard timer after it had been
    turned off by a previous call to debug_on().  The new function
    name is debug_off().

-   Added the ability to define your own error message for the
    display_file() function.  error_msg11[40].  If you don't
    define it, CKIT will use it's default.

-   More and more and more documentation updates and examples.
    Too many additions to list here.  Mostly more examples and
    better explanations.

-   Fixed the display_file() function so that it will properly
    handle files that did not contain line feeds.  There will
    also be a future release of display_file() that will handle
    the ANSI screens better and include PCB color macros.

-   Close door was clearing the screen when exiting.  It no
    longer does this.

-   Fixed the More: (Y)es, (N), (NS)non-stop prompt.  Somehow
    in the last release, the last part of the string was missing
    from the source code.

-   Also missing in the last release source code was the public
    declares for transmit_modem, set_r_c and another function.
    Not sure how this happened but it did.  Your linker will now
    find these.

-   The page_length should be accurate now.  The bug that was in
    PCBoard's 14.5 door.sys has been fixed and I changed CKIT to
    give the true page length.

01-Sep-90 v1.6
    Release of version 1.7

-   Added support for reading scan codes from non-standard keys on
    IBM keyboards. (F1-F10, Arrows, PgUp, PgDn, etc).
-   Ability to define the logoff message and color
-   Ability to change the port address and IRQ if needed.
    PORT:AAAA:A where AAAA equal to port base address and A is IRQ
    i.e PORT:02F8:3 would be the same as COM2.
-   Additonal variables:
    short scan_code, short logoff_color, char logoff_msg[40], short key_source
-   Additonal functions:
    short wait_keypress(void) for "hot_keys"
-   open_door()'s prototype has been changed.  This allows one to pass
    as many parameters as desired (up to the max. of 3), without having
    to pass any dummy pointers.
-   Fixed a problem in the cmd line where certain command line
    parameters (callinfo.bbs and pcboard.sys) passed were case sensitive.
    This caused CKIT to read them incorrectly.
-   Cleaned up the status line display when certain information was not
    available depending on which file was opened. (pcboard, door.sys, callinfo)
-   Additional documentation added and improvements.
    Once again, see open_door() for some changes and key_source.
    The option variable documention has also been updated.
    Also see the ckitdemo.c for more examples.

19-Aug-90 v1.6
    Release of version 1.6
        Added support for WILDCAT! systems.  The following additonal
        information is available for WILDCAT! users.
        Additional WILDCAT! variables:
                monitor_type[5], max_sec[5], high_msg[5], door_opened[5],
                BYTE name_in_user
        Additional variables for general use by any system:
        short WILDCAT, protocol[15], security_level[5]

        See the CKIT.DOC for explanations and the compatibility chart.

  -     clr_screen() was not properly handling NON_ANSI callers.  fixed

  -     Under certain circumstances, a parsing routine in CKIT could get
        hung up.  fixed.

  -      Reduction of code size by about 5% relative.

  -     Fixed some documentation errors.  In particular, you may want to
        reprint the open_door() page and progname variable page.
        Also there are new variables listed above in the doc file and
        the compatibility chart has been upgraded.

  -     Look over the NEW CKITDEMO.C and CKITDEMO.H files.  The demo
        demostrates some use of added features, (zmodem download,
        pcb, wildcat! etc).

13-Aug-90 v1.5A
    Release of version 1.5A
        I can't believe I did this.  After telling everyone to make
        sure and not have debug_on in the released versions of their
        door,  I released CKIT with debug on!.  As a result, the
        keyboard timer and some other things would not work
        properly. This release with a code date 8/13/90 will work
        properly.
11-Aug-90 v1.5
    Release of version 1.5
        Ckit is now compatible with PCBoard version 12.0, 14.x-14.5, GAP
        BBS, and other BBS systems using the standard door.sys file.
        The level of compatiblity is up to the door author and the type
        of information needed.  There is a lot of information available,
        but by keeping this to a minimum, the door author can write his
        door to be compatible with all the systems above with no extra
        instructions to the user of the door except for the PCBoard
        sysop to use either pcboard.sys or door.sys.  (Version 12.0
        would have to use pcboard.sys and all others use door.sys.)
        CKIT will automatically determine which file to read and which
        PCBoard version is in use.  See the compatiblity section in this
        doc file for more information and a Variables Quick-Reference.

    -   Added more features and cosmetics to the program's status line
        for the sysop's use...
        F8      - Return user to BBS.  This was always there, I just
                  forgot to document it.  :)
        F5      - Shell to DOS
        ALT-X   - Sets the PCBoard's exit to DOS after caller flag
        ALT-N   - Sets the PCBoard's sysop on next after caller flag
        ALT-H   - Display Help Screen on sysop status line, and next
                  ALT-H will show com port status

   -    Functions added are:

        dos_shell(char *) - Allow door author to shell to another program
                              for execution if desired.  See CKIT.DOC

        _debug_on(void);  - Turns off keyboard timer and other things
                            while door author is debugging his door.

  -     Additional variables:
        short   PCB, PCB12, expert, parity, *conferences, current_conference,
                caller_bday[8], main_dir[15], gen_dir[15], sysop_name[15],
                sysop_alias[15], page_length, ansi_ng, default_color[2],
                last_dir_scan[8], daily_files[4], total_doors[4],
                msgs_left[4], max_files[4], upload_Kbytes[10],
                download_Kbytes[10], dload_total[5], upload_total[5]

  -     Added my own math routine so you no longer have to include
        MATH.LIB if you are using TC compiler.

  -      Reduction of code size by about 20% relative.
25-Jul-90 v1.1
    Release of version 1.1
        This release was a little premature.  I went ahead and released
        it since it did fix a couple of problems. "*" indicates a new
        feature.  Pages in CKIT.DOC for display_file(), input(),
        purge_buffer(), check_CR(), check_keypress() have been updated/added
        and you may want to reprint these.

        Display_file() -
        a. It will now put a space before the filename when it reports a
           problem.
        b. The EOF is no longer displayed.
        c. display_file() will now correctly display text files that have ANSI
           codes embedded in the file.
        d. CTRL-K now works on the local keyboard. (The remote keyboard was OK)
      * e. display_file() will now return TRUE/FALSE to indicate whether a
           problem had occured.  You can then check the C global variable
           _errno for cause of error.
      * f. Fixed problem when user.page_length was equal to 0.  See the
           CKIT.DOC for hints on how to take advantage of this.

    2. display_time() -  Would not update the time used until after
                        two carriage returns were entered.  fixed
    3. input()

        a. Control characters or any non-displayable characters below 1F hex
           will not increase the counter.  This corrects the problem of being
           to backspace too far and erasing the prompts.
      * b. Each call to input() now will purge the buffer you wish to place
           keyboard input.  You should no longer have to include the statement
           memset(buffer, 0, 21) before calling input().
      * c. A new function purge_buffer will purge any buffer to NULLS by
           passing a pointer to the buffer and the size of the buffer.
           i.e purge_buffer(buffer, 0x80).
           This may or may not be useful but is available.

         NOTE: There is a seperate purge function for the serial port input
           buffer if you wish to purge it before calling input.
           See CKIT.DOC

      * d. New function available called check_keypress. Checks for any
           specific ASCII character.
           This function will return TRUE/FALSE as defined in CKIT.DOC.

      * e. Another new function called check_CR will check for a carriage
           return and return TRUE/FALSE.

    4. get_nextpar() - Would only accept 2 stacked commands, fixed.

  While working on the get_nextpar() function,  I went ahead and targeted it
  for some optimization along with the get_cmdline() function.
  The results are:
   get_nextpar() is now smaller and 7% faster.
   get_cmdline() is now smaller and 45% faster.
 Overall, with all the corrections and added functions the .obj file for
 CKIT is now 2% SMALLER than before.

25-Jun-90 v1.05
    Release of version 1.05

        Added support for 16550AN UART.  The code will take advantage
        of 16550AN chip if present.  Added caller log function.
        Begin including the medium library with Zip.  This was done
        because of the self-registering feature.  Took out time limit
        that CKIT originally had.  Future releases will not have any
        limitations.

20-Jun-90 v1.0
    Release of version 1.0C

        Fixed another minor problem where the assembler I used had
        converted all my functions to uppercase in the .obj file.
        I thought the default was to not do that but as it turns out
        it wasn't.  Now all the library function names/variables are
        the right case.

16-Jun-90 v1.0
    Release of version 1.0B

01-Jun-90 v1.0
    Release of version 1.0

01-May-90 v1.0
   Initial BETA testing as CKIT10ß.ZIP

        Beta 1.0 release.  The next release of CKIT, I predict, should have
        about a 15% to 20% reduction in code size. If you find any problems
        with CKIT, please contact me at the phone numbers/address above.