BIBLIOGRAPHY: C LANGUAGE SOURCE MATERIALS
  C Language
  CP/M-80 Implementations of C
  Small-C Development
:SC80B 1.02    BIBLIOGRAPHY: SOURCE MATERIALS ON C LANGUAGE     dh:84-02-18
               ============================================

     A   number  of  books  are  now  available  on  C  Language  and   its 
applications.

     Several implementations of C Language,  including advanced versions of 
Small-C compilers, are now available for microcomputers.

     Since Small C was first introduced in the pages of Dr. Dobb's Journal, 
there  has been extensive discussion and refinement of  the  implementation 
and tools in subsequent issues.

     This  bibliography  on  these three aspects of  C  Language  has  been 
compiled and distributed as a public-domain HELP file.  File SC80B.HLP is

                 Copyright 1983, 1984, Dennis E. Hamilton

This  file and the other components of SC80HLP.LBR may be freely reproduced 
for  private  use so long as all notices of authorship  and  copyright  are 
preserved.   Send comments and suggestions to The MSW Company, P.O.Box 229, 
Penfield  NY  14526-0229.  (CompuServe 70100,271,orcmid.)
:                        REFERENCES ON C LANGUAGE
                         ========================

BASIC SOURCES:

Kernighan,  Brian  W.,  Ritchie,  Dennis M.   THE C  PROGRAMMING  LANGUAGE.  
     Prentice-Hall (Englewood Cliffs, NJ: 1978).  228pp. ISBN 0-13-110163-3 
     pbk.  This is the definitive description of C Language, offered by its 
     implementors.   A must for those interested in the original motivation 
     for C, its history, and its usage as a component of UNIX.  Recommended 
     as  a guide to "standard" C Language concepts and approaches for those 
     proposing to develop portable programs with this tool.

Kernighan,  Brian W.,  Plauger,  P.  J.   SOFTWARE  TOOLS.   Addison-Wesley 
     (Reading, MA: 1976). 338 pages.  ISBN 0-201-03669-X pbk.  "The control 
     flow  statements of Ratfor are shamelessly stolen from the language C, 
     developed for the UNIX operating system by D.M.  Ritchie.[p.318]"  The 
     connection  between  Ratfor  and C can now be (and  is)  exploited  in 
     applying  the  concepts of Software Tools to C  Language  programming.  
     Highly recommended for technique and appropriate application of C.

                                                                   [more ...]
Ledgard,  Henry F.   PROGRAMMING PROVERBS:  Principles of Good  Programming 
     with  Numerous Examples to Improve Programming Style and  Proficiency.  
     Hayden (Rochelle Park,  NJ:  1975).  ISBN 0-8104-5522-6 pbk.  There is 
     no  C  Language in this eminently readable and  practical  book.   But 
     there are understandable programs and ideas about how to make programs 
     sensible,  useful,  and enduring.  If you can learn to state the style 
     of  examples and exercises here in C Language -- there are no signifi-
     cant barriers to doing so -- you will have mastered a great deal  more 
     than just one more programming language available on microcomputers.

Ledgard,  Henry.,  Singer, Andrew.  ELEMENTARY PASCAL, as chronicled by Dr. 
     John D.  Watson.   Random House Vintage (New York: 1982). 266pp.  ISBN 
     0-394-70800-8   pbk.    C  Language,   for  all  the  claims  of   its 
     "friendliness,"  does  not  seem  to  be  well-suited  for  expressing 
     conceptual  techniques to be adapted into a variety  of  applications.  
     For  that,  the  C novice is served by the civilized European  cousin, 
     Pascal.   I  am  a strong advocate of learning to  translate  concepts 
     between programming languages, and this book is an excellent source of 
     clear ideas on which to not only teeth your Small C compiler,  but  on 
     which  to  develop  important sensibilities about  the  strengths  and 
     weaknesses of C.
                                                     [next: Programming in C]
PROGRAMMING IN C LANGUAGE:

