![]() |
|
|
|
|
|
|
VM/COM, October 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 ------------------------------------------------------------
October 1985 edition Volume 2 Number 5
- CsNews Network Newsletter
-
-
Staff:
0 Michele Robinson CSMICH at MAINE Editor
Andrew T. Robinson ANDY at MAINE CsNews Director
David Eckhardt DAE at PSUVAX1 Assistant Editor
Prof. G. Markowsky MARKOV at MAINE Faculty Advisor
-
0 Ôçççççççççççççççççççççççççççççççççççççççççççççççççççççççä
³ Newsletter article contribution Userid: CSNEWS@MAINE ³
³ ³
³ Contributions from readers welcomed and encouraged! ³
¨ççççççççççççççççççççççççççççççççççççççççççççççççççççççç]
1
0 Vm-Com Issue 2.5
-
0 Table of Contents
+ _____ __ ________
- Introduction to Vm/Com 2.5 . . . . . . . . . . . . . . . 1
CSNEWS Notes . . . . . . . . . . . . . . . . . . . . . . 2
The GNU Manifesto (part 2) . . . . . . . . . . . . . . . 4
Write FIFO But Read LIFO! . . . . . . . . . . . . . . . . 8
Programming at the Machine Level (part 3) . . . . . . . . 10
Summary of CMS Release 4 Enhancements . . . . . . . . . . 16
Fog . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
OpCodes . . . . . . . . . . . . . . . . . . . . . . . . . 19
-
-
-
-
-
-
-
-
-
-
-
-
-
- 2
1
0 Vm-Com Issue 2.5
0 Introduction to Vm/Com 2.5
+ Introduction to Vm/Com 2.5
-
Hi again! Good to have you all reading another issue of
Vm/Com... I'd really like to get some comments back from
you the reader, telling us anything you might have on your
mind. My letters to the editor column is very empty...
0 In this issue is the second part of the GNU article, the
third article in the 370 machine programming series, an
article on structured programming and a summary of the new
CMS release 4 updates, and the humor section consists of the
usual OpCodes and a unique creation called Fog.
0 Untill next issue, keep reading and enjoying and Happy
Halloween! See ya in 2-5.
0 Michele Robinson,
Editor
-
-
-
-
-
-
-
-
-
-
-
- 1
1
0 Vm-Com Issue 2.5
0 CSNEWS Notes
+ CSNEWS Notes
0 Andrew T. Robinson, (ANDY@MAINE)
-
Hello, CSNEWS fans! I'm back again with some more
penetrating insight into the world of BITNET and CSNEWS.
This month there are all sorts of interesting things I can
talk about. The question is, whether I can remember any of
them.
0 First of all, one of our operators, Sean Colbath
(CPE07401@MAINE), has left us for the University of
Rochester. We were sorry to see him go, but he may be
resuming some of his CSNEWS activity when he gets an ID at
UOR. We'll be sure to tell you what that ID is, so you can
all bug him to death.
0 In addition, the other member of the CSNEWS founding
team, Barry Gates, has returned to Massachusetts. Barry was
in charge of the COMDISK, and has presented some ideas for
the BITNAUTS LIST which may be implemented in the near
future.
0 Speaking of the COMDISK, our new COMDISK managers for
this year are David Liscomb (NMCS025@MAINE) and David
Gridley (ICC020G@MAINE). David Gridley is also a regular
CSNEWS operator.
0 Preparatory to transfer of CSNEWS to an Assembler-based
system, some of the CSNEWS software is undergoing a face
lift. You may start to notice some changes in the command
outputs soon. Also, as things get more advanced, some of
the programs may end up dying outright. If this happens,
just inform a CSNEWS operator.
0 I realize that this is the October issue, but I am
writing this in September. As such, school is just starting
here and at many other BITNET schools. There will lots of
new BITNAUTS on the NET soon, and with them, new friends...
*and* new problems.
0 The problem of student access to BITNET has been a
subject of debate for a long time now. Naturally, we of the
CSNEWS staff encourage constructive use of the BITNET. We
also recognize that there are many problems that occur every
day because of non-constructive use. I encourage all
BITNAUTS to take an interest in seeing what they can do to
HELP the BITNET, and not hinder it. If more students
display a higher level of maturity when using their
respective systems, they may find their administrators less
eager to restrict their access to the computer and BITNET.
- 2
1
0 Vm-Com Issue 2.5
0 There is a CSBB forum on CSNEWS, BITNET CSNOTICE, which
contains current discussions on BITNET access and use. I
encourage all of our readers to look at BITNET CSNOTICE, and
add their comments to the discussion. PLEASE put all BITNET
discussions in BITNET CSNOTICE, and NOT FLAME.
0 Well I guess th-that's all for now folks. I'll be back
with more fun and exciting comments next issue. See ya
later!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
0 3
1
0 Vm-Com Issue 2.5
0 The GNU Manifesto, (Continued from Issue 2-4)
+ The GNU Manifesto, (Continued from Issue 2-4)
0 Written by Richard M. Stallman
Submitted by Jim Lewis (JWL@UCBKIM.ARPA)
- Why All Computer Users Will Benefit
0 Once GNU is written, everyone will be able to obtain good
system software free, just like air.
0 This means much more than just saving everyone the price
of a Unix license. It means that much wasteful duplication
of system programming effort will be avoided. This effort
can go instead into advancing the state of the art.
0 Complete system sources will be available to everyone.
As a result, a user who needs changes in the system will
always be free to make them himself, or hire any available
programmer or company to make them for him. Users will no
longer be at the mercy of one programmer or company which
owns the sources and is in sole position to make changes.
0 Schools will be able to provide a much more educational
environment by encouraging all students to study and improve
the system code. Harvard's computer lab used to have the
policy that no program could be installed on the system if
its sources were not on public display, and upheld it by
actually refusing to install certain programs. I was very
much inspired by this.
0 Finally, the overhead of considering who owns the system
software and what one is or is not entitled to do with it
will be lifted.
0 Arrangements to make people pay for using a program,
including licensing of copies, always incur a tremendous
cost to society through the cumbersome mechanisms necessary
to figure out how much (that is, which programs) a person
must pay for. And only a police state can force everyone to
obey them. Consider a space station where air must be
manufactured at great cost: charging each breather per liter
of air may be fair, but wearing the metered gas mask all day
and all night is intolerable even if everyone can afford to
pay the air bill. And the TV cameras everywhere to see if
you ever take the mask off are outrageous. It's better to
support the air plant with a head tax and chuck the masks.
0 Copying all or parts of a program is as natural to a
programmer as breathing, and as productive. It ought to be
as free.
-
0 4
1
0 Vm-Com Issue 2.5
0 Some Easily Rebutted Objections to GNU's Goals
0 "Nobody will use it if it is free, because that
means they can't rely on any support."
"You have to charge for the program to pay for
providing the support."
0 If people would rather pay for GNU plus service than get GNU
free without service, a company to provide just service to
people who have obtained GNU free ought to be profitable.
0 We must distinguish between support in the form of real
programming work and mere handholding. The former is
something one cannot rely on from a software vendor. If
your problem is not shared by enough people, the vendor will
tell you to get lost.
0 If your business needs to be able to rely on support, the
only way is to have all the necessary sources and tools.
Then you can hire any available person to fix your problem;
you are not at the mercy of any individual. With Unix, the
price of sources puts this out of consideration for most
businesses. With GNU this will be easy. It is still possible
for there to be no available competent person, but this
problem cannot be blamed on distribution arrangements. GNU
does not eliminate all the world's problems, only some of
them.
0 Meanwhile, the users who know nothing about computers
need handholding: doing things for them which they could
easily do themselves but don't know how.
0 Such services could be provided by companies that sell
just hand-holding and repair service. If it is true that
users would rather spend money and get a product with
service, they will also be willing to buy the service having
got the product free. The service companies will compete in
quality and price; users will not be tied to any particular
one. Meanwhile, those of us who don't need the service
should be able to use the program without paying for the
service.
0 "You cannot reach many people without advertising, and
you must charge for the program to support that."
"It's no use advertising a program people can get free."
0 There are various forms of free or very cheap publicity that
can be used to inform numbers of computer users about
something like GNU. But it may be true that one can reach
more microcomputer users with advertising. If this is
really so, a business which advertises the service of
copying and mailing GNU for a fee ought to be successful
enough to pay for its advertising and more. This way, only
the users who benefit from the advertising pay for it.
0 5
1
0 Vm-Com Issue 2.5
0 On the other hand, if many people get GNU from their
friends, and such companies don't succeed, this will show
that advertising was not really necessary to spread GNU.
Why is it that free market advocates don't want to let the
free market decide this?
0 "My company needs a proprietary operating
system to get a competitive edge."
0 GNU will remove operating system software from the realm of
competition. You will not be able to get an edge in this
area, but neither will your competitors be able to get an
edge over you. You and they will compete in other areas,
while benefitting mutually in this one. If your business is
selling an operating system, you will not like GNU, but
that's tough on you. If your business is something else,
GNU can save you from being pushed into the expensive
business of selling operating systems.
0 I would like to see GNU development supported by gifts
from many manufacturers and users, reducing the cost to
each.
0 "Don't programmers deserve a reward for their creativity?"
0 If anything deserves a reward, it is social contribution.
Creativity can be a social contribution, but only in so far
as society is free to use the results. If programmers
deserve to be rewarded for creating innovative programs, by
the same token they deserve to be punished if they restrict
the use of these programs.
0 "Shouldn't a programmer be able to ask
for a reward for his creativity?"
0 There is nothing wrong with wanting pay for work, or seeking
to maximize one's income, as long as one does not use means
that are destructive. But the means customary in the field
of software today are based on destruction.
0 Extracting money from users of a program by restricting
their use of it is destructive because the restrictions
reduce the amount and the ways that the program can be used.
This reduces the amount of wealth that humanity derives from
the program. When there is a deliberate choice to restrict,
the harmful consequences are deliberate destruction.
0 The reason a good citizen does not use such destructive
means to become wealthier is that, if everyone did so, we
would all become poorer from the mutual destructiveness.
This is Kantian ethics; or, the Golden Rule. Since I do not
like the consequences that result if everyone hoards
information, I am required to consider it wrong for one to
do so. Specifically, the desire to be rewarded for one's
0 6
1
0 Vm-Com Issue 2.5
0 creativity does not justify depriving the world in general
of all or part of that creativity.
0 "Won't programmers starve?"
0 I could answer that nobody is forced to be a programmer.
Most of us cannot manage to get any money for standing on
the street and making faces. But we are not, as a result,
condemned to spend our lives standing on the street making
faces, and starving. We do something else.
0 But that is the wrong answer because it accepts the
questioner's implicit assumption: that without ownership of
software, programmers cannot possibly be paid a cent.
Supposedly it is all or nothing.
0 The real reason programmers will not starve is that it
will still be possible for them to get paid for programming;
just not paid as much as now.
0 Restricting copying is not the only basis for business in
software. It is the most common basis because it brings in
the most money. If it were prohibited, or rejected by the
customer, software business would move to other bases of
organization which are now used less often. There are always
numerous ways to organize any kind of business.
0 Probably programming will not be as lucrative on the new
basis as it is now. But that is not an argument against the
change. It is not considered an injustice that sales clerks
make the salaries that they now do. If programmers made the
same, that would not be an injustice either. (In practice
they would still make considerably more than that.)
- Copyright (c) 1985 Richard M. Stallman
0 Permission is granted to anyone to make or
distribute verbatim copies of this document as
received, in any medium, provided that the
copyright notice and permission notice are
preserved, and that the distributor grants the
recipient permission for further redistribution as
permitted by this notice.
0 Modified versions may not be distributed.
- ÕThis is the second part of the GNU story. Part one
of this article can be found in issue 2-4. -Edþ
-
- 7
1
0 Vm-Com Issue 2.5
0 Write FIFO But Read LIFO!
+ Write FIFO But Read LIFO!
0 Billy E. Taylor, Jr. (TAYLORB@UMDB)
-
Those of you who are familiar with programming in a well
structured language, like Pascal or especially C, know how
easy it is to create highly convoluted, "write only" code,
i.e. code that even you cannot decipher after six months.
In an attempt to eliminate this effect, for the past several
years structured, "black box" style programming has been
heavily emphasized.
0 Here's a description for those of you who are not very
familiar with the idea. A large programming task is first
divided into a half dozen to a dozen or so smaller subtasks.
The programmer divides the main task such that each subtask
is designed to handle related tasks and accomplish a
specific portion of the main task. The main routine for the
program can then be written making each subtask a
procedure/subroutine call which you assume will achieve the
task set for it.
0 This process is then performed on each of the just
created routines for the subtasks. In this manner, each
routine/subtask is further divided until the resultant
subtasks/routines are so conceptually simple and their
objectives so straight forward that the coding practically
suggests itself. In most cases this style produces a large
number of relatively small simplistic routines.
0 This is called "black box" style because as each routine
is written, each subtask is treated like the famous black
box where the inputs are known, the produced outputs are
known, but at this point the programmer does not care HOW
the black box/routine works, only that it DOES work. The
how is considered only later, when this task is further
subdivided. This style, also, imitates a FIFO stack in that
each routine is written (roughly) in the order in which it
will execute, i.e. main routine first, then large
subroutines, then medium subroutines of the large
subroutines, etc.
0 This style of programming works extremely well for the
vast majority of large programming tasks. This procedure
also tends to produce and reinforce an unfortunate habit
among programmers. FIFO style programming leads more than a
few programmers to FIFO style reading of others programs.
And for many, this is exactly the most difficult way to read
a program!
-
0 8
1
0 Vm-Com Issue 2.5
0 If you attempt to read a program that you have never
seen before, written by another programmer, you will find
that reading FIFO is quite difficult. You wind up either
reading the main routine and knowing only vaguely what all
of the procedure calls there are doing and then reading
those procedures. Or you mimic execution and read the main
routine until the first procedure call and then trace
through the program to that procedure and start to read it.
Then you trace the procedure calls in that procedure and so
on. By the time you return from those calls, you will have
lost the context of the routine you were trying to
understand in the first place.
0 Reading in this manner will give, at best, a poor
understanding of the exact operations behind or the concepts
involved in the program. It will often inhibit any real
understanding of the program at all.
0 However, try reading a program you've never seen before
in what I'll call a LIFO manner. With a C or Pascal-like
program it's usually very much like reading through a
program listing as it's printed. You start at the top, where
the smallest, often used, conceptually obvious routines are
located. As you read each of those, you make the connection
between the routine name and it's actions. Now, when you
see a call to this routine later, you already KNOW what the
routine is doing so no routine tracing of any kind is
needed.
0 As you work your way through the program listing, the
routines will become more conceptually intricate, perhaps
even cleverly bizarre, but since you will have already made
the mental link between the calls to the smaller routines
and the actions of these routines, you can concentrate
solely on the tricks of logic employed in the ONE routine
you're currently reading.
0 With fewer things to concentrate on at one time, you
will be able to more clearly understand that upon which you
are concentrating. By working this process all the way down
to the program's main routine, you will easily gain an
understanding of what the entire program does and more
importantly, HOW the program accomplishes what it does.
- ÕMany thanks to Dr. Randy Barth of Computer Science
Corp. for demonstrating that this is a sufficiently
important idea to merit explanation. -B.T.þ
-
-
0 9
1
0 Vm-Com Issue 2.5
0 Programming at the Machine Level
+ Programming at the Machine Level
Part III: S/370 Interrupt Structure
+ Part III: S/370 Interrupt Structure
0 Andrew T. Robinson (ANDY@MAINE)
-
In the last article of this series, we discussed some of
the essential concepts of the IBM 370-architecture interrupt
system. In this article, I will review some of the
programming considerations that are important when writing
an interrupt handler. We will also see a sample interrupt
trapping program that can be used to do a 'waited' read to
the console.
0 There are several considerations when writing a program
that is interrupt driven, or simply traps interrupts. One
of the most important is telling the CPU that your handler
is to get control whenever an interrupt of the type you are
trapping occurs. Do this by replacing the NEW-PSW for that
type of interrupt (in our example we will be trapping I/O
interrupts) with a PSW you have constructed in your program.
0 The first four bytes of this replacement PSW are usually
zeroes, especially the system mask byte (bits 0-7). With all
the system mask bits set to zero, your interrupt handler
will be entered with all I/O and EXTERNAL interrupts
disabled. This is important, because many interrupt
handlers (including the example below) are not reentrant,
and would crash if an interrupt of the type being trapped
occurred while the handler was already active.
0 The second four bytes of the replacement PSW (the program
mask, condition code, and instruction address) contain the
address of the start of your interrupt handler. This is the
address that will receive control when the interrupt occurs.
0 CMS provides default NEW-PSWs for each type of interrupt
when it is IPLed, and when CMS has control of the machine
(i.e., when you are in interactive command mode), it expects
that these NEW PSWs are the ones it put there originally.
If they are not, you may find yourself blown into CP or, in
more insidious cases, your terminal may simply lock and you
will have no recourse but to shut off the terminal and wait
15 minutes.
0 This type of problem can occur quite easily when a
program which traps a certain type of interrupt replaces the
default NEW-PSW with its own, and then exits, leaving *its*
PSW in place. Then an interrupt of the type that was being
trapped occurs, and the CPU attempts to branch to the user
interrupt handler, when lo and behold it is no longer in
storage... HANG!
- 10
1
0 Vm-Com Issue 2.5
0 The solution is quite simple. Before you move your
replacement PSWs into whatever NEW-PSW fields you are going
to use, simply save the current contents of those NEW-PSWs
in a special area set aside in your program.
0 Once you have SAVED any PSWs you plan to replace, the
next step is swapping in *your* NEW-PSWs. There is a
possibility of a problem here. If your program was entered
under normal circumstances, your program will run ENABLED
until you explicitly tell it not to ('ENABLED' simply means
that the system mask bits are set to allow interrupts to
occur while your program is executing). Some interrupt
handlers require intialization before they can effectively
process the interrupts they are intended to trap. If you
have swapped in your NEW-PSWs, and an interrupt occurs
before your handler's initialization is complete, your
program (and perhaps CMS) could crash.
0 The solution to this problem (if and when it is
applicable), is to DISABLE any interrupts you don't want to
occur using the IBM/370 SSM instruction. You can see an
example of this in the sample program below.
0 Now that your interrupt handler is initialized, the next
step is to place your program in a WAIT STATE using the LPSW
instruction (see programming example). Once this has been
done, your program will simply wait for an interrupt to
occur before it executes any more instructions.
0 Now let's cover a few points about the actual function of
the interrupt handler. First, When an interrupt occurs and
your handler is activated, it is important that it establish
addressability and perform any special initialization
required before another interrupt causes it to be suspended.
If the system mask of your replacement NEW-PSW is set to
zeroes as recommended above, you can be sure that another
interrupt will not grab control away from your handler. If
you want to enabled some interrupts after your handler is
initialized, simply use the SSM instruction.
0 Second, user handlers are usually set up to handle a
small subset of the possible interrupts that could occur for
a specific interrupt class (For instance, in the programming
example, the handler is intended to process interrupts on
device 009 only). If the interrupt code does not match one
of those you are attempting to process, you should transfer
control to to the default CMS handler. You do this by
executing a LPSW instruction which points to the area where
you saved the CMS NEW-PSW for the specific interrupt class.
-
-
11
1
0 Vm-Com Issue 2.5
0 Third, when your handler is DONE processing the
interrupt, you should allow the original program to resume
where it was interrupted. This is done by executing a LPSW
instruction which points to the OLD-PSW for the type of
interrupt you were handling.
0 Finally, when your interrupt-driven program has completed
its work, and is ready to return to CMS (or whatever program
called it), you should restore the CMS Default NEW-PSWs that
you saved earlier. Always do this *before* you return to
your program's caller. This way, you can be sure that if an
interrupt occurs in the future, it will directed to the
correct CMS interrupt handler, and not yours, which might
not be in storage.
0 In general, the series of steps that is involved in
setting up and using an interrupt handler is as follows:
- SETTING UP --
+ SETTING UP --
0 1. Disable interrupts by setting system mask to zeroes
0 2. Save CMS default NEW-PSWs for each type of interrupt
you plan to trap.
0 3. Move in your replacement NEW-PSWs pointing to your
interrupt handler(s).
0 4. Do any other handler initialization (if any) that is
required.
0 5. Place program in wait state
0 6. (after interrupt handler has been activated and has
finished processing) Restore the CMS default NEW
PSWs that you saved earlier.
0 7. Return to calling program (usually CMS)
- HANDLER ACTIVATION --
+ HANDLER ACTIVATION --
0 1. Save registers in a safe place and get addressability
to your handler.
0 2. Perform whatever functions you want
0 3. Clear the wait bit in the OLD-PSW for the type of
interrupt you are processing.
0 4. Load the OLD-PSW for that type of interrupt, and
resume execution in the main program where the
interrupt originally occurred.
0 12
1
0 Vm-Com Issue 2.5
0 Now that you've read through all of the preceding
verbiage, we can show you a (working) program and some
instructions on how to run it.
-
0 *
* This program places the user VM into a wait-state, and
* upon receipt of an interrupt on the console (device 009),
* will issue a standard WAITRD (RDTERM) call to read a line
* from the terminal. The input text is then stacked in the
* console buffer with ATTN, where it may be read by an EXEC
*
* This program will allow an EXEC/EXEC2/REXX program to
* issue a console-read to a full-screen terminal without
* putting up the 'VM READ' status at the bottom of the
* screen. So it actually has practical applications!
*
RDWAIT CSECT
STM R14,R12,12(R13) save CMS' registers
LR R12,R15 get a better base register
USING RDWAIT,R12 ... and tell assembler
*
* The first step is to save the CMS NEW PSW which we are
* going to replace with our own..
*
MVC CMSSAVE,X'78' save I/O NEW PSW
*
* Once the I/O NEW PSW has been saved, disable interrupts
* and move in *our* I/O NEW PSW.
*
SSM =X'00' this disables interrupts
MVC X'78'(8),OURPSW move in our PSW
*
* The basic setup of our I/O handler is complete. All that
* is left to do is put the machine into a WAIT STATE
*
LPSW WAITPSW place in enabled wait
* (all interrupts allowed)
*
* This next label is where control is passed AFTER our
* handler has finished it's work. Just drop back to CMS or
* the EXEC this program was invoked from.
*
EXIT LM R14,R12,12(R13) restore CMS' registers
SR R15,R15 make return code = 0
BR R14 return to caller
-
-
0 13
1
0 Vm-Com Issue 2.5
0 *
* This is the beginning of the handler itself. When it is
* activated (for instance when the user presses 'ENTER'),
* our I/O NEW PSW is loaded, which points to this routine.
* at that time, all interrupts are disabled, so nothing bad
* will happen to us.
*
HANDLER CLC X'38'+2(2),=X'0009' was this an interrupt
* from the console device?
*
BE CONSINT yes, it belongs to us
*
* The interrupt was on another device, so pass it back to
* CMS and let him handle it.
*
LPSW CMSSAVE give to CMS
*
* This is a console interrupt, it belongs to this handler.
* Restore the CMS I/O NEW PSW and issue the RDTERM call to
* get a line of text from the terminal. Also note that in
* this program, the I/O OLD PSW must be saved because it
* will be altered by RDTERM.
*
CONSINT MVC X'78'(8),CMSSAVE restore I/O NEW PSW
MVC OURSAVE,X'38' save I/O OLD PSW
* so we can resume later
*
SSM =X'81' enable console interrupts
RDTERM AREA1 read a line from the
* terminal
*
* RDTERM returns the number of bytes actually read in
* register 0. So we store this length into the ATTN plist
* which will allow us to stack only those characters that
* are actually significant in the line
*
STACKIT STCM R0,B'0001',ATTNLIST+12 save # of chars read
LA R1,ATTNLIST point to stacking command
SVC 202 push line into stack
DC AL4(1) ...fun constant (required)
*
* The interrupt handler is done, so return to where the main
* program was interrupted by restoring the I/O OLD PSW. NOTE
* that in this program, we must zap the second byte of the
* OLD I/O PSW save area, since the OLD PSW has the WAIT bit
* set. If this is not done, the program will go into another
* WAIT STATE again when we issue the LPSW
*
MVI OURSAVE+1,X'00' zap wait-bit to zero
LPSW OURSAVE load the I/O OLD PSW
-
- 14
1
0 Vm-Com Issue 2.5
0 *
* Following are the data areas for the program. First, the
* save area for the CMS I/O NEW PSW, then *our* I/O NEW PSW,
* then the WAIT PSW, and finally, the stacking PLIST
*
CMSSAVE DS D save area for CMS PSW
OURSAVE DS D save area for I/O OLD PSW
OURPSW DC X'00000000',AL4(HANDLER) our I/O NEW PSW
WAITPSW DC X'FF060000',AL4(EXIT) our WAIT PSW
AREA1 DC CL136' '
ATTNLIST DC CL8'ATTN' stacking command
DC CL4'LIFO' ... same as REXX PUSH
DC AL4(AREA1) area to stack
*
* Required MACRO definition
*
REGEQU
END RDWAIT
-
-
To assemble and run this program, issue the following
commands:
0 GLOBAL MACLIB CMSLIB DMSSP
ASSEMBLE RDWAIT
LOAD RDWAIT ( ORIGIN TRANS
GENMOD (SYSTEM
- The '(SYSTEM' option on GENMOD allows the program to
store in the nucleus (the OLD and NEW PSWs) without
generating a storage protection exception (which is a type
of PROGRAM interrupt!).
0 This is by no means an exhaustive tutorial on the
interrupt structure of the system/370. However, it should
give the reader with a reasonable amount of programming
experience an idea of how the interrupt system actually
works.
-
ÕThis is part three of the 370 programming series
started in issue number 2-2. -Ed.þ
-
-
0 15
1
0 Vm-Com Issue 2.5
0 Summary of CMS Release 4 Enhancements
+ Summary of CMS Release 4 Enhancements
0 Wayne Smith, U.Maine, 7/9/85
- The following information has been excerpted from various
presentations by IBM and IBM users at SHARE 64, March 1985.
- HELP Enhancements
+ HELP Enhancements
0 - TASK oriented menus have been added.
- HELP files are pre-formatted (no longer have embedded
SCRIPT commands) for faster display.
- Abbreviation/synonym resolution is available for all HELP.
- Other minor improvements have been made.
- XEDIT Enhancements
+ XEDIT Enhancements
0 - Messages are in mixed case.
- BRKKEY may be turned on and off.
- Programmed symbol sets may be used (but must be loaded
outside of XEDIT).
- A new facility exists for inputting to a file: SI, the
Structured Input macro.
- XEDIT calculates if a file is too large to edit more
quickly.
- MACLIB Enhancements
+ MACLIB Enhancements
0 - XEDIT supports the MEMBER option to edit a member of a
MACLIB.
- A new MACLIST command (analogous to RDRLIST and FILELIST)
to work with members of a MACLIB.
- EXECs in Storage
+ EXECs in Storage
0 - EXEC and XEDIT files may be loaded into storage by the user
(for example, the PROFILE XEDIT could be loaded by the
PROFILE EXEC). Functions that rely on large EXEC and/or
XEDIT files may run much faster when the EXECs are left
in storage. Examples include FILELIST and U.Maine MAIL.
-
-
-
0 16
1
0 Vm-Com Issue 2.5
0 EXECIO Enhancements
+ EXECIO Enhancements
0 - Results may be returned directly to EXEC variables. Examples:
0 EXECIO 1 CP ( VAR RESULT STRING QUERY FILES
0 Returns the result of "CP QUERY FILES" in variable "RESULT"
0 EXECIO * DISKR MY MEMO A 1 ( FINIS STEM RESULT
0 Returns the number of lines in RESULT.0 and the nth line of
the file in array element RESULT.n
- NUCXLOAD Enhancements
+ NUCXLOAD Enhancements
0 - The LOAD & INCLUDE commands allow the RLDSAVE option.
MODULEs to be NUCXLOADed do not have to be ADCON-free if
they were created using this RLDSAVE option.
- Command Search Enhancements
+ Command Search Enhancements
0 - A program now can call CMS for complete command resolution.
REXX, XEDIT, and EXEC2 use instead of each mimicing CMS
command resolution for CMS subcommands.
- TAPE Processing Enhancements
+ TAPE Processing Enhancements
0 - Support has been added for the new IBM 3480 magnetic tape
subsystem. (New options have been added for TAPE, FILEDEF,
and RDTAPE, WRTAPE, TAPECTL, and TAPESL macros).
- Standard label tape support has been improved. Information
in the header and trailer labels is written and used when
read.
- Multi-volume tape files are supported through BSAM and
QSAM (FILEDEFed files). How this support will be
integrated with the U.Maine MOUNT support is not known
at this time.
- File System Performance Enhancements
+ File System Performance Enhancements
0 Performance of CP & CMS has been enhanced when minidisks
with large numbers of files are ACCESSed.
0 - On read-only minidisks, the sorted order of files is taken
advantage of by an "index".
- On read-write minidisks, a hash table is built and used to
look up files more quickly.
- The "preferred" list of filetypes has been change to speed
looking for files of filetype: EXEC, MODULE, CMSUT1,
AUTOSAVE, XEDTEMP, XEDIT, SYSUT1, and TEXT.
0 17
1
0 Vm-Com Issue 2.5
0 Fog
+ Fog
0 Jeff Smith (RPS385@MAINE)
- ÕThis is the output from a rather unusual exec. Sounds
like real, doesn't it? You'd almost never know this is
nothing but a bunch of big words put together to make
nonsense.þ
0 As a resultant implication, any associated supporting
element adds explicit performance limits to the total system
rationale. Of course, the characterization of specific
criteria maximizes the probability of project success, yet
minimizes cost and time required for the subsystem
compatibility testing. To further describe and annotate,
initiation of critical subsystem development affects a
significant implementation of the total system rationale.
It is assumed that the characterization of specific criteria
is further compounded when taking into account the subsystem
compatibility testing. Of course, a large portion of
interface coordination communication is functionally
equivalent and parallel to the total system rationale. Thus,
the product assurance architecture mandates staff-meeting-
level attention to the sophisticated hardware.
-
-
-
-
-
-
-
-
-
-
18
1
0 Vm-Com Issue 2.5
0 OpCodes
+ OpCodes
0 Various and Assorted Creative Minds...
-
AFVC Add Finagle's Variable Constant
AT Accumulate Trivia
AWTT Assemble With Tinker Toys
BAF Blow All Fuses
BCB Burp and Clear Bytes
CDR Complement Disk Randomly
CMD CPU Melt Down
CPR Compliment PRogrammer("Aren't you cute!")
DDS Delaminate Disk Surface
DES Disk Eject Swapped
DEM Disk Eject Memory
DEI Disk Eject Immediate
DEB Disk Eject Both
DRAF DRAw Flowchart
EXX ÕA real instruction on the Zilog Z-80 --
Zilog is owned by EXXonþ
GORS GO Real Slow
HCF Halt and Catch Fire
HCRS Hang in Critical Section
HDO Halt and Disable Operator
HDRW Halt and Display Random Word
HIS Halt in Impossible State
JAA Jump Almost Always
JFM Jump on Full Moon
JMAT JuMp on Alternate Thursdays
LAGW Load And Go Wrong
LCC Load and Clear Core
LCD Load and Clear Disk
LMYB Logical MaYBe
MAZ Multiply Answer by Zero
MDB Move and Drop Bits
MLP Multiply and Lose Precision
PAZ Pack Alpha Zone
PPL Perform Perpetual Loop
RA Randomize Answer
RAU Ridicule All Users
RBT Read Blank Tape
RCCP Randomly Corrupt Current Process
RCRV Randomly Convert to Reverse Video
RDF Randomize Directory Filenames
RET Read and Erase Tape
RMI Randomize Memory Immediate
-
-
0 19
1
0 Vm-Com Issue 2.5
0 SAD Seek And Destroy
SAI Skip All Instructions
SC Scramble Channels
SCRRC SCRamble Register Contents
SD Scramble Directory
SLP Sharpen Light Pen
SMC Scramble memory contents
SOB Õa real PDP-11 instructionþ
SPSW Scramble Processor Status Word
SSB Scramble Status Byte
TLINF Teach me a Lesson I'll Never Forget
TOO Turn On/Off operator
UCB Uncouple CPU and Branch
UCPUB Uncouple CPU's and Branch
WI Why Immediate
WSWW Work in Strange and Wondrous Ways
XMB Exclusive MayBe
ZAP Zero and Add Packed
ZPI ZaP Immediate
-
-
-
-
-
-
-
-
-
-
-
-
20
|