VM/COM, July 1985



1
-
            OO        OO OOO   OOO      //  OOOOOOO   OOOOOOO  OOO   OOO
             OO      OO  OO OOO OO     //  OO     OO OO     OO OO OOO OO
              OO    OO   OO  O  OO    //   OO        OO     OO OO  O  OO
               oo  oo    oo     oo   //    oo        oo     oo oo     oo
                oooo     oo     oo  //     oo     oo oo     oo oo     oo
                 oo      oo     oo //       ooooooo   ooooooo  oo     oo
0           ------------------------------------------------------------
            July 1985 edition                        Volume 2   Number 2
-                            CsNews Network Newsletter
-
-
            Staff:
0               Michele Robinson    CSMICH  at MAINE    Editor
                Andrew T. Robinson  ANDY    at MAINE    CsNews Director
                Prof. G. Markowsky  MARKOV  at MAINE    Faculty Advisor
0             (Special thanks to Dave Eckhardt, DAE@PSUVAX1, for error,
               spelling, and grammar checking)
-
0            Ôçççççççççççççççççççççççççççççççççççççççççççççççççççççççä
             ³ Newsletter article contribution Userid:  CSNEWS@MAINE ³
             ³                                                       ³
             ³  Contributions from readers welcomed and encouraged!  ³
             ¨ççççççççççççççççççççççççççççççççççççççççççççççççççççççç]
1
0                                Vm-Com  Issue 2.2
-
0                                Table of Contents
+                                _____ __ ________
-           Introduction to Vm/Com 2.2  . . . . . . . . . . . . . . .  1
            CSNEWS Notes  . . . . . . . . . . . . . . . . . . . . . .  2
            Designing a DataBase  . . . . . . . . . . . . . . . . . .  3
            IBM/370 I/O Architecture  . . . . . . . . . . . . . . . .  6
            A Look at ISPF  . . . . . . . . . . . . . . . . . . . . . 10
            NetCon -- Spring '85: A Summary . . . . . . . . . . . . . 12
            A Poem  . . . . . . . . . . . . . . . . . . . . . . . . . 14
            OpCodes . . . . . . . . . . . . . . . . . . . . . . . . . 17
-
-
-
-
-
-
-
-
-
-
-
-
-
-                                        2
1
0                                Vm-Com  Issue 2.2
0                            Introduction to Vm/Com 2.2
+                            Introduction to Vm/Com 2.2
-
                Welcome  to issue  2.2!!!  In  this issue  you will  see
            articles on IBM/370 I/O programming, an introduction to ISPF
            (Interactive  System  Productivity Facility),   a  guide  on
            designing databases,  a  report on the recent  NETCON in New
            York,  and a  humor section consisting of a  poem about LISP
            and a collection of rather unusual OPCODES.
0               If any  of you are  interested in  contributing articles
            for future editions drop me a note. We really could use help
            from all  our readers!!!  Also if  you have anything  to say
            about  Vm/Com  or even  something  about  CsNews drop  us  a
            mailfile...  If it's ok with you I'll publish it in a future
            Vm/Com issue.
0               Hope you  all enjoy it!!  and  I'll be seeing  you again
            next issue...
0           Michele Robinson
            Editor
-
-
-
-
-
-
-
-
-
-
-                                        1
1
0                                Vm-Com  Issue 2.2
0                                   CSNEWS Notes
+                                   CSNEWS Notes
0                         Andrew T. Robinson (ANDY@MAINE)
-               As I'm sure most of you  can see,  the Vm/Com production
            effort is  (finally)  in gear.   We  had a bit of  a problem
            between issue 1.1 and issue 2.1,  but hopefully you will see
            a new  Vm/Com every  month  or so  (god  forbid,  maybe  bi-
            weekly!).
0               While I  am here,  I may as  well tell you what is going
            on with CSNEWS this summer.    At the current time,  funding
            has  been allocated  for the  development  of a  locally-run
            (MAINE users  only)  user-friendly interface  system.   This
            interface will initially consist  of three major components:
            a mailer,  a  conferencing system (local use  only),  and an
            academic database system.