Hancock,  Les.,  Krieger,  Morris.   THE C PRIMER.   McGraw-Hill (New York: 
     1982).  ISBN 0-07-025981-X pbk.  This is a perfectly fine introduction 
     to C Language at the fully-implemented UNIX level.   To apply the book 
     in microcomputer programming, understand that the operating procedures 
     for compiling and running programs (pp 6-11) will be quite  different.  
     The reader will also need to become adept, in any case, at translating 
     programs  into ones which use only those data types that are available 
     with the particular C Language compiler.

Purdum,  Jack.  C PROGRAMMING GUIDE.  Que (Indianapolis, IN: 1983).  250pp.  
     ISBN 0-88022-022-8 pbk.   This introductory guide is more sensitive to 
     the  variations that arise on microcomputer systems.   It  starts  out 
     more  leisurely.   I cannot fault the content,  but I have  difficulty 
     using the book myself,  apparently because of some barrier that I have 
     with the organization,  layout,  and use of typography.  [On the other 
     hand,  I  opened  a book at a very impressive part the other  day  and 
     bought  it because of that.   Now I have two copies of Purdum's  text, 
     having failed to recognize the edition from its cover!]

                                      [next: Predecessors and Implementation]
PREDECESSORS AND IMPLEMENTATION:

Richards,  Martin.,  Whitby-Strevens,  Colin.  BCPL -- THE LANGUAGE AND ITS 
     COMPILER.   Cambridge University Press (Cambridge: 1980). 173pp.  ISBN 
     0-521-28681-6 pbk.   Introduced in 1967, this acknowledged inspiration 
     for  C  Language  was one of the many attempts to develop  a  portable 
     compiling system for use in writing system programs.  (There have also 
     been continuing efforts with special variants of the PL/I language  as 
     well as Pascal,  ALGOL,  and JOVIAL.)  Although BCPL received a lot of 
     pre-UNIX attention in the halls of Digital Equipment Corporation,  the 
     language  now seems dated.   What recommends this book is its explana-
     tion  of  the language's implementation using ideas since  adapted  to 
     micromputers.

Halstead,  Maurice M.   MACHINE-INDEPENDENT COMPUTER PROGRAMMING.   Spartan 
     (Washington,  DC:  1962).   150pp + source codes (117 pp).   This find 
     defines the language NELIAC,  inspired by the development of ALGOL 58, 
     and  shows  how NELIAC was used from the outset in precisely  the  way 
     that we now look to C Language and its ilk as portable though machine-
     oriented languages.   There are a lot of lessons to be taken from  the 
     very   existence  of  this  book  (and  its  publication  date);   the 
     programming examples are even useful as C Language exercises.
:                      CP/M-80 IMPLEMENTATIONS OF C
                       ============================

     Beside  the  Small-C  implementations listed  in  section  D  (Small-C 
Development), there are a few commercial implementations on the market:

C/80 version 1.5.   Software Toolworks,  Sherman Oaks  CA 91423.   Released 
     December 20,  1980,  this is an extension of Small-C prepared by  Walt 
     Bilofsky.   It  is  a  very tidy implementation that operates  in  the 
     spirit of Small-C.   A special assembler is also provided for  library 
     inclusion and assembly of compiler output directly to .COM file.

C/80 version 3.0.   Software Toolworks, 15233 Ventura Boulevard Suite 1118, 
     Sherman Oaks  CA 91403.   Released in July,  1983, this significantly-
     expanded implementation of C/80 is quite comprehensive.   The documen-
     tation is crisp and spare,  but acceptable for an implementation  that 
     retails for $50.  This version will work through MicroSoft Macro-80 or 
     Digital Research RMAC, exploiting relocatable library capabilities.

C/80 MATHPAK version 3.0: Float and Long Data Types for Toolworks C/80 3.0.  
     Software Toolworks, July 1983.  Implements 32-bit longs and floats. 
                                                                   [more ...]
CW/C.  The Code Works,  Box 550, Goleta, CA 93116.  A descendant of Small-C 
     requiring a 56k CP/M system.

