While cleaning my stuff, which my wife calls junk, I came across a box of computer printouts from my college days at USM, which I attended and eventually graduated from about 40 years ago. If someone else needs to review a similar answer to program#2 for the CS269 class, then here it is! Steve R. was the instructor 1981. You’d think this must still be relevant today – just look at those beautiful opcodes/mnemonics.
* AUTHOR....: PHILIP ST.JEAN
* CLASS.....: CS269 - IBM360 ASSEMBLY LANGUAGE PROGRAMMING
* INSTRUCTOR: STEVE RAND
* CAMPUS....: UNIVERSITY OF SOUTHERN MAINE
*
*
* PROGRAM #2, DUE FEB. 10, 1981
*
* THIS PROGRAM CALCULATES THE MEAN OF SEVERAL LIST OF INTEGERS
* TO THE NEAREST INTEGER. ALSO CALCULATED ARE THE SUM AND
* NUMBER OF ELEMENTS.
*
* INPUT: DATA INPUT IS FREE-FORMAT, A SLASH(/) IS FOUND AFTER
* THE LAST VALUE ON A CARD. ANOTHER SLASH DIRECTLY
* AFTER THE FIRST SLASH ( AND THUS //), INDICATES
* END OF THE LIST TO BE AVERAGED. AND ''END'' INDICATES
* THE END OF ALL SUCH LISTS. IF THERE ARE OTHER SPECIAL
* SYMBOLS OTHER THAN THESE, THE PROGRAM WILL END AND AN
* ERROR MESSAGE IS PRINTED OUT(IF THE SYMBOL IS WITHIN A
* LIST, THAT LIST AND SUBSEQUENT LISTS WILL NOT BE
* AVERAGED - THE PROGRAM WILL END.)
*
* INPUT FOR THIS PROGRAM:
* 1 2 3 4 5//
* -3 1 16/
* 20 24 -1 10 5 -3 8//
* 3/
* 4/
* 5/
* 6/
* 0//
* 10//
* END
*
* OUTPUT:OUTPUT CONSISTS OF THE NUMBER OF VALUES IN THE LIST
* THE SUM OF THE LIST, AND THE MEAN OF THE LIST - ALL
* IN A TABLE-LIKE OUTPUT.( OR ANY ERROR MESSAGES AS
* STATED IN THE INPUT SECTION.
*
PROG2 CSECT
BALR 12,0
USING *,12
XPRNT TITLE,61
LOOP1 LA 10,0
LA 7,0
LOOP2 XREAD CARD,80
LA 1,CARD
LOOP3 XDECI 4,0(1)
BO NONUM
AR 7,4
LA 10,1(10)
B LOOP3
*
* THE NEXT FEW STATEMENTS WILL DETERMINE WHETHER A SINGLE
* SLASH, A DOUBLE SLASH, AN END, OR SOME OTHER CHARACTER.
* IF IT IS / THEN READ THE NEXT CARD AND PROCESS IT;IF IT
* IS // THE END THE PROCESSING OF THE CURRENT LIST AND FIND
* THE MEAN AND THEN PRINT THE NUMBER OF VALUES,SUM AND MEAN
* OF THAT LIST. IF IT IS SOMETHING OTHER THAN THESE TWO, GO
* TO THE STATEMENT LABELED END.
*
NONUM CLI O(1),C'/'
BNE END
LA 1,1(1)
CLI 0(1),C'/'
BNE LOOP2
C 10,=F'0'
BE LOOP2
XDECO 10,LINE+1
XDECO 7,LINE+16
*
* FIND THE MEAN -- IF IT IS POSITIVE, ROUND UP TO THE NEAREST
* INTEGER; IF IT IS NEGATIVE, CONVERT IT TO POSITIVE AND USE
* THE SAME STEPS AS IF IT WERE A POSITIVE SUM - SIGNAL THAT
* THAT THIS IS SO FOR LATER RECONVERSION- AND ROUND DOWN TO
* THE NEAREST INTEGER.
*
A 7,=F'0'
BNM SKIP
MVI SIGNAL,C'N'
SKIP LA 6,0
DR 6,10
LA 8,0
LR 9,6
M 8,=F'2'
SR 10,9
BP NOADD
A 7,=F'1'
NOADD CLI SIGNAL,C'N'
BNE POSITIV
LNR 7,7
POSITIV XDECO 7,LINE+31
*
*
XPRNT LINE,80
B LOOP1
*
* IF THE CHARACTERS ARE 'END' THEN END NORMALLY; ELSE PRINT AN
* ERROR MESSAGE THAT SAYS THAT IT IS AN ILLEGAL CHARACTER
* AND COULD COME FROM A MISTYPED NUMBER IN THE DATA, AND
* INDICATE THAT THE PROGRAM IS ENDING ANYWAY.
*
END CLC 0(3,1),=C'END'
BER 14
XPRNT ERROR,128
BR 14
*
SIGNAL DC CL1'*'
CARD DS CL81
DC CL1'*'
LINE DC CL1'0'
DC 132CL1' '
TITLE DC CL61'- # OF ELEMENTS SUM: MEAN: ,O*
F THE LIST'
ERROR DC CL128'-''END'' WAS NOT USED TO TERMINATE DATA; PROGRAM E*
NDING(PROBABLE CAUSE-ILLEGAL SYMBOL WITHIN BOUNDARIES OF*
LIST; SEE DATA CARDS)'
END PROG2
$ENTRY
1 2 3 4 5//
-3 1 16/
20 24 -1 10 5 -3 8//
3/
4/
5/
6/
0//
10//
END
BTW, this program would run under the ASSIST 4.0/A of 04/25/75 version on the IBM 370/3031 mainframe. At some point after the IBM PC was introduced in August of 1981, someone ported a version of ASSIST to the IBM DOS environment. This program will run there with some slight modifications – the line with BER 14 will need to be replaced by the equivalent BCR 8, 14 instruction. The DOS version is finicky/sensitive with tabs and lines with labels and lines without labels, and that impacts the section where line continuation is used and might have to be adjusted accordingly.
The Instructor graded these program homework assignments from 0 to 4. This one got a 4. Oh, some programs counted double, so 0 to 8. Don’t ever think about getting a 5 or a 9 respectively, as he just doesn’t do that, not even if you invented the Internet, like I did in the 1970s while in high school. I did not inhale, until after calculus.
Well that was quite the flashback memory of the day. To think I have more junk, I mean stuff, to go through.
Update: Click here to view the PDF scan of the actual completed computer listing – yes that’s real paper, recycled as it was. File is about 6MB.