0               And while all this is going on,   I am attempting to re-
            write  portions   of  CSNEWS  (specifically,    the  command
            dispatcher and lower-level routines) in IBM/370 Assembler to
            decrease CSNEWS' response  time,  as well as  its CPU usage.
            As one example of our current  usage,  between the months of
            August 1984 and May 1985,   CSNEWS used approximately $40000
            worth of CPU time (assuming  the current departmental 'funny
            money' rate of $3.00 per Computing Resource Unit).  That's a
            lot of CPU time!  I'm glad Maine *doesn't* charge for system
            usage...
0               One thing I have noticed is  that the CSBBoard system on
            CSNEWS  doesn't seem  to be  getting much  use.   Our  other
            forum,  FLAME,  is getting more  use that I'd ever imagined,
            but CSBB doesn't get updated more  than once every couple of
            weeks.  All I can say is, C'mon people!   CSBB is one of the
            simplest and  easy to  use BBoards  there is.    We will  be
            implementing a much needed SEARCH  command this summer,  and
            the  system is  already set  up  to allow  easy location  of
            desired information... So use it!
0               Speaking of FLAME... It's been getting a LOT of use, and
            there are a lot of interesting conversations going on in it.
            Originally, FLAME was intended to be a Vm/Com column, but as
            it turns out,  I'm glad we made it a separate service!   But
            just one word of caution (a pleading one)...   Don't get too
            carried away in your FLAMEs.   Remember that CSNEWS is still
            subject to the long arm of administrative rule,  and I would
            prefer not  having to delete  FLAMEs because someone  in the
            hierarchy  is complaining  about the  content  of the  FLAME
            file.  Keep it clean, if at all possible.
0               I guess that's about it for now.  Thanks for reading (if
            you've gone this far) and I'll see you next issue!
-                                        2
1
0                                Vm-Com  Issue 2.2
0                               Designing a DataBase
+                               Designing a DataBase
0                            Howie Ducat (Howie@Bklyn).
-
                 The idea  of having  a database is  that it  provides a
            centralized control  for a  user's/company's data.   This in
            itself will reduce redundancy of data,  hold inconsistencies
            in data to  a minimum (insure integrity),  allow  data to be
            shared by more than one user  if necessary,  and make a data
            security system somewhat easier to implement.  The following
            is an outline of considerations when designing a database.
0           Requirements:
+           Requirements:
0                Before  we  can  begin,   we must  first  look  at  the
            requirements of the  company.  We must see the  type of data
            that  the company  feels  will be  relevant  to their  daily
            processing.   At  the same  time  we  are viewing  the  data
            specifications,   we  should  also   be  defining  the  data
            elements.  The two  previous steps will familiarize  us with
            the general types of data, how we might store the data,  and
            define  what  exactly  is  needed  and  not  needed  in  the
            database.
0                Another good idea at this point is to find out from the
            company how they will use the  database,  when they will use
            it,  and why they believe they  need one.  Will they require
            immediate  updating  of  records or  will  end-of-day  batch
            processing serve their purpose?  What  type of response time
            will they need (not want, as in the real world,  it is plain
            to see  that everyone wants  everything 2 minutes  ago)?  We
            should  try to  ascertain the  company's rate  of growth  to
            allow  for extra  space/room to  expand  if necessary,    as
            easily and with as little downtime as possible.
0                After the requirements have been  outlined we feel that
            a  few things  should  be done.   First,   we must  consider
            personnel planning, cost comparisons, cost/benefit analysis,
            and a project  budget.   We will need to know  how to divide
            the  total project  budget  between all  needs  in order  to
            complete the project.  We must  hire two or three programmer
            analysts (depending on the urgency of the project),  and one
            or  two systems  personnel  to take  care  of the  operating
            system's  needs  (as  well as  the  possible  formatting  of
            external  storage  devices,   and channeling  I/O  flow  for
            maximum speed and  efficiency).   Also needed is  a database
            manager,   who will  make  key  decisions on  insertion  and
            deletion  of  key  data   elements,   expansion  of  storage
            capacity,  and purchases of additional hardware and software
            after the database  is in production.  After  this,  a clear
            schedule  of installation  and development  of the  database
            must be made,  involving matters such  as how long each step
0                                        3
1
0                                Vm-Com  Issue 2.2
0           would take, how much time would be spent on aspects, and who
            will take care of each aspect.   We  should allow for one or
            two small  setbacks per step so  as to bring  the scheduling
            closer to a real world situation.
0           ACCESS METHODS:
+           ACCESS METHODS:
0                We are  applying the following  rules to our  choice of
            access methods:
0           1)  We are not considering purely sequential media,  such as
            magnetic tape,  since it imposes too many restrictions to be
            useful to  our database  EXCEPT as  a medium  for journaling
            activity.
0           2)  We make no attempt to  predict what future DASD or other
            external storage classes  will be like,  but if  a new large
            capacity DASD were to be produced,   we will be able to take
            immediate  advantage  of  it,   provided   we  set  up  data
            independently  from  disk   addressing  keys  (random/direct
            accessing).