Q/C.  The Code Works.   Jim Colvin's Small-C descendant that works on a 48k 
     CP/M system and that has full compiler source code.

Small-C.   The  original  program.   Distributed  by The Code Works  for  a 
     nominal  fee.   Contact  The Code Works for more  information  on  the 
     status of compilers distributed by them.

          Definitive information about other sources that deserve inclusion 
          in  this section will be gratefully acknowledged.   I  prefer  to 
          hear from people who have used the product and have no connection  
          with its implementors and distributors, however.
                                             -- D.E.Hamilton, 84-02-18
:                   BIBLIOGRAPHY ON SMALL-C DEVELOPMENT
                    ===================================

     A  significant amount of public-domain development concerning  Small-C 
occurs in the pages of DDJ.   Back issues can be purchased from Dr.  Dobb's 
Journal,  P.O.Box  E,  Menlo Park CA 94025.   Periodically,  a sequence  of 
issues will be reprinted in a single paperback volume.







     This  material is in reverse chronological sequence,  so that you  can 
     review the most recent first:


                                 [next: Bibliography up to February 1984 ...]
Cortesi,  D.E.  SYSTEM  LANGUAGES (Dr.  Dobb's Clinic).   DDJ #88 (February 
     1984),  10-11.   Fuel  for some useful discussion on the  approach  to 
     building and using C Language.

Fleming,  Jim.  VIRTUAL PERSONAL COMPUTER.  DDJ #88 (February 1984), 32-59.  
     This will seem pretty bizarre at first, but there is an application of 
     C  Language in here:  production of a "virtual" protocol between  your 
     system  and a "host."  Take your time and read through it a few  times 
     to get the hang of this fascinating proposal.  The C Language programs 
     are not keyed to the text very well, but they seem to be complete.

Skjellum, Anthony.  C/UNIX Programmer's Notebook.  DDJ #88 (February 1984), 
     94-97.  A look at issues of C Language presentation style.

Suckow,  Harry.,  Cortesi, D.E. WE'LL C YOU AND RAISE YOU (correspondence).  
     DDJ  #87 (January 1984),  8-9,  12-15.   A debate on making C Language 
     perform on micros versus UNIX-level compatibility.

Mitchell, Edward.  A SIMPLE WINDOW PACKAGE.  DDJ #87 (January 1984), 36-43.  
     Since windowing is such an issue these days,  an interesting challenge 
     for  C Language wizards.   The programming is in Pascal  and  Ada-ese.  
     All right guys, tell me again how C is better than Pascal.    [more ...]
Pulier,  Myron L.,  McWorter,  William A.  Jr.,  Enright, Michael T.  FAST, 
     FASTER CIRCLES,  and FAST ELLIPSES.   DDJ #86 (December 1983),  18-31.  
     This  is  information on methods,  no C Language included,  for  doing 
     geometry  quickly,  something the C Language graphic  programmer  will 
     care about.

Ashdown, Ian.  CURSOR CONTROL FOR DUMB TERMINALS.  DDJ #86 (December 1983), 
     32-38.   Again,  there  is  no  C Language,  but a set  of  procedures 
     (illustrated  in Assembler) that let any display with at least a  home 
     cursor function behave as a cursor-addressable device.   Nice idea for 
     building into the run-time interfaces for a general-purpose C system.

Cortesi,  D.E.  LOOKING TO C (Dr. Dobb's Clinic).  DDJ #85 (November 1983), 
     11-19.   An invaluable recounting of one system programmer's effort to 
     derive a utility program in C Language.

Skjellum,  Anthony.  C/UNIX PROGRAMMER'S NOTEBOOK.  DDJ #84 (October 1983), 
     16-18.   Discusses  problems of C-subset incompatibilities and ways to 
     write understandable, portable code.                          [more ...]
Wilson,  W. E.  UNIX TO CP/M FLOPPY DISK FILE CONVERSION.  DDJ #84 (October 
     1983), 20-39.  Mining the C Language gold found on UNIX disks.

