File SUBR.TMP

Directory of image this file is from
This file as a plain text file

@A REM - UTILITY SUBROUTINE TO BE USED WITH BASIC PROGRAMS. @@@B REM - WRITTEN BY : SOFTWARE STAFF. @@@C REM - REGISTERED DATE :  SEPTEMBER 1, 1972 @@@D REM - REVISED BY : SOFTWARE STAFF@@@E REM - REVISED DATE :  JULY 15, 1973@@@F PRINT \ PRINT "COPYRIGHT 'C' 1972" @@@G PRINT "REMCOS" \ PRINT "TIME-SHARING SERVICE COMPANY"@@@H PRINT "RACINE, WISCONSIN" \ PRINT\PRINT@@A$PRINT"THIS PROGRAM CONTAINS THE FOLLOWING SUBROUTINES:"\PRINT @@A&PRINT"1.  CONVERSION OF ALPHAMERIC TO ASCII CHARACTER CODES." @@A'PRINT"    (LINE 1500 THRU 1550)"@@A(PRINT"2.  RIGHT JUSTIFYING NUMBERS FOR ACCOUNTING PURPOSES."@@A)PRINT"    (LINE 1560 THRU 1620)"@@A*PRINT"3.  READ/WRITE MAGNETIC TAPE TO AVOID ROCKING ACTION."@@A+PRINT"    (LINE 1630 THRU 1670)"@@A,PRINT"4.  CONVERSION OF COMPLEX NUMBERS FROM RECTANGULAR TO POLAR." @@A-PRINT"    (LINE 1680 THRU 1770)"@@A.PRINT"5.  SORT NUMERICAL VALUES IN ASCENDING ORDER."@@A/PRINT"    (LINE 1780 THRU 1840)"@@BVPRINT\PRINT"TO OBTAIN THE DESIRED SUBROUTINE, USER SHOULD PERFORM"@@BXPRINT"THE FOLLOWING STEPS:"\PRINT @@BZPRINT"1.  PAPER TAPE PUNCH 'ON' AND PRESS 'HERE IS' KEY." @@B\PRINT"2.  PUNCH UNIT 'OFF'."\PRINT"3.  PRESS 'RE-TURN'" @@B^PRINT"4.  TYPE 'LIS (NUMBER OF FIRST LINE, NUMBER OF LAST LINE" @@B PRINT"              (OF DESIRED SUBROUTINE AS DESCRIBED ABOVE." @@B"PRINT"5. TURN PUNCH 'ON' AGAIN AND PRESS 'RE-TURN' KEY."  @@B*PRINT\PRINT\STOP@@W\ REM - SUBROUTINE TO CONVERTS ALPHAMERIC TO ASCII CHARACTER CODE. @@W! REM - VARIABLES USED: Z$,Z0,Z1,Z2,Z3,Z4,Z(6) @@W& REM - Z$ SHOULD BE USED IN THE MAIN PROGRAM@@W+ DIM Z(6) @@W0 Z0=0 \ Z1=4 \ Z2=1 @@W5 CHANGE Z$ TO Z @@W: FOR Z4=1 TO 4 \ IF Z(Z1)<48 THEN 1545 \ IF Z(Z1)>57 THEN 1545@@W? IF Z(Z1)=32 THEN 1545@@XD Z3=Z(Z1)-48 \ Z0=Z0+(Z3*Z2) \ Z2=Z2*10 @@XI Z1=Z1-1 \ NEXT Z4@@XN RETURN @@XX REM- SUBROUTINE FOR RIGHT JUSTIFYING NUMBERS.@@X] REM - VARIABLES USED: N,T (T: EMBEDDED SPACES <>0 AND <72) @@X" T=N1 @@X' IF N=0 THEN 1610 \ IF ABS(N)<.1 THEN 1590 \ IF N>999999 THEN 1615@@X, IF N=INT(N) THEN 1595@@X1 PRINT TAB(T-INT(LOG(ABS(N))/LOG(10)));N \ GOTO 1620@@X6 PRINT TAB(T-INT(LOG(.1+ABS(N))/LOG(10)));N \ GOTO 1620 @@X; PRINT TAB(T-INT(LOG(ABS(N))/LOG(10))); N;@@Y@ N=0 \ PRINT TAB(1+(T-INT(LOG(.1+ABS(N))/LOG(10)))); ".00"@@YE GOTO 1620@@YJ PRINTTAB(1+(T-INT(LOG(.1+ABS(N))/LOG(10)))); ".00" \ GOTO 1620 @@YO PRINT TAB(T); N@@YT RETURN @@Y^ REM - SUBROUTINE TO READ/WRITE RECORDS ALONG MAG. TAPE.@@Y
 REM - READ/WRITE ONE RECORD EACH TIME CALLED.@@Y( R=R+9@@Y- IF R<=1483 THEN 1665 @@Y2 IF R=1483 THEN 1670@@Y7 R=R-1483 \ IF R>0 THEN 1665@@Y< R=R+10 @@ZA RETURN @@ZF PRINT"END OF TAPE" @@ZP REM - SUBROUTINE TO CONVERT COMPLEX NUMBERS FROM RECT. TO POLAR. @@ZU REM - VARIABLES USED: A9,B9,C9,R9 (A9: REAL; B9: IMMAGINARY) @@ZZ R9=SQR(A9^2+B9^2)@@Z
 IFA9<0THEN 1725\ IFA9=0THEN 1700\ IFA9>0THEN 1745@@Z$ IFB9<0THEN 1705\ IFB9=0THEN 1710\ IFB9>0THEN 1720@@Z) C9=270 \ GOTO 1765 @@Z. PRINT \ PRINT "DEGENERATE CASE A=B=0"\ PRINT @@Z3 GOTO 1770@@Z8 C9=90 \ GOTO 1765@@Z= IF B9<0 THEN 1730 \ IF B9=0 THEN 1735 \ IF B9>0 THEN 1740@@[B C9=180+57.296*ATN(ABS(B9/A9)) \ GOTO 1765@@[G C9=180 \ GOTO 1765 @@[L C9=180-57.296*ATN(ABS(B9/A9)) \ GOTO 1765@@[Q IF B9<0 THEN 1750 \ IF B9=0 THEN 1755 \ IF B9>0 THEN 1760@@[V C9=360-57.296*ATN(ABS(B9/A9)) \ GOTO 1765@@[[ C9=0 \ GOTO 1765 @@[  C9=57.296*ATN(ABS(B9/A9))@@[% PRINT R9, C9 @@[* RETURN @@[4 REM - SUBROUTINE TO SORT NUMERICAL LIST IN ASCENDING ORDER.  @@[9 REM - MAXIMUM NUMBERS ON THE LIST IS 100 @@[> DIM A(100) @@\C FOR I=1 TO N 'N<=100 AND SHOULD BE ASSIGNED IN THE MAIN PROGRAM. @@\H READ A(I) \ NEXT I 'READ DATA FROM LINE 2000 TO 2040.@@\M PRINT "UNSORTED LIST"@@\R FOR I=1 TO N \ PRINT A(I) \ NEXT I @@\W FOR I=1 TO N-1 \ FOR J=I+1 TO N \ IF A(I)<=A(J) THEN 1825@@\\ Z=A(I) \ A(I)=A(J) \ A(J)=Z@@\! NEXT J \ NEXT I@@\& PRINT\ PRINT"SORTED LIST"@@\+ FOR I=1 TO N\ PRINT A(I) \ NEXT I@@\0 RETURN @@\5 END@@
> END@@
?@@NUMBERS.@@X] REM - VARIABLES USED: N,T (T: EMBEDDED SPACES <>0 AND <72) @@X" T=N1 @@X' IF N=0 THEN 1610 \ IF ABS(N)<.1 THEN 1590 \ IF N>999999 THEN 1615@@X, IF N=INT(N) THEN 1595@@X1 PRINT TAB(T-INT(LOG(ABS(N))/LOG(10)));N \ G



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search