0                We must take into account the volume of data and how it
            will be used in order to  choose the access method.  If more
            than  say,  70%  of all  records  will be  posted each  day,
            sequential files might be best.    However,  if you post few
            records but do a large number of inquiries, ISAM, random, or
            direct  access methods  might be  a good  idea (no  updating
            though!).  If you will be doing little to moderate updating,
            and comparing many data elements, an inverted file structure
            is one possibility. A hierarchical file structure might also
            be used,  which seems an even better choice,  because when a
            user does  a data comparison he  will see "one  record" when
            there are  really multiple  records,  existing  in different
            files,  possibly with different  LRECL's and BLKSIZ's,  thus
            providing more flexibility.
0           SECURITY & PRIVACY:
+           SECURITY & PRIVACY:
0                With the ever increasing number of "Hackers",  security
            is becoming more and more important.  First, we will briefly
            discuss data  security.   A simple yet  effective precaution
            against internal (within Data Center) sabotage is a magnetic
            field detector.  The detector alerts management that someone
            is attempting to  enter the Computer Center  with a magnetic
            device.   A magnetic device can  do serious damage to Direct
            Access Storage  Devices,  in-CPU program  instructions,  and
            Magnetic Tapes (which transaction logs  are usually kept on)
            by  simply  erasing,   or  by  reversing  the  information's
            meaning.   Another type of Data Center security are Magnetic
            Card Readers with a teletype,  (to produce a hardcopy of who
            enters which  areas of the  Center)  and a  door Lock/Unlock
            system.   This will (almost) ensure that no one gets into an
            area  where they  do  not  belong,  therefore  lowering  the
0                                        4
1
0                                Vm-Com  Issue 2.2
0           probability of internal sabotage.
0                Access security  should  be considered at this  time as
            well.   If  data is  highly confidential,   different access
            levels  can  be  set  up  so  that  only  certain  users  or
            administrators can view it.
0            Examples:
0                 A)  Database Administrator:   Unrestrained access
                 to
                     to   entire   relation  for   ALL   types   of
                 operations.
                  B)   Payroll Department:   May  see ONLY  Payroll
                 related
                     data. ie: Name, Address, SS#, Salary, # of
                     dependents
                  C) Employee:  Can only VIEW his/her record.  NO
                     UPDATING is permitted.
0           The above can  be achieved by what  is called Identification
            and Authentication,   which is comprised  of user  names and
            passwords  along with  link  passwords  to specific  devices
            where certain data lie.
0           MANAGEMENT CONSIDERATIONS:
+           MANAGEMENT CONSIDERATIONS:
0                Management  must   consider  the  following   when  the
            database is  in the designing  stages:  user's  needs,  what
            types of  reports will be  required by  different department
            personnel,  what maximum  response time should be,   and how
            "User Friendly" should the database be.
0                Management   should  also   try   to  provide   maximum
            processing time (or minimum  downtime),  design the database
            within the budget  of the company,  and try  to make program
            functions as  modular as  possible,  thus  facilitating easy
            changes/additions  to program  code in  as short  a time  as
            possible.
-                These are just  the very basic considerations  for even
            beginning to  design a database.   Once  specifications have
            been received,   and work has  begun,  there are  many other
            things that must be considered.
0                Special thanks  to Robert Dong  (KAMIKAZE@BKLYN)  whose
            presence  in  my  database   class  prevented  my  premature
            insanity.  -H.D.
-
-
                                         5
1
0                                Vm-Com  Issue 2.2
0                             IBM/370 I/O Architecture
+                             IBM/370 I/O Architecture
0                         Andrew T. Robinson (ANDY@MAINE)
-
                Computers in general would be pretty useless if they did
            not have some method for interacting with the outside world.
            The intent of this article is  to introduce the structure of
            the IBM 370 I/O system, and I/O programming in general.
0               IBM s/370 computers use  a powerful interrupt-driven I/O
            system.   Doing I/O does not tie up, or INTERLOCK,  the CPU.
            Programs can continue executing while I/O is being completed
            on a device.  This is accomplished by CHANNELS. A channel is
            basically  a small  computer  that  handles I/O  operations.
            Every device attached to the CPU has an ADDRESS.  An example
            of this address  is the line-number that is  returned from a
            QUERY NAMES  command next to  the userid.   This  address is
            often referred to as 'cuu' where 'c' is the channel address,
            and 'uu'  is the unit  address.   This  means that up  to 16
            channels (0-F)  may be attached to a 370 CPU.   Each channel
            may  have  attached  to  it   either  256  devices,   or  16
            subchannels with 16 devices each.