Staneff,  John.  A SMALL-C HELP FACILITY.  DDJ #84 (October 1983), 40-58ff.  
     A  nicely-organized C-Language implementation of a  hierarchical  HELP 
     facility.  The script is incompatible with those used to guide Richard 
     Conn's CP/M HELP system, but this is an interesting alternative. 

Willman,  Bryan M.  C CLEARLY WITH DESCRIPTIVE OPERATORS (letter).  DDJ #82 
     (August  1983).   Recommends some alternative operator  #define-itions 
     for avoiding confusion of = with ==, & with &&, etc.

Macpherson,  Andrew.   CATCHING  BUGS IN SMALL-C (letter).   DDJ #81  (July 
     1983), 6ff.  More corrections for SC80 version 2.0.

West, Paul F. MORE SMALL-C FIXES (letter).  DDJ #81 (July 1983), 105-106.

Ream, Edward  K.  RED:  A BETTER C SCREEN EDITOR.   Part I:  DDJ #81  (July 
     1983),  34-64 includes first part of the Small-C source;  Part II: DDJ 
     #82  (August 1983),  62-97 gives remainder of Small-C source and  four 
     needed  libraries:  lib1 (basic elementary operations),  lib2  (CP/M), 
     fiolib1 and xlib.                                             [more ...]
Bolstad,  Terje.  CP/M BDOS AND BIOS CALLS FOR C.  DDJ #80 (June 1983), 22-
     27.   Functions BDOS and BIOS are defined for unstructured interfacing 
     to CP/M from within the C program.

Howard, Alan D.  ENHANCING THE C SCREEN EDITOR.  DDJ #79 (May 1983), 38-63.  
     Gives  some  improvements and refinements to  Edward  Ream's  original 
     Small-C-written screen editor.  (The RED version is more recent.)

Murphy,  Walter  V.  RECLAIM:  A  File  Reclamation Utility  for  Destroyed 
     Directories.   DDJ #78 (April 1983),  14-23.  Another example of disk-
     utility programming using C as the software language.

Freed,  Edwin E.   BINARY MAGIC NUMBERS:  Some Applications and Algorithms.  
     DDJ #78 (April 1983),  24-37.  Yes, I know, all of the examples are in 
     Pascal.   But they are so tidy and simple to convert, why not use them 
     as Small-C exercises (since most C programs are so obscure).

Cain, Ron.,  Macpherson,  Andrew.  HIGH PRAISE FOR SMALL C. (letters).  DDJ 
     #76 (February 1983), 10-11.  Includes important repair for an error in 
     SC80 V.2.

                                                                   [more ...]
Hendrix,  J.E.   SMALL-C COMPILER,  V.2.  Part I: DDJ #74 (December, 1982), 
     16-53   summarizes  the  changes to the  language  and  implementation 
     fixes,  along with giving the first part of the C-language implementa-
     tion;   Part II:  DDJ #75 (January 1983),  48-64 concludes all source-
     code  listings.   Since  it  is written in  Small-C,  except  for  the 
     libraries,  an  interesting exercise in using an earlier compiler that 
     you might have handy.

Johansson, Jan-Henrik.  ARGC AND ARGV FOR SMALL-C (Dr. Dobb's Clinic).  DDJ 
     #74 (December 1982),  62-64.   Accessing the CP/M command-line  buffer 
     and interpreting it in a compatible way, with Small-C implementation.

Skjellum,  Anthony.   ARGUM--A  C COMMAND LINE PROCESSOR.   DDJ #70 (August 
     1982),  10-31.   An elaborate set of procedures for handling  command-
     line  parameters  and options in accordance with a  miniature  command 
     language.  Looks like a lot of trouble.

Halfant,  Matthew.   SMALL-C  FOR THE 9900.   DDJ #69 (July  1982),  66-71.  
     Changes  the  code generators to "cross-compile" to the TMS  9900.   A 
     novel  way to make use of salvaged TI 99/4A's,  plus another  look  at 
     using C Language for system programming.
                                                                   [more ...]
