home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR41 / CTASK22D.ZIP / READ.ME < prev    next >
Text File  |  1993-07-04  |  16KB  |  421 lines

  1. CTask - A Multitasking Kernel for C.
  2. Version 2.2d, Released 93-06-08.
  3.  
  4. Public Domain Software written by Thomas Wagner
  5.  
  6. Internet:    twagner@bix.com
  7. BIX:         twagner
  8. Compuserve:  100023,2042
  9.  
  10. *** NOTE: ADDRESS CHANGE! ***
  11.  
  12. Business Address:
  13.  
  14.         Ferrari electronic GmbH
  15.         Ruhlsdorfer Strasse 138
  16.         D-14513 Teltow
  17.         Germany
  18.  
  19.         Phone: (49-3328) 474 626
  20.         Fax:   (49-3328) 438 04-0
  21.  
  22.         BBS:   (49-3328) 438 04-8 (from 8/15/93)
  23.                please don't try to call before 8/15!
  24.  
  25. Home Address:
  26.  
  27.         Thomas Wagner
  28.         Patschkauer Weg 31
  29.         D-14195 Berlin
  30.         Germany
  31.  
  32. This software is in the Public Domain. No registration is required,
  33. and no license fees or royalties must be paid. 
  34.  
  35. You are using this software at your own risk. There is no warranty on
  36. fitness for any purpose, and the author can not be held liable for
  37. any damages whatsoever.
  38.  
  39. Re-distribution by any media, disk or BBS, is expressly encouraged.
  40. Please distribute freely, but please leave the archives intact when
  41. re-posting. If there is a technical need to split up the archives,
  42. please include this read.me with all parts, and tell the user where
  43. to find the other parts. 
  44.  
  45.  
  46. Versions released so far:
  47.    0.1 (Beta)  88-03-01
  48.    1.1         88-07-01
  49.    1.1a        88-12-29
  50.    1.1b        89-05-30
  51.    2.0            89-12-24
  52.    2.1         90-07-23
  53.    2.1a        90-08-13
  54.    2.1b        90-08-14
  55.    2.2         90-10-12
  56.    2.2a        90-11-22
  57.    2.2b        91-05-28
  58.    2.2c        92-09-02
  59.    2.2d (this) 93-06-08
  60.    
  61. If you want to receive future updates, I recommend joining BIX. You
  62. will not only have access to the newest version of CTask, you will
  63. also get direct support from me through E-mail or the CTask support
  64. topic in the ibm.other conference. Please see the manual for
  65. more information on BIX, and for the complete support policy. 
  66.  
  67. For those without easy access to BIX, there will be a Ferrari BBS in
  68. the near future. Our BBS will provide the same level of support as BIX,
  69. i.e. you will be able to download the most current version, and discuss
  70. CTask in messages and E-mail. The BBS (single line for now) is scheduled
  71. to be operational August 15th, 1993.
  72.  
  73. Please use either BIX or our BBS whenever possible to obtain new
  74. versions.  Although I've offered to send update disks in the past,
  75. I'd like to reduce disk mailings to an absolute minimum. Mailing
  76. disks free is too costly for us, and payment has proven to be a
  77. problem (caching foreign cheques for small amounts often costs more
  78. in bank fees than the cheque is good for). Also, since new CTask
  79. releases have been sparse, it's frustrating for both me and you when
  80. you send in money, and don't receive anything for a long time.
  81. (Naturally, all those who sent money *will* receive a disk with the
  82. next major release once it's issued.) Our BBS will offer access at
  83. 14.400 bps, with V.42bis and MNP5 compression, so even transatlantic
  84. downloads will not cost you an arm and a leg. BIX offers access at
  85. 9600 bps direct dial, various speeds through Tymnet, and access
  86. through TELNET over the Internet at very moderate cost.
  87.  
  88.                 ----------------------------
  89.  
  90. Version 2.2 was released mainly to correct a number of known bugs in
  91. 2.1. The fixes a through d correct minor bugs, and adapt to new 
  92. compiler versions. CTask development will continue, but a firm date
  93. for a new major release can not yet be given. The new release will
  94. probably appear late '93, and will address at least one major problem:
  95.  
  96. Version 2.2 will not work correctly with Windows 3.0 or 3.1 in
  97. enhanced 386 mode if CTask is installed as TSR before starting
  98. Windows. The reason (communication between virtual machines) is
  99. known, but a solution would be rather complex. I will try to solve
  100. this problem in the next release. CTask will work fine with Windows
  101. 3.0/3.1 if started in a DOS-window, or if used with the real-mode
  102. version.
  103.  
  104.                 ----------------------------
  105.  
  106. Version 2.2a fixes three bugs:
  107.  
  108.   - Timeouts during an event wait caused an incorrect value to be 
  109.     returned (-3 instead of -1).
  110.  
  111.   - The tsk_install_dos initialization routine clobbered register SI.
  112.  
  113.   - Linking with shared code caused duplicate entry point errors, because
  114.     some entries were missing in the stub table. Adding the entries to
  115.     the table required changing them from "Localfunc" to "Globalfunc".
  116.  
  117. Version 2.2b fixes several bugs, including:
  118.  
  119.  - Register SI was clobbered in tsk_install_dos. This caused the
  120.    speedup parameter in tsk_install_main to cease working when compiled
  121.    with MSC 6.0 /Ox.
  122.  
  123.  - An incorrect value (-3, TWATCH) was returned for timeouts on event
  124.    waits.
  125.  
  126.  - The tsk_sprintf and tsk_vsprintf routines did not terminate the
  127.    resulting strings with a zero.
  128.  
  129.  - If CLOCK_MSEC was enabled, two routines used an incorrect timeout.
  130.  
  131.  - Function stubs for code sharing were incomplete/incorrect.
  132.  
  133.  - Turbo C Huge model produced fixup errors due to an incorrect placement
  134.    of an "extern" directive in TSKINT17.ASM.
  135.  
  136. This release also corrects a problem with Borland C++ 2.0 Huge model.
  137. BC++ uses a slightly different data segment structure, which has to
  138. be accounted for in the Assembler modules. TSK.MAC was changed, and
  139. you have to define BC_HUGE instead of TC_HUGE when compiling for BC++
  140. 2.0 Huge model.
  141.  
  142. Make files for BC++ Huge model are included as a sample. 
  143.  
  144. Typecasts were added in several modules to allow compilation in C++
  145. "native" mode, which does not support some ANSI C type coercions.
  146.  
  147. Version 2.2c fixes minor problems:
  148.  
  149.  - The distributed TSKCONF.H was *not* configured according to the
  150.    defaults. I had tested some features, and then forgot to switch
  151.    back to the default version. The precompiled libraries included
  152.    wouldn't work when linked with a default configuration.
  153.  
  154.  - If CLOCK_MSEC was enabled, most timeouts were not translated. The
  155.    tsk_timeout translation call was missing from both t_delay and 
  156.    the tsk_wait function.
  157.  
  158.  - Borlands TASM 3.0 is incompatible with previous versions in some
  159.    areas. The ".BC" make files were changed to include the "M510"
  160.    switch instead of the old "MASM51", and the TSK.MAC file was slightly
  161.    modified to account for the changes.
  162.    
  163.  - Borland C++ 3.1 complains about the duplicate definitions of inportb
  164.    and outportb in TSK.H. Since those definitions were included only to
  165.    account for a problem in Turbo C++ 1.0, which probably no one still
  166.    uses, the definitions were disabled.
  167.  
  168. Version 2.2d fixes minor problems, and adds more debug support:
  169.  
  170.  - When spawning, the DOS save area was initialised when the task was first
  171.    scheduled in. This could lead to tasks using incorrect PSPs, depending
  172.    on the order of events. In 2.2d, the save area is initialised on task
  173.    creation.
  174.  
  175.  - New debug options (in TSKDEB.H) allow tracing DOS calls, either buffered
  176.    or on-line.
  177.  
  178.  - A new serial option allows task snapshot output through a COM-port. The
  179.    printf routines were expanded to support (polled) COM-port I/O. Simple
  180.    input routines are also provided to aid in debugging:
  181.  
  182.                         Serial snapshot
  183.  
  184.    To output a snapshot dump to a COM port, you have to first initialise
  185.    the port somewhere (preferably during program initialisation):
  186.  
  187.         tsk_cprint_init (int port, int baud)
  188.  
  189.    The "port" parameter may either be 1..4 to use the "relative"
  190.    COM port number COM1..COM4, or an absolute port address.
  191.    The "baud" parameter may be 24, 96, 192, 384, or 1150.
  192.       Example: 
  193.         tsk_cprint_init (1, 96);
  194.  
  195.    The snapshot is invoked with 
  196.  
  197.         comsnapshot ();
  198.  
  199.  
  200.    After the port is initialised, you can also get input characters, for
  201.    example to trigger the snapshot dump using the remote terminal. There
  202.    are two routines:
  203.  
  204.         tsk_cprint_getc ()
  205.            Reads a character from the comm port if one is available.
  206.            The upper byte contains the line status on return, the lower
  207.            byte the received character or 0. The zero flag is set if
  208.            there is no character.
  209.  
  210.         tsk_cprint_waitc ()
  211.            Waits for and reads a character from the comm port.
  212.            The upper byte contains the line status on return, the lower
  213.            byte the received character.
  214.  
  215.  
  216.    Note: The port should not be used for other, especially interrupt
  217.    driven, activities. The tsk_cprint... routines use polling to allow a
  218.    snapshot to be output even when the system is unstable.
  219.  
  220.  
  221.                 ----------------------------
  222.  
  223. When compiling some of the files, you will get warnings about
  224. unreferenced formal parameters. This is normal, and should be
  225. ignored. The Turbo C pragma for turning off those warnings is not
  226. compatible with Microsoft, so it is not used in the current version.
  227.  
  228. Please inspect the sample sources before trying them out. Some samples
  229. use serial output, and may hang if no terminal is connected to the serial
  230. port. Other samples may directly access video memory on mono or color
  231. cards without checking for their existance, which may crash your system.
  232. The samples are provided only as a test base, not as ready-to-use code.
  233.  
  234.                 ----------------------------
  235.  
  236. Note that the Turbo C batch and make files refer to "lib" and
  237. "tmake", where Turbo users would normally use "tlib" and "make". This
  238. is to resolve naming conflicts in my own configuration. To use the
  239. files in a "standard" Turbo configuration, you may have to edit the
  240. files, or provide suitable alias definitions.
  241.  
  242. The huge model make files are not yet up to date with new versions of BC.
  243. If you should need huge model support, you may have to edit the make files,
  244. please use the standard make files as an example.
  245.  
  246.                 ----------------------------
  247.  
  248. Don't use TASM 1.0 to assemble the CTask routines. Version 1.0 of
  249. Borland's TASM has severe problems with the extended model
  250. directives, which will cause Assembly time errors, and, if you get
  251. past them, run time crashes. Versions 1.01 and later of TASM are safe
  252. to use.
  253.  
  254. You can also use MASM 5.1 for the TC version, just edit the make
  255. files to change the assembler name.
  256.  
  257. You will probably NOT be successfull trying to assemble the CTask
  258. routines with MASM 6.0. Microsoft managed to make their new version
  259. so totally incompatible with the old one that it's quite a feat to
  260. adapt sources to the new version while still staying compatible with
  261. the other assemblers. On top of this, MASM 6.0 is extremely buggy.
  262. Therefore, I will not adapt CTask to 6.0. If you don't have access to
  263. MASM 5.1, please get Borlands TASM.
  264.  
  265. From what I have heard, Microsoft MASM 6.1 is supposed to be more
  266. useable than 6.0, especially regarding 5.1 compatibility. I don't have
  267. a copy of 6.1 yet, so you'd have to check it out yourself.
  268.  
  269.                 ----------------------------
  270.  
  271. The manual included is ready for printing. No fancy formatting 
  272. was used, and the page length was chosen to fit the short 
  273. American sized paper. The only control character your printer 
  274. must understand is the formfeed. 
  275.  
  276.                 ----------------------------
  277.  
  278. Files in the archives:
  279.  
  280. Compiled CTask kernel and support routines
  281.  
  282.    CTASKMS.LIB  CTask kernel, Microsoft C (any model)
  283.    CTSUPMSL.LIB CTask support routines, MS-C (large model)
  284.  
  285.         The files were compiled with MSC 8.0 (MS Visual C++ 1.0).
  286.  
  287.    CTASKTC.LIB  CTask kernel, Turbo C (any model except Tiny & Huge)
  288.    CTSUPTCL.LIB CTask support routines, Turbo C (large model)
  289.  
  290.         The files were compiled with Borland C++ 3.1.
  291.  
  292. Documentation
  293.  
  294.    READ.ME      This file
  295.    CTASK.DOC    Documentation for CTask, ready for printing
  296.    FERRARI.DOC  Commercial advertising, required reading
  297.  
  298.    CTASK.DEF    Periscope debugger record definition file
  299.  
  300. Include Files
  301.  
  302.    KBD.H        Keyboard scan code and flag definitions for Hotkeys
  303.    PRT.H        Include file required for printer driver
  304.    SIO.H        Include file required for serial driver
  305.    TSK.H        Include file required for CTask kernel
  306.    TSKCONF.H    CTask configuration options (C and Assembler)
  307.    TSKDEB.H     Debug mode configuration (C and Assembler)
  308.    TSKLOCAL.H   Include file for internal CTask use
  309.    TSKPRF.H     Function prototypes for printf replacement routines
  310.    TSKSUP.H     Include file required for support routines
  311.  
  312.    TSK.MAC      Assembler include file
  313.  
  314. Source files for the CTask kernel
  315.                 
  316.    TSKASM.ASM   Scheduler and miscellaneous ASM routines
  317.    TSKBIOS.ASM  AT BIOS wait/post handler (INT 15)
  318.    TSKDOS.ASM   DOS multiplex interface for CTask
  319.    TSKEMS.ASM   EMS support routines
  320.    TSKINT17.ASM BIOS printer interface (INT 17)
  321.    TSKKBD.ASM   Keyboard interface and hotkey handler
  322.    TSKNDP.ASM   Numerioc coprocessor support routines
  323.    TSKPRTI.ASM  Printer driver interrupt stack switcher
  324.    TSKQUE.ASM   Queue handling
  325.    TSKRES.ASM   CTask residency check
  326.    TSKSEC.ASM   DOS and Keyboard interface routines
  327.    TSKSIOI.ASM  Serial driver interrupt stack switcher
  328.    TSKSTCK.ASM  Stack switch routine
  329.    TSKSTUB.ASM  Code sharing function stubs/entry table
  330.    TSKTIM.ASM   Timer tick interface (INT 8)
  331.  
  332.    TSKBUF.C     Buffer events
  333.    TSKCNT.C     Counter events
  334.    TSKFLG.C     Flag events
  335.    TSKGRP.C     Group creation/removal
  336.    TSKHOT.C     Hotkey creation
  337.    TSKINST.C    Main kernel installation/removal
  338.    TSKMAIN.C    Main CTask installation routines
  339.    TSKMEMW.C    Memory watches
  340.    TSKMSG.C     Mailbox events
  341.    TSKNAME.C    Name searching
  342.    TSKPORW.C    Port watches
  343.    TSKPIP.C     Pipe events
  344.    TSKPRT.C     Printer driver
  345.    TSKRSC.C     Resource events
  346.    TSKSIO.C     Serial I/O driver
  347.    TSKSUB.C     Subroutines for internal CTask use
  348.    TSKTASK.C    Main task related routines
  349.    TSKTICK.C    Ticker handling
  350.    TSKTOPS.C    Timeout and watch routines
  351.    TSKTSUB.C    Timer/watch helper subroutines
  352.    TSKTTSK.C    Timer task
  353.    TSKTUTL.C    Task utility subroutines
  354.    TSKUTIL.C    Miscellaneous utilitiy routines
  355.    TSKWPIP.C    Word pipe events
  356.  
  357. Support routine source files
  358.  
  359.    CONOUT.C     Console output support
  360.    TSKALLOC.C   Memory allocation RTL interface
  361.    TSKSNAP.C    Snapshot dump utility
  362.    TSKPRF.ASM   Printf replacement routines
  363.  
  364. Sample application sources
  365.  
  366.    MINRES.ASM   Minimal resident CTask
  367.    TESTMOD.ASM  Check for model independence
  368.  
  369.    RES.C        CTask TSR
  370.    SNAP.C       Snapshot dump
  371.    SPAWN.C      Spawn DOS
  372.    TEST.C       General Test
  373.    TPRT.C       Test printer driver
  374.    TSIO.C       Test serial driver
  375.  
  376. Batch files to make kernel and samples
  377.  
  378.    MS.BAT       Make Kernel and support routines, MS-C
  379.    SAMPMS.BAT   Make Sample applications, MS-C
  380.    CTC.BAT      Make Kernel and support routines, Turbo C
  381.    SAMPTC.BAT   Make Sample applications, Turbo C
  382.    TCH.BAT      Make Kernel and support routines, Turbo C Huge model
  383.    BC.CFG       Compiler configuration file, BC++ 3.1
  384.    CBC.BAT      Make Kernel and support routines, BC++
  385.  
  386. Microsoft Make files for Microsoft C 6.0/MASM 5.1
  387.  
  388.    CTASK.MS     Make Kernel
  389.    CTSUP.MS     Make Support Routines
  390.  
  391.    MINRES.MS    Make MINRES.ASM
  392.    RES.MS       Make RES.C
  393.    SNAP.MS      Make SNAP.C
  394.    SPAWN.MS     Make SPAWN.C
  395.    TEST.MS      Make TEST.C
  396.    TESTMOD.MS   Make TESTMOD.ASM
  397.    TPRT.MS      Make TPRT.C
  398.    TSIO.MS      Make TSIO.C
  399.  
  400. Borland Make files for Turbo C/TASM
  401.  
  402.    CTASK.TC     Make Kernel
  403.    CTASK.BC     Make Kernel, BC++
  404.    CTSUP.TC     Make Support Routines
  405.    CTSUP.BC     Make Support Routines, BC++
  406.  
  407.    CTASKH.TC    Make Kernel, Huge model
  408.    CTASKH.BC    Make Kernel, Huge model, BC++
  409.    CTSUPH.TC    Make Support Routines, Huge model
  410.    CTSUPH.BC    Make Support Routines, Huge model, BC++
  411.                 
  412.    MINRES.TC/BC Make MINRES.ASM
  413.    RES.TC/BC    Make RES.C
  414.    SNAP.TC/BC   Make SNAP.C
  415.    SPAWN.TC/BC  Make SPAWN.C
  416.    TEST.TC/BC   Make TEST.C
  417.    TESTMOD.TC/BC Make TESTMOD.ASM
  418.    TPRT.TC/BC   Make TPRT.C
  419.    TSIO.TC/BC   Make TSIO.C
  420.  
  421.