0              Channels come  in two basic varieties,   SELECTOR,  which
            handle high-speed I/O  devices such as tapes  or disks,  and
            MULTIPLEXOR,   which  handle  low   speed  devices  such  as
            terminals.  Selector channels are dedicated to one device at
            a time.   If the tape drives are on channel 5, only one tape
            drive at a  time is serviced.   Multiplexor  channels handle
            several devices simultaneously, such as terminals.   This is
            necessary  to provide  the  real-time  response needed  from
            interactive terminals.
0               The IBM/370 machine language actually possesses very few
            instructions dealing  with I/O.   There are  instructions to
            start,  test,  and halt I/O operations on a specific device,
            but the actual operations are performed by a CHANNEL PROGRAM
            kept  in main  storage.   A  channel program  consists of  a
            series of 8-byte words called CHANNEL COMMANDS WORDS (CCWs),
            which specify operations to be performed,  such as a read or
            a write to a device, etc.  In general,  the channel commands
            are device specific, which is to say,  a WRITE command for a
            terminal will not usually work on a disk drive.  The channel
            command also contains such things as  the address of data to
            be written,  or into which data is to be read,  and how many
            bytes are to be transferred.   There  is also a 'transfer in
            channel' CCW (channel  command word)  which allows  loops in
            channel  programs.   A  channel program  may be  arbitrarily
            long, and perform many operations in a single invokation.
-
0                                        6
1
0                                Vm-Com  Issue 2.2
0               To  initiate I/O  operations the  programmer must  first
            place the  address of  his channel  program in  a predefined
            area of storage known as the CHANNEL ADDRESS WORD (CAW). The
            CAW  is  located at  the  fixed  storage address  x'48'  (48
            hexadecimal).   Once the  address of the channel  program is
            stored in  the CAW,  you initiate  the I/O operation  with a
            Start I/O (SIO) instruction. SIO causes the channel to begin
            executing your channel program.
0               Now the user program may continue to execute.   However,
            it  is generally  recommended that  the  I/O operations  are
            allowed to  complete before  execution continues.    This is
            accomplished by one of two ways:   a Test I/O (TIO) loop, or
            a PROGRAM WAIT.   In this article,   we will discuss the TIO
            loop method for determining I/O completion.
0               Generally you set up the  TIO loop immediately after the
            SIO instruction.   It is  simply a  TIO instruction  for the
            specific device, followed by a series of BRANCH instructions
            for specific  condition codes.   For  a TIO,   the following
            condition codes are defined:
0           CC = 0 -- channel and device available
            CC = 1 -- channel status word stored
            CC = 2 -- device is busy (executing channel program)
            CC = 3 -- device is not operational
0              If the  condition code  is 3  you should  leave the  loop
            immediately.   In more sophisticated applications, you would
            test the Channel Status Word stored when  you get a CC of 1,
            but in this  example,  we will wait  for a CC of  0 and then
            exit the loop.    The Channel Status Word is  stored after a
            channel  interrupt,    and  contains   detailed  information
            regarding the progress of the I/O operations.   The CSW will
            be discussed in a later article.
0              The   following   assembler   program   illustrates   the
            principles discussed above.  Instructions for assembling and
            executing it follow the program.   The program simply writes
            a line  of text  to your terminal,   which is  (usually)  at
            device address X'009' (that is, channel 0, device 09):