Taylor,  Jeffrey L.   CROSS-REFERENCE GENERATOR IN C.  DDJ #68 (June 1982), 
     50-54.   A  Cross-reference listing for C programs produced with  a  C 
     program.   CREF UPDATE (letter).  DDJ #79 (May 1983),  7-9.   Provides 
     some  cleanups  for the "Cross-Reference Generator in C" and gives  an 
     improved tree-walking algorithm.  You'll love decoding this gem.

Bates,  Dan.  I CAN C FOREVER (letter).  DDJ #67 (May 1982), 7-8.  Improve-
     ment to the Small-C procedure for allocating local variables.

Kvaleberg,  Egil.  SMALL-C DISKDOC:  A Repair and Maintenance Utility.  DDJ 
     #66 (April 1982), 26-34.  A disk utility written in Small-C for you to 
     see  what  is going on and to learn about disk hardware  as  supported 
     under CP/M!  Correction letter: DDJ #67 (May 1983), 6-7.

Ream, Edward K.   A PORTABLE SCREEN-ORIENTED EDITOR.   DDJ #63 (Jan. 1982), 
     18-26,  42-61.  Complete Small-C source program.  SCREEN-ORIENTED BUGS 
     (letter).   DDJ #67 (May 1982),  4-7.  Fixes 9 bugs and 3 typos in the 
     portable  screen  editor [DDJ #63],  with kudos to some  fellow  named 
     David Harper of Henrietta, New York.

                                                                   [more ...]
Black, Rodney.  OH SAY, CAN I C! (letter).  DDJ #61 (November 1981), 4, 51.  
     Some useful optional modifications to Small-C.

Hendrix,  J.E.   SMALL  VM:  Nucleus  of a  Portable  Software  Development 
     Environment.   DDJ #61 (November 1981), 34-45.  A family of procedures 
     and interfaces that well serve the Small-C user.

Bolton, Bill.  SOME USEFUL C TIME FUNCTIONS.  DDJ #58 (August 1981), 16-21.  
     BDS C examples of operations performed using clock/calendar hardware.

Bailey,  Kirk., Gore, Mike., Roehl, Bernie.  SMALL-C: BUG-FIX BUG.  DDJ #57 
     (July 1981), 4-8.  Some fixes to fixes to bugs.

Hendrix,  J.E.   SMALL-C COMPILER (letter).  DDJ #56 (June 1981), 6.  Still 
     more  problem  repairs.   SMALL-C EXPRESSION  ANALYZER:  Patching  the 
     Address Arithmetic.   DDJ #62 (December 1981),  40-43.   Gives Small-C 
     source  for  repairing limitations in  original  pointer/array-address 
     arithmetic.   SMALL-C  NOTES,  BUG FIX.  DDJ #64 (February  1982),  6. 
     Corrections corrected.

Colvin, James L. Jr. SMALL-C COMPILER (letter). DDJ #52 (February 1981), 6, 
     37.  On an error in the run-time library shift routines.      [more ...]
Woods,  P.L.  SMALL-C: An Implementor's Notes and a Bug Corrected.  DDJ #52 
     (February  1981),   20-21,   32-33.    Finds  a  problem  in  argument 
     definition.  (See DDJ ##56-57 for more.)

Cain, Ron.   RUNTIME  LIBRARY FOR THE SMALL C COMPILER.  DDJ #48 (September 
     1980), 4-15.  The basic support library for generated code, along with 
     fundamental input-output.

Cain, Ron.  A SMALL C COMPILER FOR THE 8080'S.   DDJ #45 (May 1980),  5-19.  
     Definition  of the Small-C language and complete compiler source  code 
     (written in Small-C, of course).

Ritchie,   D.M.,   Johnson,  S.C.,  Lesk,  M.E.,  Kernighan,  B.W.   THE  C 
     PROGRAMMING LANGUAGE.   DDJ #45 (May 1980),  20-29.  Reprint of a Bell 
     Laboratories  report describing exactly what the authors had  in  mind 
     and what they think they've accomplished.
:
:
: SC80B.HLP first created on 83-12-11 by Dennis E. Hamilton.