-
-
-
-
-                                        7
1
0                                Vm-Com  Issue 2.2
0           WRITERM  CSECT
                     STM   R14,R12,12(R13)  save registers passed by CMS
                     LR    R12,R15          load our entrypoint into R12
                     USING WRITERM,R12      address this program
            *
            * In order to store in location x'48' we must have a nucleus
            * storage key,which we accomplish with the CMS DMSKEY macro.
            *
                     DMSKEY NUCLEUS       establish a  zero  storage key
                     LA    R4,CHANPROG    get the address of our channel
            *                             program
                     ST    R4,X'48'       store into the CAW
                     DMSKEY RESET         restore the last  storage  key
            *
            * now having stored the  ADDRESS of our channel program,  we
            * initiate I/O on the CMS console (device x'009')
            *
                     SIO   X'009'        X'009'  is the  device on which
            *                            I/O is done
            *
            * now do a TIO loop to make sure I/O is complete.  We simply
            * wait for a condition code of zero,  and then drop out.
            *
            TESTLOOP TIO   X'009'          test device
                     BO    OUTOFIT         BO is for CC=3,
            *                                 device not operational
                     BNZ   TESTLOOP        if CC Not Zero, do loop again
            *
            * Now we are through doing I/O, go back to CMS.
            *
            OUTOFIT  LM    R14,R12,12(R13)      get registers back
                     XR    R15,R15              make a zero  return code
                     BR    R14                  return to CMS
            *
            * the following area is the channel program, consisting of 1
            * channel command word,  which writes the message  at MSG to
            * your terminal.  The X'01' is the command code for a WRITE,
            * X'20'   is the  CCW flag  which indicates  no more CCWs in
            * chain. If the channel program is more than 1 CCW long, the
            * X'20' would be changed to an X'60', in all the CCWs except
            * the last which would be kept X'20'.
            *
            CHANPROG DS    0D              align on double word boundary
                     CCW   X'01',MSG,X'20',MSGLEN
            *
            * The message area to be written
            *
            MSG      DC    C'This is a line output to the terminal.'
            MSGLEN   EQU   *-MSG              length of message
            *
            * following are required macro definitions
            *
                     REGEQU
                     END   WRITERM
0                                        8
1
0                                Vm-Com  Issue 2.2
0               This program actually works!!    To assemble and execute
            it, issue the following commands to CMS:
0           GLOBAL MACLIB CMSLIB DMSSP
            ASSEMBLE WRITERM
            LOAD WRITERM
            GENMOD
            WRITERM
0               This program illustrates the principles discussed above.
            It is relatively simple but should  give you an idea of what
            is described in the article.    My next article will discuss
            in detail some of the basic ideas presented above, including
            the  use  of  interrupts  and   checking  the  CSW  for  I/O
            information.
-               
-
-
-
-
-
-
-
-
-
-
-
-                                        9
1
0                                Vm-Com  Issue 2.2
0                                  A Look at ISPF
+                                  A Look at ISPF
0                          Code B. Shive (33000003@UNFVM)
-
                The  following  is part  one  of  a series  of  articles
            devoted to  the use of  an interactive dialog  system called
            ISPF.   Please  keep in  mind that  this is  a project  I am
            working on,  and I  am writing this as I learn.    I have no
            sources of  reference other than  the IBM  manuals furnished
            me.    For  those of  you  familiar  with  the system  I  am
            describing,  I am interested in talking.   However,  since I
            feel that this  is something fairly new (as  far as  student
            work goes),   I will  continue with  a description  of ISPF.
            Perhaps  in later  articles  I can  discuss  setting up  and
            actually running a program with ISPF.
-                Most  installations  employ full-screen  terminals  for
            both students and faculty.  There is a definite advantage in
            using an entire screen since the  screen is designed to suit
            the particular application  whether it is editing  a file or
            entering data.
0              There  are various  systems across  the  nation that  use
            full-screen applications. There are systems like CMS and TSO
            that are used to edit files.  There are also systems devoted
            solely  to  on-line  applications like  flight  bookings  on
            airlines.  These systems are different from those of  CMS or
            TSO,  but are similar in that they are used to communicate a
            screen of information at a time.
0               A popular  on-line system is CICS  (Customer Information
            Control System).  With CICS, the application program runs in
            a  special region  that is  set  up especially  for CICS  to
            operate.   The  next time you  see a data-entry  screen,  it
            probably  is from  an application  that  is operating  under
            CICS.
0               I have recently  discovered (though it was  not lost)  a
            new system  designed for  creating screens  and manipulating
            them in  dialogs.   Unlike CICS  and other  on-line systems,
            ISPF (Interactive  System Productivity Facility)   offers an
            easier approach to programming in an interactive environment
            without the  expense incurred from  running CICS.    ISPF is
            usually packaged  with PDF  (Program Development  Facility).
            With PDF,   you can edit new  screens for ISPF  and generate
            code for  the various libraries  ISPF requires you  to have.
            Using PDF is not necessary, but it is a nice addition.
-
-                                        10
1
0                                Vm-Com  Issue 2.2
0               Both of these systems run under their respective virtual
            machine that  runs disconnected.    To see  if you  have the
            facility available,  query the names on your system and look
            for ISPVM, ISP, or PVM.  Chances are that if you have ISPVM,
            you have PVM.   If you don't see  any of the above,  you are
            probably out of luck.  If you do, type in the keyword:
0                                     ISPSTART
+                                     ISPSTART
0           and hit the enter key.
0               If ISPF is installed correctly, you are presented with a
            screen in the form of a menu.  Select the tutorial, and page
            through the screens.   Unfortunately,   this tutorial is not
            designed for a beginner who is trying to create the screens,
            but it is  a nice demonstration of how  the finished screens
            will look.
0               To end the tutorial,  use the  PF15 key to return you to
            the first menu screen.   Then,  select the option to end the
            session.
-               Later, I will discuss how to design a screen and what is
            necessary for running programs and functions under ISPF.  If
            you are interested in more information, I am available.
-               
-
-
-
-
-
-
-
-
0                                        11
1
0                                Vm-Com  Issue 2.2
0                         NetCon -- Spring '85: A Summary
+                         NetCon -- Spring '85: A Summary
0                          Marc Kriguer  (VSS6751@UCLAVM)
-                This 'summary'  is intended more  towards those  of you
            who did not  go to the last Bitnet convention,   both to let
            you know what you missed, and to give you some reasons as to
            why you should go to the next  one (or at least give it some
            serious thought!).   With that in mind, here is a very quick
            summary of the Memorial Day event.
0                Due to circumstances beyond my control,  I was not able
            to make it to the party on  Friday night,  where most of the
            Bitnauts  first met  each other.    But  that didn't  really
            matter too much,  as most of  them were there the other days
            as well, and I got to meet them then.
0                On Saturday morning, (my roommate and) I arrived in New
            York, and were met by Miriam, Mr.  T.,  and Ferret (Marvin).
            We took a taxi to the  Essex house (where the convention was
            held), joined a large group about to have lunch (at a nearby
            delicatessen), and got to meet a lot of the people there.
0                After lunch, the group started to split up into about 4
            subgroups,  each of  which went touring a  different part of
            New York.  (For example, my group, led by Lynn Snyder,  went
            to the  World Trade Center.)   After  a few hours,   all the
            groups got  together and redivided  again for  dinner.   Our
            group  went  to  Chinatown,   another  went  into  Greenwich
            Village, etc.   After dinner,  some people in each group got
            together  again and  went to  see the  Rocky Horror  Picture
            Show,  while others went dancing,   others went bar hopping,
            and still  others did (or tried  to do)  all three.   It was
            basically Do What You Want To Do Night.
0                The next morning:  Was anyone awake?  I doubt it!
0                The next afternoon:   Breakfast.   Although SOME people
            woke up  before 3:00  PM,  I  was not  among them...   so my
            (relatively)   small group  of  4 went  on  a quest  through
            Central Park --  In Search Of Ray's  (Original)  Pizza.   At
            5:30,  we  gave up  and went  to The  Village and  found one
            there.  We made it back to the hotel at around 7:00, just in
            time to join the groups again.   (But after spending a great
            time in the rain with Steve Goldsmith (SEGXU) and Teri Blake
            (Blonde Bomb) in Central Park).
0                That night,   the plans were to  meet at the  Hard Rock
            Cafe, but there was an hour's wait,  and Bitnauts (at least,
            on the average) don't like waiting that long,  so we went to
            Danceteria,  found too high a  cover charge,  and decided to
            have our own party in the hotel.   (See -- Bitnauts know how
            to find fun, or at least make their own).
0                                        12
1
0                                Vm-Com  Issue 2.2
-                I won't go into too much detail about the party...  but
            I will say that a BITNET party HAS to be experienced.   :-)
0                What I  will say  is this --  speaking seriously  for a
            moment (but only  for a moment!)  --  I had never been  at a
            drinking party before...  and now I can add that (as well as
            many other "firsts") to my "list of experiences."
0                The party lasted till 5:30 in the morning,  even though
            only four  people actually made it  that far.   Most  of the
            people could make it out on their own,  but we had to help a
            couple back to their rooms.
0                Speaking of rooms -- the rooms at the Essex were really
            nice,   and the  key mechanisms  (somewhat resembling  punch
            cards)  allowed every person in a  room (maybe an average of
            4)  to go in and out  at will without disturbing the others.
            The management was very helpful in replacing bent/lost keys,
            and changing locks.
0                Finally,  Monday came.   (Or for  those few of us still
            awake after Sunday night's party, breakfast time came).   We
            went out in little groups to various dellies and cafes,  and
            got back to the hotel lobby for numerous goodbyes.
0                Most likely, the majority of the Bitnauts attending the
            Spring  NetCon  will  be  there   at  the  upcoming  one  in
            Washington in  October,  but  there will be  quite a  lot of
            "first timers," too.
0                Even if  you only  know a couple  of people  there,  or
            hardly ever chat,   that's not a real reason  for not going.
            NetCon is an ideal place to meet your old friends,  and make
            several new ones.
-                Well... that about covers it...  (Spring) NetCon '85 in
            a 85-line glance.    I could go on for pages  and pages with
            details  about New  York,  but  I won't,   mainly for  three
            reasons:   I have a deadline on  my hands,  this next NetCon
            will be in Washington, and so the physical surroundings will
            all be different, and,  finally,  because there is no way to
            do justice to 3 days in  less than that many pages...   (not
            to mention it would probably bore a few of you!)  but you'll
            just have to go to the next NetCon and see for yourself!
-           Note:  Although this is not REALLY meant as an advertisement
            for the upcoming BITNET 'Convention,' it will almost have to
            be taken in that vein.  -M.K.
-
0                                        13
1
0                                Vm-Com  Issue 2.2
0                                      A Poem
+                                      A Poem
0                           Written by Guy L. Steele Jr.
                       Submitted by Mike Dow (CSNM065@MAINE)
-
                           I think that I shall never see
                             A matrix lovely as a tree.
                            Trees are fifty times as fun
                              As structures a la PL/I
                      (Which Dijkstra claims are too baroque).
                      And SNOBOL's strings just can't compare
                        With all the leaves a tree may bear,
                         And COMIT strings are just a joke.
                           Vectors, tuples too, are nice,
                          But haven't the impressive flair
                         Of trees to which a LISP is heir.
                            A LISPer's life is paradise!
0                           Many people think that JOSS
                         And others too, are strictly boss;
                           And there are many BASIC fans
                      Who think their favorite language spans
                           All that would a user please.
                        Compared to LISP they're all a loss,
                        For none of them gives all the ease
                        With which a LISP builds moby trees.
0                                RPG is just a nurd
                        (As you no doubt have often heard);
                           The record layouts are absurd,
                         And numbers packed in decimal form
                           Will never fit a base-two word
                             Without a veritable storm
                          Of gross conversions fro and to
                           With them arithmetic to yield
                            And decimal places represent
                           Truncation loss to circumvent:
                              Thus RPG is second-rate.
                            In LISP one needn't allocate
                         (That boon alone is heaven-sent!)
                          The scheme is sheer simplicity:
                           A number's just another tree.
                           When numbers threaten overflow
                        LISP makes the number tree to grow,
                             Extending its significance
                          With classic tree-like elegance.
                            A LISP can generate reports,
                        Create a file, do chains and sorts;
                          But one thing you will never see
                               Is moby trees in RPG.
-
                                         14
1
0                                Vm-Com  Issue 2.2
0                       One thing the average language lacks
                       Is programmed use of push-down stacks.
                        But LISP provides this feature free:
                        A stack -you guessed it- is a tree.
                           An empty stack is simply NIL.
                         In order, then, the stack to fill
                        A CONS will push things on the top;
                              To empty it, a CDR will
                             Behave exactly like a pop.
                           A simple CAR will get you back
                      The last thing you pushed on the stack;
                            An empty stack's detectable
                         By testing with the function NULL.
                           Thus even should a LISPer lose
                        With PROGs and GOs, RETURNs and DOs,
                            He need his mind not overtax
                           To implement recursive hacks:
                           He'll utilize this clever ruse
                           Of using trees as moby stacks.
                            Some claim this method slow
                            Because it uses CONS so much
                          And thus requires the GC touch;
                         It has one big advantage, though:
                           You needn't fear for overflow.
                        Since LISP allows its trees to grow,
                            Stacks can to any limits go.
0                             COBOL input is a shame:
                            The implementors play a game
                         That no two versions are the same.
                           And rocky is the FORTRAN road
                            One's alpha input to decode:
                          The FORMAT statement is to blame
                          But on the user falls the load.
                          And FOCAL input's just a farce;
                        But all LISP input comes pre-parsed!
                          (The input reader gets its fame
                          By getting storage for each node
                     From lists of free words scattered sparse.
                          It parses all the input strings
                           With aid of mystic mutterings;
                         From dots and strange parentheses,
                          From zeros, sevens, A's and Z's,
                         Constructs, with magic reckonings,
                         The pointers needed for its trees
                       It builds the trees with complex code
                          With rubout processing bestowed;
                           When typing errors do forebode
                          The rubout makes recovery tame,
                          And losers then will oft exclaim
                           Their sanity to LISP is owed -
                        To help these losers is Lisp's aim.)
-
                                         15
1
0                                Vm-Com  Issue 2.2
0                             The flow-control of APL
                              And OS data sets as well
                        Are best described as tortured hell.
                         For LISPers everything's a breeze;
                         They neatly output all their trees
                            With format-free parentheses
                          And see their program logic best
                          By how their lovely parens nest.
                         While others are by GOs possessed,
                       And WHILE-DO, CASE, and all the rest,
                          The LISPing hackers will prefer
                         With COND their programs to invest
                         And let their functions all recur
                      When searching trees in maddened quest.
0                         Expanding records of fixed size
                          Will quickly programs paralyze.
                          Though ISAM claims to be so wise
                              In allocating overflow,
                           Its data handling is too slow
                          And finding it takes many tries.
                            But any fool can plainly see
                                Inherent flexiblity
                           In data structured as a tree.
0                      When all their efforts have gone sour
                       To swell fixed records, losers glower.
                          But list reclaimers hour by hour
                          By setting all the garbage free
                             Yield CONSequent capacity:
                          Thus trees indefinitely flower.
                          (And trees run on atomic power!)
0                              To men of sensibility
                          The lesson here is plain to see:
                         Arrays are used by clods like me,
                           But only LISP can make a tree.
0           -The Great Quux (with apologies to Joyce Kilmer)
                           ((c) 1973 Guy L. Steele Jr. -@MIT-)
-
-
-
-
-
                                         16
1
0                                Vm-Com  Issue 2.2
0                                     OpCodes
+                                     OpCodes
0                      Various and Assorted Creative Minds...
-
                Here, back by popular demand...  OPCODES!!!  This is the
            second  collection  of humorous  machine  language  opcodes,
            written by a number of clever thinkers of unknown origin.
-           GBB     Go to Back of Bus
            JRAN    Jump RANdom Õnot to be confused
                         with IRAN - Idiots RANdomþ
            AAR     Alter At Random
            LAP     Laugh At Program(mer)
            BAW     Bells And Whistles
            PAS     Print And Smear
            AAD     Alter All Data
            AAC     Alter All Commands
            SOAWP   SOlve All the World's Problems
            CAIL    Crash After I Leave
            ABR     Add Beyond Range
            DW      Destroy World
            DW      Destroy Work
            DTC     Destroy This Command
            DTVFL   Destroy Third Variable From Left
            DSPK    Destroy Storage Protect Key
            DSH     Destroy Sector Header
            DPR     Destroy Program
            DMPK    Destroy Memory Protect Key
            DK      Destroy Klingons
            DD      Destroy Disk
            DPK     Destroy storage Protect Key
            RM      Ruin My files ÕUNIXþ
            WAD     Walk Away in Disgust
            DKP     Disavow Knowledge of Programmer
            JOM     Jump Over Moon
            TOG     Time Out, Graduate
            COWHU   Come Out With your Hands Up
            SWOS    SWap out Operating System
            OML     Obey Murphy's Law
            EBRS    Emit Burnt Resistor Smell
            MSIP    Make Sure Plugged In
            ICB     Interrupt, crash and burn
            IOP     Interrupt processor, Order Pizza
            CSN     Call Supervisor Names
            LSBL    Lose Super BLock ÕUNIX onlyþ
            MBTOL   Move Bugs to Operator's Lunch
            FB      Find Bugs
            CRASH   Continue Running after Stop or Halt
            WCR     Write to Card Reader
            ROPF    Read Other People's Files
            GEWJO   Go to the End of the World, Jump Off
0                                        17
1
0                                Vm-Com  Issue 2.2
0           UAI     Use Alternate Instruction set
            GENT    GENerate Thesis
            ITML    Initiate Termites into Macro Library
            SDPO    Spin DASD Platters Opposite
            DSR     Detonate Status register
            GSI     Generate Spurious Interrupts
            GRMC    Generate Rubber Machine Check
            IRPF    Infinite Recursive Page Fault
            ZRB     Zero Random Block (of storage)
            GREM    Generate Random Error Message
            EM      Evacuate Memory
            GMC     Generate Machine Check
            GMCC    Generate Machine Check and Cash
            GLC     Generate Lewd Comment
            GIE     Generate Irreversible Error
            SHON    Simulate HONeywell CPU Õpermanent NO-OPþ
            BOMB    Branch Out and Make Bugs
            IDC     Initiate Destruct Command
            ICMD    Initiate Core Melt-Down
            ELEF    Erase Last-Edited File
            RLC     Relocate and Lose Core
            BOMR    Branch Out of Machine Room
            UP      Understand Program(mer)
            STD     Stop, take drugs
            CBE     Crash and Burn on Error
            RIC     Reverse Instruction Counter
-
-
-
-
-
-
-
-
-
-                                        18