Trailing-Edge
-
PDP-10 Archives
-
decuslib10-09
-
43,50466/forlib.cfc
There are 2 other files named forlib.cfc in the archive. Click here to see a list.
File 1) DSKB:FORCNV.MAC[10,6] created: 1541 10-JULY-1975
File 2) TAPE:FORCNV.MAC created: 0000 19-MAY-1976
1)1 TITLE FORCNV %4B(445) CONVERSION ROUTINES
1) SUBTTL REVISION HISTORY
****
2)1 TITLE FORCNV %4C(476) CONVERSION ROUTINES
2) SUBTTL REVISION HISTORY
**************
1)1 PRGEND
****
2)1 ;465 17142 FIX NMLST% TO INPUT STRINGS INTO DOUBLE PRECISION AND
2) ; COMPLEX VARIABLES CORRECTLY.
2) ;476 17725 FIX G FORMAT WHEN FIELD TOO SMALL UNLESS 4X REMOVED.
2) ;**************** END OF REVISION HISTORY
2) PRGEND
**************
1)6 SOJA W,GETNXT ;RETURN FOR NEXT CHAR.
1) XCTTAB: JRST ILLCH ; (00) ILLEGAL CHAR
****
2)6 ; GOTST+9 S.M. #485.6 RRB/ 12-16-75
2) GETCH3: SOJA W,GETNXT ;RETURN FOR NEXT CHAR.
2) XCTTAB: JRST ILLCH ; (00) ILLEGAL CHAR
**************
1)8 ERROR (DAT,7,7,GETCH2);ILLEGAL CHARACTER IN INPUT
1) ERROR1: JSP P1,IBYTE. ;GET NEXT CHAR
****
2)8 ; ERROR0+3 S.M. #485.6 RRB/ 12-16-75
2) ERROR (DAT,7,7,GETCH3);ILLEGAL CHARACTER IN INPUT
2) ERROR1: JSP P1,IBYTE. ;GET NEXT CHAR
**************
1)13 TITLE FLOUT% %4.(377) FLOATING POINT OUTPUT
1) SUBTTL D. NIXON AND T. W. EGGERS
1) SUBTTL D. TODD /DMN/DRT/HPW/MD 15-SEP-74
1) ;***COPYRIGHT 1972,1973,1974,1975 DIGITAL EQUIPMENT CORP., MAYNARD, MASS.***
****
2)13 TITLE FLOUT% %4C.(476) FLOATING POINT OUTPUT
2) SUBTTL D. NIXON AND T. W. EGGERS
2) SUBTTL D. TODD /DMN/DRT/HPW/MD/JNG 22-NOV-75
2) ;***COPYRIGHT 1972,1973,1974,1975 DIGITAL EQUIPMENT CORP., MAYNARD, MASS.***
**************
1)17 ADDI C,3 ;REMOVE 4 TRAILING SPACES
1) JRST TRYFIT ;AND TRY AGAIN
****
2)17 ;**;[476] CHANGE TRYFI0+3L JNG 22-NOV-75
2) ADDI C,4 ;REMOVE 4 TRAILING SPACES
2) JRST TRYFIT ;AND TRY AGAIN
**************
1)22 SOJA T3,INTI1 ;YES, DO NOT ACCUMULATE THE SUM
1) INTI1A: ANDI T0,17 ;MAKE A BINARY NUMBER
****
2)22 ; INTI1B+5 S.M. #485.6 RRB/ 12-16-75
2) INTI1C: SOJA T3,INTI1 ;YES, DO NOT ACCUMULATE THE SUM
2) INTI1A: ANDI T0,17 ;MAKE A BINARY NUMBER
**************
1)22 ERROR (DAT,7,7,INTI1B);ILLEGAL CHARACTER IN INPUT
1) INTI5: TLNN P3,IO.TTY ;IS THIS A TELETYPE
****
2)22 ; INTI4+2 S.M. #485.6 RRB/ 12-16-75
File 1) DSKB:FORCNV.MAC[10,6] created: 1541 10-JULY-1975
File 2) TAPE:FORCNV.MAC created: 0000 19-MAY-1976
2) ERROR (DAT,7,7,INTI1C);ILLEGAL CHARACTER IN INPUT
2) INTI5: TLNN P3,IO.TTY ;IS THIS A TELETYPE
**************
1)24 LINT2: ERROR (DAT,7,7,LINT0) ;ILLEGAL CHARACTER IN INPUT
1) LINT3: POPJ P, ;RETURN
****
2)24 ; LINT2 S.M. #485.6 RRB/ 12-16-75
2) LINT2: ERROR (DAT,7,7,LINT1) ;ILLEGAL CHARACTER IN INPUT
2) LINT3: POPJ P, ;RETURN
**************
1)25 SOJA T3,OCTI1 ;RETURN FOR NEXT CHARACTER
1) OCTI2: TLNE P3,IO.EOL ;IS THIS THE END OF LINE
****
2)25 ;OCTI1A+3 S.M. #485.6 RRB/ 12-16-75
2) OCTI1C: SOJA T3,OCTI1 ;RETURN FOR NEXT CHARACTER
2) OCTI2: TLNE P3,IO.EOL ;IS THIS THE END OF LINE
**************
1)25 ERROR (DAT,7,7,OCTI1B) ;ILLEGAL CHARACTER IN INPUT
1) OCTI4: TLNN P3,IO.TTY ;IS THIS A TTY
****
2)25 ; OCTI3+2 S.M. #485.6 RRB/ 12-16-75
2) ERROR (DAT,7,7,OCTI1C) ;ILLEGAL CHARACTER IN INPUT
2) OCTI4: TLNN P3,IO.TTY ;IS THIS A TTY
**************
1)25 ADDI T0,"0" ;CONVERT TO ASCII
1) JSP P1,OBYTE. ;OUTPUT A DIGIT
****
2)25 ; OCTO2+4 S.M. #485.5 RRB/ 12-16-75
2) JUMPL T2,OCTO2A ;HAVE WE SEEN ANY DIGITS BEFORE?
2) TLNE T5,770000 ;DON'T SUPPRESS THE WHOLE THING!
2) CAIE T0,0 ;NO, IS THIS ONE?
2) TLOA T2,400000 ;YES. MARK IT AND OUTPUT IT
2) MOVNI T0,20 ;NO. LEADING BLANK
2) OCTO2A: ADDI T0,"0" ;CONVERT TO ASCII
2) JSP P1,OBYTE. ;OUTPUT A DIGIT
**************
1)29 NLID: TLO P2,FT.PRC ;SET DOUBLE PRECISION
1) NLIF: PUSHJ P,NLISCN ;FIND SOME DATA
1) TLNE P2,FT.NUL ;[366] NULL ITEM
****
2)29 ;**;[465] CHANGE @ NLID JNG 11-NOV-75
2) NLID: TLOA P2,FT.PRC ;[465] SET DOUBLE PRECISION
2) NLIF: TLZ P2,FT.PRC ;[465] SET SINGLE PRECISION
2) PUSHJ P,NLISCN ;FIND SOME DATA
2) TLNE P2,FT.NUL ;[366] NULL ITEM
**************
1)29 NLIS0::MOVSI T1,(POINT 7,(G1));ASCII BYTE POINTER
1) MOVE T0,[ASCII / /];SET THE OUTPUT TO BLANKS FOR COMPARE
1) MOVEM T0,(G1) ;CLEAR THE OUTPUT WORD
1) NLIS1: JSP P1,IBYTE.## ;GET A CHARACTER
1) CAIE T0,"'" ;CHECK FOR THE END OF STRING
1) TLNE P3,IO.EOL ;OR END OF LINE
1) POPJ P, ;RETURN END OF STRING
1) IDPB T0,T1 ;NO, STORE THE CHARACTER
1) TLNE T1,760000 ;END OF A WORD
1) JRST NLIS1 ;NO CONTINUE
File 1) DSKB:FORCNV.MAC[10,6] created: 1541 10-JULY-1975
File 2) TAPE:FORCNV.MAC created: 0000 19-MAY-1976
1) AOBJN G1,NLIS0 ;END OF ARRAY
****
2)29 ;**;[465] CHANGE @ NLIS0 JNG 6-NOV-75
2) NLIS0::MOVSI T1,(POINT 7,) ;[465] ASCII BYTE POINTER
2) HRRI T1,(G1) ;[465] TO OUR OUTPUT DATA WORD
2) MOVE T0,[ASCII / /];SET THE OUTPUT TO BLANKS FOR COMPARE
2) MOVEM T0,(G1) ;CLEAR THE OUTPUT WORD
2) PUSH P,[5] ;[465] SAVE CHAR COUNT TILL WORD FILLS
2) JUMPSP NLIS1 ;[465] MORE FIXING NEEDED IF D.P.
2) MOVEM T0,1(G1) ;[465] CLEAR 2ND HALF WORD
2) MOVEI T0,^D10 ;[465] RESET COUNT TO 10 CHARS
2) MOVEM T0,(P) ;[465] SO CAN INPUT D.P. STRING
2) AOBJN G1,.+1 ;[465] ADVANCE G1 CORRECTLY FOR EXIT
2) NLIS1: JSP P1,IBYTE.## ;GET A CHARACTER
2) CAIE T0,"'" ;CHECK FOR THE END OF STRING
2) TLNE P3,IO.EOL ;OR END OF LINE
2) ;**;[465] CHANGE @ NLIS1+3L JNG 6-NOV-75
2) JRST [POP P,(P) ;[465] REMOVE JUNK FORM STACK
2) POPJ P,] ;[465] RETURN END OF STRING
2) IDPB T0,T1 ;NO, STORE THE CHARACTER
2) SOSLE (P) ;[465] END OF VARIABLE?
2) JRST NLIS1 ;NO CONTINUE
2) POP P,(P) ;[465] CLEAR JUNK FROM STACK
2) AOBJN G1,NLIS0 ;END OF ARRAY
**************
1)29 NLINA2: TRC T0,140 ;CONVERT THE ASCII
1) TRNN T0,140 ;CHARACTER TO A SIXIT
1) IORI T0,40 ;CHARACTER (CORRECT THE CASE)
1) ANDI T0,77 ;SAVE ONLY 6 BITS
1) LSH T1,6 ;STORE IT T1
1) IOR T1,T0 ;INSET THE CHARACTER
1) JUMPGE T1,NLINA1 ;CONTINUE FOR SIX CHARACTERS
****
2)29 ; NLINA2+0[461] S.M. #485.17 RRB/ 12-29-75
2) NLINA2: MOVE T2,T0 ;[461] USE T2, KEEP TO ASCII
2) TRC T2,140 ;[461] CONVERT THE ASCII
2) TRNN T2,140 ;[461] CHARACTER TO A SIXBIT
2) IORI T2,40 ;[461] CHARACTER (CORRECT THE CASE)
2) ANDI T2,77 ;[461] SAVE ONLY 6 BITS
2) LSH T1,6 ;STORE IT T1
2) IOR T1,T2 ;[461] INSERT THE CHARACTER
2) JUMPGE T1,NLINA1 ;CONTINUE FOR SIX CHARACTERS
**************
1)29 JUMPL G1,NLISCN ;ANYTHING LEFT
1) SUB P,[XWD 1,1] ;REDUDE THE STACK FOR THE RETURN
****
2)29 ;**;[465] CHANGE @ LSDSCN+14L JNG 6-NOV-75
2) AOBJN G1,NLISCN ;[465] ANYTHING LEFT
2) SUB P,[XWD 1,1] ;REDUDE THE STACK FOR THE RETURN
**************
File 1) DSKB:FORDAR.MAC[10,6] created: 1220 09-SEPT-1974
File 2) TAPE:FORDAR.MAC created: 0000 18-DEC-1975
1)1 IF1,<
****
2)1 ;EDIT SPR WHAT
2) ;466 17152 FIX SNG.X FOR NEGATIVE NUMBERS NEAR POWERS OF TWO
2) IF1,<
**************
1)3 JUMPG X,.+3 ;JUMP POSITIVE
1) JUMPE X+1,SNG2 ;EXIT IF ZERO
1) SUBI X+1,1 ;SPECIAL CASE FOR NUM=1B1
1) TLNN X+1,(1B1) ;ROUNDING NEEDED
1) JRST SNG2 ;NO, RETURN
1) CAME X,[377777,,-1] ;YES, WILL NUMBER OVERFLOW
1) AOSA X ;NO, ROUND THE HIGH ORDER WORD
1) FSC X,1 ;YES, FORCE A FLOATING OVERFLOW MESSAGE
1) JUMPL X,SNG2 ;IS THE NUMBER POSITIVE
1) TLO X,400 ;YES, FORCE MOST SIGNIFICANT FRACTION BIT ON
1) >
****
2)3 ;SNG.'X: S.M. #485.17 SPR#17902[466] RRB/ 12-18-75
2) JUMPL X,SNG3 ;NEGATIVE ARGUMENT?
2) TLNE X+1,(1B1) ;POSITIVE. ROUND REQUIRED?
2) TRON X,1 ;YES, TRY TO ROUND BY SETTING LSB
2) JRST SNG2 ;WE WON,FINISHED
2) MOVE X+1,X ;COPY HIGH PART OF ARG
2) AND X,[777000,,1] ;MAKE UNNORMALIZED LSB, SAME EXPONENT
2) FADR X,X+1 ;ROUND & RENORMALIZE
2) GOODBY
2) ;HERE IF ARG IS NEGATIVE
2) SNG3: DMOVN X,X ;MAKE POSITIVE
2) TLNE X+1,(1B1) ;NEED ROUNDING?
2) TRON X,1 ;YES, TRY TO DO IT BY SETTING LSB
2) JRST SNG4 ;DONE
2) MOVN X+1,X ;MAKE RE-NEGATED COPY OF HIGH PART
2) ORCA X,[777,,-1] ;GET UNNORM NEG LSB WITH SAME EXPONENT
2) FADR X,X+1 ;ROUND AND NORMALIZE
2) GOODBY
2) SNG4: MOVN X,X ;RE-NEGATE
2) >
**************
File 1) DSKB:FORDBL.MAC[10,6] created: 1218 09-SEPT-1974
File 2) TAPE:FORDBL.MAC created: 0000 11-JUNE-1976
1)14 TITLE DATAN. %4.(356) SINGLE ARGUMENT DOUBLE PRECISION ARC TANGENT
1) SUBTTL D. TODD /DRT/HPW/MD 12-AUG-74
1) ;***COPYRIGHT 1972,1973 DIGITAL EQUIPMENT CORP., MAYNARD, MASS.***
1) ;THIS ROUTINE CALCULATES THE ACTANGENT OF A DOUBLE PRECISION
****
2)13 TITLE DATAN. %4C.(513) SINGLE ARGUMENT DOUBLE PRECISION ARC TANGENT
2) SUBTTL D. TODD /DRT/HPW/MD 15-DEC-75
2) ;***COPYRIGHT 1972,1973,1974,1975 DIGITAL EQUIPMENT CORP., MAYNARD, MASS.***
2) ;THIS ROUTINE CALCULATES THE ACTANGENT OF A DOUBLE PRECISION
**************
1)14 ;BIT34=1,ADD -PI/2 TO ANSWER
1) ;BIT0=1, NEGATE FINAL ANSWER
****
2)13 ;BIT34=1, ADD 2*ATAN(1/2) TO ANSWER ;[513]
2) ;BIT17=1,ADD -PI/2 TO ANSWER ;[513]
2) ;BIT0=1, NEGATE FINAL ANSWER
**************
1)14 SKIPGE A ;IS THE ARGUMENT POSITIVE?
****
2)13 ;**;[513] INSERT @ DATAN.+7L JNG 15-DEC-75
2) TLZ G,377777 ;[513] ZAP ALL BUT SIGN FOR FLAGS
2) SKIPGE A ;IS THE ARGUMENT POSITIVE?
**************
1)14 TRO G,2 ;ADD -PI/2 TO FINAL ANSWER
1) FLDIV D,A
****
2)13 ;**;[513] CHANGE @ DATAN.+17L JNG 15-DEC-75
2) TLO G,1 ;[513] ADD -PI/2 TO FINAL ANSWER
2) FLDIV D,A
**************
1)14 DMOVEM A,DX
1) TRO G,1 ;SET FLAG TO LATER ADD ATAN(1/2)
1) DATAN1: MOVM D,A ;GET MOD(X)
****
2)13 ;**;[513] REPLACE @ DATAN0+14L JNG 15-DEC-75
2) AOJA G,DATAN0 ;[513] TRY AGAIN IN CASE STILL TOO BIG
2) DATAN1: MOVM D,A ;GET MOD(X)
**************
1)14 IFE CPU-KA10,<TRNN G,1 ;ADD ATAN(1/2)?
1) JRST DATAN4 ;NO
1) FLADD A,ATANH
1) DATAN4: TRNN G,2 ;ADD -PI/2?
1) JRST DATAN5 ;NO
1) FLADD A,MPIOT
1) DATAN5: >
1) IFE CPU-KI10,<TRNE G,1
1) DFAD A,ATANH
1) TRNE G,2
1) DFAD A,MPIOT >
****
2)13 ;**;[513] CHANGE @ DATAN3+1L JNG 15-DEC-75
2) IFE CPU-KA10,<TRNN G,-1 ;[513] ADD ATAN(1/2)?
2) JRST DATAN4 ;[513] NO
2) FLADD A,ATANH
2) SOJA G,DATAN3 ;[513] TRY AGAIN IN CASE NEED TO ADD
2) ;[513] ATAN(1/2) TWICE?
File 1) DSKB:FORDBL.MAC[10,6] created: 1218 09-SEPT-1974
File 2) TAPE:FORDBL.MAC created: 0000 11-JUNE-1976
2) DATAN4: TRNN G,1 ;[513] ADD -PI/2?
2) JRST DATAN5 ;NO
2) FLADD A,MPIOT
2) >
2) DATAN5:
2) IFE CPU-KI10,<TRNN G,-1 ;[513] NEED TO ADD ATAN(1/2)?
2) JRST DATAN7 ;[513] NO, PROCEED
2) DFAD A,ATANH
2) SOJA G,DATAN5 ;[513] MAKE SURE ALL DONE
2) DATAN7: TLNE G,1 ;[513] NEED TO ADD -PI/2?
2) DFAD A,MPIOT >
**************
File 1) DSKB:FORDMP.MAC[10,6] created: 1209 09-SEPT-1974
File 2) TAPE:FORDMP.MAC created: 0000 25-APR-1977
1)3 PUSH P,L ;SAVE THE LINK OVER THE I/O CALLS
****
2)1 SUB L,[XWD 1,0] ;SUB 1 FROM ARG COUNT
2) PUSH P,L ;SAVE THE LINK OVER THE I/O CALLS
**************
1)3 MOVEI L,[XWD 3000,DEVICE
1) XWD 0,0
1) XWD 400006,MESS2]
1) PUSHJ P,OUT.##
1) CLEARB S, I ;AC0-AC7, SET INDICATOR TO ZERO
1) MOVEI L,[XWD 001000,S
1) XWD 0,0] ;OUTPUT IT
1) PUSHJ P,IOLST.##
1) CAIGE S, 7 ;WHICH CONTAINS 0,1,2,3,4,5,6,7
1) AOJA S, .-2 ;LOOP BACK UNTIL DONE
1) MOVEI F, 1-N(P) ;GET CONTENTS OF AC0-AC7 OFF PD
1) MOVEI L,[XWD 001000,(F)
1) XWD 0,0] ;OUTPUT IT
1) PUSHJ P,IOLST.##
1) CAIGE F, 1-N+7(P) ;LOOP FOR 8 ACCUMULATORS
1) AOJA F, .-2
1) MOVEI S, 10 ;PRINT AC10 - AC17
1) MOVEI L,[XWD 001000,S
1) XWD 0,0] ;OUTPUT IT
1) PUSHJ P,IOLST.##
1) CAIGE S, 17 ;LOOP FOR 8 ACS
1) AOJA S, .-2
1) MOVEI S,-N(P) ;GET THE BLT ACC ADDR
****
2)1 MOVEI L,[XWD 3000,DEVICE
2) XWD 0,0
2) XWD 400012,MESS2]
2) PUSHJ P,OUT.##
2) CLEARB S,I
2) MOVEI F, 1-N(P) ;GET CONTENTS OF AC0-AC7 OFF PD
2) MOVEI L,[XWD 001000,(F)
2) XWD 0,0] ;OUTPUT IT
2) PUSHJ P,IOLST.##
2) CAIGE F, 1-N+7(P) ;LOOP FOR 8 ACCUMULATORS
2) AOJA F, .-2
2) MOVEI S,-N(P) ;GET THE BLT ACC ADDR
**************
1)4 SCHEK: CAML S, F ;ARE ARGUMENTS IN ORDER?
1) EXCH S, F ;NO, SWITCH THEM
****
2)1 SCHEK: PUSH P,S ;SAVE S
2) PUSH P,L ;SAVE THE LINK
2) MOVEI L,[XWD 3000,DEVICE
2) XWD 0,0
2) XWD 400006,MESS5]
2) PUSHJ P,OUT.##
2) MOVEI L,[XWD 1000,S
2) XWD 0,0]
2) MOVE S,[ASCII "OCTALFLOATINTEGASCIIDOUBL"](C)
2) ; GET FIRST PART OF MODE
2) PUSHJ P,IOLST.## ;OUTPUT IT
File 1) DSKB:FORDMP.MAC[10,6] created: 1209 09-SEPT-1974
File 2) TAPE:FORDMP.MAC created: 0000 25-APR-1977
2) MOVE S,[ASCII " ING ER E PR."](C)
2) ; GET SECOND PART OF MODE
2) PUSHJ P,IOLST.## ;OUTPUT IT
2) PUSHJ P,FIN.##
2) POP P,L ;RESTORE LINK
2) POP P,S ;RESTORE S
2) CAML S, F ;ARE ARGUMENTS IN ORDER?
2) EXCH S, F ;NO, SWITCH THEM
**************
1)7 MESS1: ASCII "(1H148X9HCORE DUMP/1H 7HOV FLAG17X9HCRY0"
1) ASCII " FLAG15X9HCRY1 FLAG15X14HPC CHANGE FLAG9"
1) ASCII "X8HBIS FLAG/1H 5(A9,15X))"
1) MESS2: ASCII "(2(1H-8(9X3HAC O2)/7X8O14/))"
1) MESS3: ASCII "(1H-)"
1) MESS4: ASCII "(11H+LOCATIONS O6,9H THROUGH O6,9H CONTAIN /1H )"
1)8 ;MORE FORMAT STATEMENTS AND SOME CONSTANTS, TOO
1) OFRMT: ASCII "(1H0,O6,8O14)"
1) EFRMT: ASCII "(1H0,O6,8G14.5)"
1) IFRMT: ASCII "(1H0,O6,8I14)"
1) AFRMT: ASCII "(1H0,O6,8A14)"
1) DFRMT: ASCII "(1H0,O6,4G25.16)"
1) OFRMT2: ASCII "(1H0,40X,O14)"
****
2)1 MESS1: ASCII "(1H148X9HCORE DUMP//'-OV FLAG - ',A3,11X"
2) ASCII "12HCRY0 FLAG - A3,9X,12HCRY1 FLAG - A3,9"
2) ASCII "X17HPC CHANGE FLAG - A3,4X11HBIS FLAG - A3)"
2) MESS2: ASCII "('-AC0-AC7/ ',8(O14),/'-AC10-AC17/',8(O14))"
2) MESS3: ASCII "(1H-)"
2) MESS4: ASCII "(11H+LOCATIONS O6,9H THROUGH O6,9H CONTAIN /1H )"
2) MESS5: ASCII "('-MODE = ',2A5)"
2) ;MORE FORMAT STATEMENTS AND SOME CONSTANTS, TOO
2) OFRMT: ASCII "(1H0,O6,'/',8O14)"
2) EFRMT: ASCII "(1H0,O6,'/',8G14.5)"
2) IFRMT: ASCII "(1H0,O6,'/',8I14)"
2) AFRMT: ASCII "(1H0,O6,'/',8A14)"
2) DFRMT: ASCII "(1H0,O6,'/',4G25.16)"
2) OFRMT2: ASCII "(1H0,40X,O14)"
**************
File 1) DSKB:FORERR.MAC[10,6] created: 1520 10-JULY-1975
File 2) TAPE:FORERR.MAC created: 0000 19-MAY-1976
1)1 ;447 16733 FIX ER%DEV TO PUT END= AND ERR= ADDR'S IN USR.PC SO
1) ; EOF TAKES AFFECT IMMEDIATELY AND NO IO VARIABLES GET
1) ; CLEARED
1) ;450 ----- FIX EDIT 424 IN ER%DA1 TO CHECK P3 NOT P2 FOR IO.FMT
****
2)1 ;450 ----- FIX EDIT 424 IN ER%DA1 TO CHECK P3 NOT P2 FOR IO.FMT
**************
1)11 MOVE T5,DATTAB(T5) ;GET THE DISPATCH ENTRY
1) TLNE T5,ER.HDR ;TYPE A HEADER
****
2)11 ; ER%DAT+5 S.M. #485.6 RRB/ 12-17-75
2) CAIN T5,7 ;ILLEGAL CHARACTER?
2) JRST ER%DA2 ;YES
2) ER%DA0: MOVE T5,DATTAB(T5) ;GET THE DISPATCH ENTRY
2) TLNE T5,ER.HDR ;TYPE A HEADER
**************
1)11 TLNE P2,IO.FMT ;[424] IS IT FORMATTED I/O
1) OUTSTR [ASCIZ /: /] ;[424] SO RECORD NO. LOOKS NICE
1) MOVE T0,DD.LIM(P3) ;[330] GET RECORD NUMBER
1) PUSHJ P,TY%DEC ;[330] TYPE IT
1) PJRST TY%DDB ;[330] TYPE DDB INFO.
1) DATTAB:
****
2)11 ; ER%DA1+12 S.M. #485.17 RRB/ 12-17-75
2) TLNE P3,IO.FMT ;[424] IS IT FORMATTED I/O
2) OUTSTR [ASCIZ /: /] ;[424] SO RECORD NO. LOOKS NICE
2) MOVE T0,DD.LIM(P3) ;[330] GET RECORD NUMBER
2) PUSHJ P,TY%DEC ;[330] TYPE IT
2) PJRST TY%DDB ;[330] TYPE DDB INFO.
2) ER%DA2: HLRZ T1,ERR.PC(P4) ;USER GIVE ERR=?
2) JUMPE T1,ER%DA0 ;NO. PROCEED NORMALLY
2) JSP P1,IBYTE.## ;GET A CHARACTER
2) TLNN P3,IO.EOL!IO.EOF ;AT END?
2) JRST .-2 ;NO
2) JRST ERDEV4 ;TREAT LIKE DEVICE ERROR
2) DATTAB:
**************
1)12 DAT7E: HRRZI T3,1(T1) ;[414] [277]
1) ;NO, START PRINTING AT THE BEGINNING OF THE BUFFER
1) TLNN T3,-1 ;[414] BYTE SIZE SET FROM POS.TB ?
1) TLO T3,(POINT 7,0,35);[414] NO - SET UP THE BYTE SIZE
1) SETZ T2, ;COUNT THE COLUMNS
1) DAT7B: ILDB T0,T3 ;GET A CHARACTER
1) OUTCHR T0 ;TYPE IT
1) CAME T3,DD.HRI+1(P3) ;IS THIS THE CHARACTR
1) JRST DAT7C ;NO
1) PUSH P,T2 ;SAVE THE POSITION
1) MOVN T2,DD.HRI+2(P3) ;GET THE REMAINING CHARACTER COUNT
1) SUBI T2,1 ;[277] TO GET ALL CHARS IN CASE OF ENC/DEC
1) DAT7C: CAIE T0,12 ;IS THIS A LINE FEED
1) AOJN T2,DAT7B ;END OF BUFFER OR LINE FEED
****
2)12 ; DATEG+10 S.M. #485.17 RRB/ 12-17-75
2) JRST DAT7E ;NOT IN THIS BUFFER. START AT BEGINNING
2) HRRZ T4,DD.HRI+1(P3) ;GET ADR OF WORD WITH BAD CHARACTER
2) CAILE T4,(T3) ;IS IT GREATER THAT INITIAL POINTER?
File 1) DSKB:FORERR.MAC[10,6] created: 1520 10-JULY-1975
File 2) TAPE:FORERR.MAC created: 0000 19-MAY-1976
2) JRST DAT7E1 ;YES. ILDB WILL REACH CURRENT POINTER
2) CAIN T4,(T3) ;NO. IS IT EQUAL CURRENT POINTER?
2) TLNN T3,760000 ;YES. IS INITIAL POINTER TO REAL ADDRESS?
2) JRST DAT7E ;NO. ILDB WOULD BE PAST CURRENT POINTER
2) CAMG T3,DD.HRI+1(P3) ;YES. IS IT TO EARLIER BYTE THAN CURRENT?
2) DAT7E: MOVEI T3,1(T1) ;[277]
2) ;NO, START PRINTING AT THE BEGINNING OF THE BUFFER
2) DAT7E1: TLNN T3,-1 ;[414] BYTE SIZE SET FROM POS.TB ?
2) TLO T3,(POINT 7,0,35);SET UP THE BYTE SIZE
2) ; DAT7B-1 S.M. #485.13 NDG/ 6-19-75
2) SETZB T1,T2 ;COUNT THE COLUMNS, SET CHAR NOT REACHED
2) DAT7B: ILDB T0,T3 ;GET A CHARACTER
2) OUTCHR T0 ;TYPE IT
2) CAME T3,DD.HRI+1(P3) ;IS THIS THE CHARACTR
2) JRST DAT7C ;NO
2) PUSH P,T2 ;SAVE THE POSITION
2) MOVN T2,DD.HRI+2(P3) ;GET THE REMAINING CHARACTER COUNT
2) SUBI T2,1 ;[277] TO GET ALL CHARS IN CASE OF ENC/DEC
2) ; DAT7C-1 S.M. #485.13 NDG/ 6-19-75
2) SETO T1, ;SET ILL CHAR REACHED
2) DAT7C: JUMPN T1,DAT7C1 ;IF ILL CHAR REACHED, LF TERMINATES
2) CAIN T0,12 ;ELSE LF CLEARS POSITION COUNT
2) SETO T2, ;START AT MINUS ONE, SO AOJ GIVES ZERO
2) AOJA T2,DAT7B ;COUNT CHARACTER
2) DAT7C1: CAIE T0,12 ;IS THIS A LINE FEED
2) AOJN T2,DAT7B ;END OF BUFFER OR LINE FEED
**************
1)13 ERDEV4: MOVEM T1,USR.PC(P4) ;[225][447] CHANGE THE USR'S PC ADDRESS
1) POPJ P, ;[211] RETURN
****
2)13 ERDEV4: MOVEM T1,ALT.PC(P4) ;[225] CHANGE THE USR'S PC ADDRESS
2) POPJ P, ;[211] RETURN
**************
1)13 XWD ,[FIVBIT (Block too large or quota exceeded)] ;(3)
1) XWD ,[FIVBIT (End of file)] ;(4)
****
2)13 XWD ,[FIVBIT (Block too large or quota exceeded or file structure full)] ;(3)
2) XWD ,[FIVBIT (End of file)] ;(4)
**************
File 1) DSKB:FORFUN.MAC[10,6] created: 1545 10-JULY-1975
File 2) TAPE:FORFUN.MAC created: 0000 20-APR-1977
1)1 TITLE FORFUN %4.(446) - OVERLAY FUNCTION MODULE FOR FOROTS
1) SUBTTL H. P. WEISS/HPW/DMN/MD/DPL 7-JUL-75
1) ;***COPYRIGHT 1973,1974,1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS.***
1) VERWHO==0 ;EDITOR
1) VERVER==4 ;MAJOR VERSION NUMBER
1) VERUPD==0 ;MINOR VERSION NUMBER
1) VEREDT==446 ;EDIT NUMBER
1) VERFUN==BYTE (3)VERWHO(9)VERVER(6)VERUPD(18)VEREDT
1) PURGE VERWHO,VERVER,VERUPD,VEREDT
1)2 SUBTTL REVISION HISTORY
1) ;446 15993 FIX CBC FUNCTION SO IT WILL CUT BACK CORE PROPERLY
1) ; FOR LINK OVERLAY'S
1) ;
****
2)1 TITLE FORFUN %4C.(477) - OVERLAY FUNCTION MODULE FOR FOROTS
2) SUBTTL H. P. WEISS/HPW/DMN/MD/DPL/JNG 22-NOV-75
2) ;***COPYRIGHT 1973,1974,1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS.***
2) VERWHO==0 ;EDITOR
2) VERVER==4 ;MAJOR VERSION NUMBER
2) VERUPD==3 ;MINOR VERSION NUMBER
2) VEREDT==477 ;EDIT NUMBER
2) VERFUN==BYTE (3)VERWHO(9)VERVER(6)VERUPD(18)VEREDT
2) PURGE VERWHO,VERVER,VERUPD,VEREDT
2)2 SUBTTL REVISION HISTORY
2) ;446 15993 FIX CBC FUNCTION SO IT WILL CUT BACK CORE PROPERLY
2) ; FOR LINK OVERLAY'S
2) ;477 17759 ALWAYS REQUEST AT LEAST ONE WORD FROM GMEM%%
2) ;
**************
1)8 PUSHJ P,GMEM%%## ;ALLOCATE CORE
****
2)8 ;**;[477] INSERT @ FUNCR1+6L JNG 22-NOV-75
2) SKIPN T0 ;[477] USER REQUEST ONE WORD?
2) MOVEI T0,1 ;[477] YES, GIVE HIM 2
2) PUSHJ P,GMEM%%## ;ALLOCATE CORE
**************
1)9 HRRZ T1,.JBREL## ;LOAD LAST LEGAL ADR
****
2)9 ;**;[477] INSERT @ FUNRA1+9L JNG 22-NOV-75
2) CAIN P3,1 ;[477] RETURNING 1 WORD?
2) MOVEI P3,2 ;[477] YES, WE GAVE HIM 2
2) HRRZ T1,.JBREL## ;LOAD LAST LEGAL ADR
**************
1)9 ;
1) FUNRA4: MOVE P3,0(G1) ;RELOAD CORE SIZE
1) HRLZM P3,0(P2) ;BUILD FOROTS CONTROL WORD
****
2)9 FUNRA4: MOVE P3,0(G1) ;RELOAD CORE SIZE
2) ;**;[477] INSERT @ FUNRA4+1L JNG 22-NOV-75
2) CAIN P3,1 ;[477] GIVING BACK 1 WORD
2) MOVEI P3,2 ;[477] YES, HE REALLY MEANT 2
2) HRLZM P3,0(P2) ;BUILD FOROTS CONTROL WORD
**************
1)16 MOVEI P1,-1(T2) ;[311] LAST WORD WE NEED
1) CORE P1, ;[311]
1) JRST FUNST0 ;[311] NO CHANGE IF WE FAILED
File 1) DSKB:FORFUN.MAC[10,6] created: 1545 10-JULY-1975
File 2) TAPE:FORFUN.MAC created: 0000 20-APR-1977
1) CAMLE T2,.JBREL## ;[311] INCASE WE GAVE IT ALL AWAY
1) JRST FUNCB1 ;[311] JUST CLEAR PREVIOUS
****
2)16 IFN <KA10-CPU>,< ;IF NOT A KA10
2) MOVE T3,[XWD 4,T4] ;CHECK FOR EXISTENCE OF PAGE. UUO
2) MOVEI T4,1 ;BY GETTING A WORD OF WORKING SET TABLE
2) PAGE. T3, ;DO CALL
2) JRST FUNCB3 ;DOES NOT EXIST. NOT PAGING SYSTEM
2) MOVEI P1,776(T2) ;GET FIRST UNWANTED PAGE
2) LSH P1,-^D9
2) HRRZ T3,.JBREL## ;GET LAST UNWANTED PAGE
2) LSH T3,-^D9
2) TLO P1,(1B0) ;SET DELETING PAGES BIT IN P1
2) RETAGN: MOVSI T5,-17 ;MAX PAGES TO DO AT ONE TIME
2) HRRI T5,PAG.TB(P4) ;WHERE TO STORE WORDS
2) SETZM PAG.TB(P4) ;START WITH ZERO PAGES
2) RETMOR: CAIGE T3,(P1) ;FINISHED?
2) JRST RETDON ;YES. DO FINAL PAGE. UUO
2) MOVEM P1,1(T5) ;NO. STORE THIS PAGE. (SHOULD BE AT LEAST ONE)
2) AOS PAG.TB(P4) ;AND COUNT IT
2) ADDI P1,1 ;STEP TO NEXT PAGE
2) AOBJN T5,RETMOR ;LOOP FOR MORE PAGES
2) RETDON: MOVEI T5,PAG.TB(P4) ;SET UP UUO ARG
2) HRLI T5,1 ;DELETE PAGES FUNCTION
2) PAGE. T5, ;DO IT
2) JFCL ;IGNORE IT. MAY CAUSE PROBS?
2) CAIL T3,(P1) ;WAS THAT THE END?
2) JRST RETAGN ;NO. DO MORE
2) JRST FUNCB4 ;YES. DONE
2) > ;END IFN <KA10-CPU>
2) FUNCB3: MOVEI P1,-1(T2) ;[311] LAST WORD WE NEED
2) CORE P1, ;[311]
2) JRST FUNST0 ;[311] NO CHANGE IF WE FAILED
2) FUNCB4: CAMLE T2,.JBREL## ;[311] INCASE WE GAVE IT ALL AWAY
2) JRST FUNCB1 ;[311] JUST CLEAR PREVIOUS
**************
File 1) DSKB:FORINI.MAC[10,6] created: 1001 16-SEPT-1974
File 2) TAPE:FORINI.MAC created: 0000 26-MAY-1976
1)5 TLZN P4,-1 ;IF NON-ZERO, MUST GET FOROTS
****
2)5 ; TRH 7-22-74
2) IFN FTWMU,<
2) JSP P,INDVT.## ;INITIALIZE DEVTAB WORDS
2) >
2) ; EOP
2) TLZN P4,-1 ;IF NON-ZERO, MUST GET FOROTS
**************
1)5 SIXBIT /FOROTS/
1) EXP 0,0,0,0
****
2)5 SIXBIT /FOR531/
2) EXP 0,0,0,0
**************
File 1) DSKB:FOROPN.MAC[10,6] created: 1149 09-SEPT-1974
File 2) TAPE:FOROPN.MAC created: 0000 19-MAY-1976
1)1 TITLE FOROPN %4.(100) ROUTINES TO SIMULATE F40 SUBROUTINE CALLS
1) SUBTTL D. TODD /DRT/ 08-DEC-1972
1) ;***COPYRIGHT 1972,1973,1974 DIGITAL EQUIPMENT CORP., MAYNARD, MASS.***
1) SEARCH FORPRM ;GET THE GLOBAL SYMBOLS
1) ; ENTRY IFILE,OFILE,EOF1,EOFC,DEFINE,BUFFER,IBUFF,OBUFF,MAGDEN,RELEAS
1) MLON
1) SALL
1)2 SUBTTL COMMON STORAGE AND TABLES
1) UNSAVE: MOVSI T5,SAVAC ;GET A RESTORE BLT POINTER
1) BLT T5,T5 ;RESTORE THE AC'S
1) POP P,L ;RESTORE AC L
1) GOODBY ;RETURN TO THE USER
1) SAVE: EXCH L,(P) ;SAVE THE LINK POINTER
1) PUSH P,L ;SAVE THE SAVE CALL RETURN ADDRESS
1) MOVEM T5,SAVAC+T5 ;SAVE AC T5
1) MOVEI T5,SAVAC ;GET A BLT POINTER TO THE SAVE AREA
1) BLT T5,SAVAC+T5 ;SAVE THE AC'S
1) MOVE L,-1(P) ;RESTORE THE LINK REGISTER
1) MOVE T0,@(L) ;GET THE UNIT NUMBER
1) HRRZM T0,ARGBLK ;SAVE AS FIRST IN THE ARGBLK
1) IFN F40LIB,<
****
2)1 TITLE FOROPN %4C.(504) ROUTINES TO SIMULATE F40 SUBROUTINE CALLS
2) SUBTTL D. TODD /DRT/ 23-NOV-1975
2) ;***COPYRIGHT 1972,1973,1974,1975 DIGITAL EQUIPMENT CORP., MAYNARD, MASS.***
2) SEARCH FORPRM ;GET THE GLOBAL SYMBOLS
2) ; ENTRY IFILE,OFILE,EOF1,EOFC,DEFINE,BUFFER,IBUFF,OBUFF,MAGDEN,RELEAS
2) MLON
2) SALL
2) UNSAVE: MOVSI T5,SAVAC ;GET A RESTORE BLT POINTER
2) BLT T5,T5 ;RESTORE THE AC'S
2) POP P,L ;RESTORE AC L
2) GOODBY ;RETURN TO THE USER
2) SAVE: EXCH L,(P) ;SAVE THE LINK POINTER
2) ;**;[504] REPLACE @ SAVE+2L JNG 23-NOV-75
2) PUSH P,L ;SAVE THE SAVE CALL RETURN ADDRESS
2) MOVEI L,SAVAC ;[504] GET A BLT POINTER TO SAVE AREA
2) BLT L,SAVAC+T5 ;[504] SAVE THE AC'S
2) MOVE L,-1(P) ;RESTORE THE LINK REGISTER
2) MOVE T0,@(L) ;GET THE UNIT NUMBER
2) HRRZM T0,ARGBLK ;SAVE AS FIRST IN THE ARGBLK
2) SETZM ARGBLK+1 ;ZERO END=
2) SETZM ARGBLK+2 ;ZERO ERR=
2) MOVE T3,[-4,,3] ;MIN ARGS AND ARGBLK INDEX
2) IFN F40LIB,<
**************
1)2 ARGBLK: BLOCK ^D20 ;ARGBLK STORAGE
1) SAVAC: BLOCK 6 ;SAVE ARE FOR ACS 0-6
1)3 SUBTTL THE FOLLOWING ROUTINE ARE PASSED ON TO FOROTS
1) HELLO (RELEAS)
1) PUSHJ P,SAVE ;SAVE THE WORDKING AC'S
1) MOVSI T1,1000
1) HRLM T1,ARGBLK
1) MOVEI L,ARGBLK ;GET THE ARGBLOK POINTER
1) PUSHJ P,RELEA.## ;RELEASE THE DEVICE
1) JRST UNSAVE ;RESTORE THE AC'S CONTINUE
File 1) DSKB:FOROPN.MAC[10,6] created: 1149 09-SEPT-1974
File 2) TAPE:FOROPN.MAC created: 0000 19-MAY-1976
1) HELLO (IFILE)
1) PUSHJ P,SAVE ;SAVE THE AC'S
1) MOVE T1,[XWD 2000!TP%LIT_5,[ASCIZ/SEQIN/]]
1) JRST OFILE1 ;COMMON EXIT
1) HELLO (OFILE)
1) PUSHJ P,SAVE ;SAVE THE AC'S
1) MOVE T1,[XWD 2000!TP%LIT_5,[ASCIZ/SEQOUT/]]
1) OFILE1: MOVEM T1,ARGBLK+1
1) MOVE T1,1(L) ;GET THE FILE NAME POINTER
1) TLZ T1,777000 ;CLEAR THE OP CODE
1) TLO T1,6000 ;SET THE FILE NAME POINTER
1) MOVEM T1,ARGBLK+2 ;STORE IN THE ARGGBLK
1) MOVSI T1,3000 ;SET THE ARGBLK COUNT
1) IORM T1,ARGBLK ;STORE IN THE ARGBLK
1) JRST OPENGO ;OPEN THE FILE
1)4 SUBTTL ROUTINE THAT ARE NOT IMPLEMENTED IN FOROTS
1) HELLO (DEFINE)
1) PUSHJ P,SAVE ;SAVE THE ACS
1) MOVEI T3,3 ;SET THE MIN ARG COUNT
1) MOVE T1,[XWD 2000!TP%LIT_5,[ASCIZ /RANDOM/]]
1) MOVEM T1,ARGBLK+1 ;SAVE IN ARGBLK
1) AOBJP L,DEFGO ;EXIT IF END OF ARG LIST
1) MOVE T1,(L) ;GET THE RECORD SIZE
1) TLZ T1,777000 ;CLEAR THE OP CODE
1) TLO T1,14000 ;SET THE RECORD SIZE PARAMETER
1) MOVEM T1,ARGBLK+2 ;SAVE IN ARGBLK
1) AOBJP L,DEFGO ;EXIT IF END OF ARG LIST
1) MOVE T1,(L) ;GET THE ASSOCIATE VARIABLE ADDRESS
1) ADDI T3,1 ;COUNT IT
1) TLZ T1,777000 ;CLEAR THE OP CODE
1) TLO T1,22000 ;SET THE ASSOCIATE VARIABLE PARAMETER
1) MOVEM T1,ARGBLK+3 ;SAVE IN THE ARGBLK
1) AOBJP L,DEFGO ;EXIT IF END OF ARG LIST
1) MOVE T1,(L) ;GET THE FILE NAME ARGUMENT
1) ADDI T3,1 ;COUNT IT
1) TLZ T1,777000 ;CLEAR THE OP CODE
1) TLO T1,6000 ;SET THE FILE NAME POINTER
1) MOVEM T1,ARGBLK+4 ;SAVE IN THE ARGBLK
1) AOBJP L,DEFGO ;EXIT IF END OF ARG LIST
1) ADDI T3,1 ;COUNT IT
1) HRLZ T1,@(L) ;GET THE PROJECT NUMBER
1) AOBJP L,DEFGO ;EXIT IF END OF ARG LIST
1) HRR T1,@(L) ;GET THE PROGRAMMER NUMBER
1) MOVEM T1,ARGBLK+^D18 ;STORE IN A TEMP
1) SETZM ARGBLK+^D19 ;SET A TERM.
1) MOVE T1,[XWD 10000,ARGBLK+^D18] ;GET A DIRECTORY POINTE
1) MOVEM T1,ARGBLK+5 ;STORE IN THE ARGBLK
1) DEFGO: LSH T3,9 ;POSITION THE ARG COUNT
1) HRLM T3,ARGBLK ;STORE IN THE ARGBLK
1) OPENGO: MOVEI L,ARGBLK
1) PUSHJ P,OPEN.##
****
2)2 ARGCNT: BLOCK 1 ;COUNT OF ARGS, DO NOT SEPARATE FROM ARGBLK
2) ARGBLK: BLOCK ^D20 ;ARGBLK STORAGE
2) SAVAC: BLOCK 6 ;SAVE ARE FOR ACS 0-6
2)3 SUBTTL THE FOLLOWING ROUTINES ARE PASSED ON TO FOROTS
File 1) DSKB:FOROPN.MAC[10,6] created: 1149 09-SEPT-1974
File 2) TAPE:FOROPN.MAC created: 0000 19-MAY-1976
2) HELLO (RELEAS)
2) PUSH P,L ;SAVE LINK
2) HRRZ T0,@(L) ;GET THE FLU
2) MOVEM T0,ARGBLK
2) HRROS ARGCNT ;COUNT OF -1
2) MOVEI L,ARGBLK ;GET THE ARGBLOCK POINTER
2) PUSHJ P,RELEA.## ;RELEASE THE DEVICE
2) POP P,L ;RESTORE LINK
2) GOODBY
2) HELLO (IFILE)
2) PUSHJ P,SAVE ;SAVE THE AC'S
2) MOVE T1,[XWD 2000!TP%LIT_5,[ASCIZ/SEQIN/]]
2) MOVEM T1,ARGBLK(T3) ;STORE ACCESS TYPE
2) JRST DEFILE
2) HELLO (OFILE)
2) PUSHJ P,SAVE ;SAVE THE AC'S
2) MOVE T1,[XWD 2000!TP%LIT_5,[ASCIZ/SEQOUT/]]
2) MOVEM T1,ARGBLK(T3) ;STORE ACCESS TYPE
2) JRST DEFILE ;CHECK FOR PPN
2)4 HELLO (DEFINE)
2) PUSHJ P,SAVE ;SAVE THE ACS
2) MOVE T1,[XWD 2000!TP%LIT_5,[ASCIZ /RANDOM/]]
2) MOVEM T1,ARGBLK(T3) ;SAVE IN ARGBLK
2) AOBJP L,DEFGO ;EXIT IF END OF ARG LIST
2) SKIPN @(L) ;DO WE REALLY WANT SEQUENCIAL?
2) HRRI T1,[ASCIZ /SEQINOUT/] ;YES
2) MOVEM T1,ARGBLK(T3)
2) SUBI T3,-1 ;COUNT IT
2) MOVE T1,(L) ;GET THE RECORD SIZE
2) TLZ T1,777000 ;CLEAR THE OP CODE
2) TLO T1,14000 ;SET THE RECORD SIZE PARAMETER
2) MOVEM T1,ARGBLK(T3) ;SAVE IN ARGBLK
2) AOBJP L,DEFGO ;EXIT IF END OF ARG LIST
2) SUBI T3,-1 ;COUNT IT
2) MOVE T1,(L) ;GET THE ASSOCIATE VARIABLE ADDRESS
2) TLZ T1,777000 ;CLEAR THE OP CODE
2) TLO T1,22000 ;SET THE ASSOCIATE VARIABLE PARAMETER
2) MOVEM T1,ARGBLK(T3) ;SAVE IN THE ARGBLK
2) DEFILE: AOBJP L,DEFGO ;EXIT IF END OF ARG LIST
2) SUBI T3,-1 ;COUNT IT
2) MOVE T1,(L) ;GET THE FILE NAME ARGUMENT
2) TLZ T1,777000 ;CLEAR THE OP CODE
2) TLO T1,6000 ;SET THE FILE NAME POINTER
2) MOVEM T1,ARGBLK(T3) ;SAVE IN THE ARGBLK
2) AOBJP L,DEFGO ;EXIT IF END OF ARG LIST
2) HRLZ T1,@(L) ;GET THE PROJECT NUMBER
2) AOBJP L,DEFGO ;EXIT IF END OF ARG LIST
2) SUBI T3,-1 ;COUNT IT NOW
2) HRR T1,@(L) ;GET THE PROGRAMMER NUMBER
2) MOVEM T1,ARGBLK+^D18 ;STORE IN A TEMP
2) SETZM ARGBLK+^D19 ;SET A TERM.
2) MOVE T1,[XWD 10000,ARGBLK+^D18] ;GET A DIRECTORY POINTE
2) MOVEM T1,ARGBLK(T3) ;STORE IN THE ARGBLK
2) AOBJP L,DEFGO ;JUMP IF NO PROTECTION
2) SUBI T3,-1 ;COUNT IT
2) MOVE T1,(L) ;GET ADDRESS
File 1) DSKB:FOROPN.MAC[10,6] created: 1149 09-SEPT-1974
File 2) TAPE:FOROPN.MAC created: 0000 19-MAY-1976
2) TLZ T1,777000 ;CLEAR OPCODE
2) TLO T1,7000 ;PROTECTION ARG
2) MOVEM T1,ARGBLK(T3)
2) DEFGO: HLLZM T3,ARGCNT ;SET THE COUNT
2) MOVEI L,ARGBLK
2) PUSHJ P,OPEN.##
**************
File 1) DSKB:FOROTS.MAC[10,6] created: 0000 13-AUG-1975
File 2) DSKC:FOROTS.MAC[10,6] created: 1038 12-OCT-1977
1)1 TITLE FOROTS %4B.(460) - FORTRAN OBJECT TIME SYSTEM
1) SUBTTL D. TODD/DRT/HPW/MD/NEA/DPL 13-AUG-75
1) ;***COPYRIGHT 1972,1973,1974,1975 DIGITAL EQUIPMENT CORP., MAYNARD, MASS.***
1) MLON
****
2)1 TITLE FOROTS %5C.(531) - FORTRAN OBJECT TIME SYSTEM
2) SUBTTL D. TODD/DRT/HPW/MD/NEA/DPL/JNG/CLRH 5-APR-76
2) ;***COPYRIGHT 1972,1973,1974,1975,1976 DIGITAL EQUIPMENT CORP., MAYNARD, MASS.***
2) MLON
**************
1)1 VEDIT==460 ;MAJOR EDIT NUMBER
1) VMINOR==02 ;MINOR EDIT NUMBER
1) VWHO==0 ;WHO EDITED LAST
1) VEROTS==BYTE (3)VWHO(9)VERNO(6)VMINOR(18)VEDIT
****
2)1 VEDIT==532 ;MAJOR EDIT NUMBER
2) VMINOR==02 ;MINOR EDIT NUMBER
2) VWHO==4 ;WHO EDITED LAST
2) VEROTS==BYTE (3)VWHO(9)VERNO(6)VMINOR(18)VEDIT
**************
1)1 ;447 16733 FIX IN FOROTS AND FORERR EOF PROCESSING SO IO LIST
1) ; VARIABLES DO NOT GET CLEARED
****
2)1 ;446 16733 FIX IN FOROTS AND FORERR EOF PROCESSING SO IO LIST
2) ; VARIABLES DO NOT GET CLEARED
**************
1)1 ; DEFINE THE LOADING
****
2)1 ;465 17142 READ STRINGS INTO D.P. VARIABLES CORRECTLY.
2) ;466 17152 FIX SNG.X WHEN ARG IS NEGATIVE AND CLOSE TO A POWER OF 2
2) ;473 17572 CLEAR CH.SAV IN FIN%% SO DECODE WILL WORK.
2) ;474 17648 DON'T STOP PRINTING BAD RECORD ON LF IN FORERR.
2) ;476 17725 FIX G FORMAT WHEN FIELD IS TOO SMALL, BUT OK W.O. 4X.
2) ;477 17759 ALWAYS ALLOCATE AT LEAST 2 WORDS OF CORE IN FURFUN.
2) ;500 17818 RESET ELIST/SLIST FLAGS WHEN STARTING NEW LIST.
2) ;501 17900 CLEAR IO.EOL AT CPYSTR SO SOME DATA WILL ALWAYS MOVE.
2) ;502 17899 MAKE TTY BUFFER 132 CHARS FOR REASONABLE REREAD.
2) ;503 17871 CLEAR CH.SAV ON T FORMAT IN CASE FREE FORMAT PRECEDED.
2) ;504 18010 CORRECT SAVE IN FOROPN TO SAVE T5, AS IT TRIES TO
2) ;505 18011 STORE BLOCKS (NOT WORDS) IN .RBEST ON FILESIZE= IN OPEN.
2) ;513 15636 FIX INCORRECT RESULTS FOR DATAN(X), WHERE
2) ; (5*SQRT(5)-2)/11 < ABS(X) < (5*SQRT(5)+2)/11, I.I.
2) ; IF .8346 < ABS(X) < 1.198
2) ;531 18074 INSERT MISSING PORTALS IN FORTRP FOR CONCEALED MODE
2) ;**************** END OF REVISION HISTORY
2) ; DEFINE THE LOADING
**************
1)3 HRRI T2,ACC.SV+21(P4);BUILD A BLT POINTER TO CLEAR THE LOW
1) HRLI T2,ACC.SV+20(P4); SEGMENT FROM THE SAVE AREA
1) SETZM ACC.SV+20(P4) ;CLEAR THE FIRST WORD
1) BLT T2,@.JBREL ; TOP OF THE DYNAMIC AREA
1) MOVE T1,ACC.SV+0(P4) ;[320]
****
2)3 IFE FTWMU,< ;RRB/ 12-17-75
2) HRRI T2,ACC.SV+21(P4);BUILD A BLT POINTER TO CLEAR THE LOW
2) HRLI T2,ACC.SV+20(P4); SEGMENT FROM THE SAVE AREA
File 1) DSKB:FOROTS.MAC[10,6] created: 0000 13-AUG-1975
File 2) DSKC:FOROTS.MAC[10,6] created: 1038 12-OCT-1977
2) SETZM ACC.SV+20(P4) ;CLEAR THE FIRST WORD
2) BLT T2,@.JBREL ; TOP OF THE DYNAMIC AREA
2) >
2) MOVE T1,ACC.SV+0(P4) ;[320]
**************
1)3 MOVE G1,[XWD 2,23] ;GET THE BUF SIZE AND COUNT
1) MOVSI T1,(20B12) ;SET TTY ON PSEUDO CHANNEL 0
****
2)3 ;**;[502] CHANGE @ INIT%+62L JNG 23-NOV-75
2) MOVE G1,[XWD 2,36] ;[502] GET THE BUF SIZE AND COUNT
2) MOVSI T1,(20B12) ;SET TTY ON PSEUDO CHANNEL 0
**************
1)13 MOVEM T1,DD.NAM(P2) ;SAVE THE FILE NAME
****
2)13 CAME T1,DD.NAM(P2) ;CHECK THE FILE NAME
2) TLO P2,OP.SAC ;SOME ARGUMENT CHANGED
2) MOVEM T1,DD.NAM(P2) ;SAVE THE FILE NAME
**************
1)13 OPNEXT: HLLM T1,DD.EXT(P2) ;[416][453] SAVE THE EXTENSION
1) POPJ P, ;RETURN TO THE SWITCH SCANNER
1) OPNDLM: TLZE P2,40000 ;[416] ALREADY IN DIALOG MODE?
1) JRST OPNEXT ;[416] YES, GO BACK AND TRY AGAIN
1) SETZB T1,T1 ;[416] SET ILLEGAL DELIMITER
1) SETZB G3,G3 ;[416] SET SWITCH ERROR FOUND
1) TLO P2,OP.ERR ;[416] SET ERROR FOUND FLAG(ARGUMENT)
1) ERROR (OPN,11,7,.+1) ;[416] TELL ABOUT OPEN ARG ERROR
1) EXCH P2,P3 ;[416] SET UP TO TYPE THE DDB
1) PUSHJ P,TY%DDB ;[416] SHOW WHAT WE GOT SO FAR
1) EXCH P3,P2 ;[416] RESTORE THE I/O REGS
1) POPJ P, ;[416] RETURN TAKES US TO DIALOG MODE
1) OPNPPN:
1) TLNN P2,OP.OPN!OP.DIA ;DIALOG MODE
****
2)13 OPNEXT: HRR T1,DD.EXT(P2) ;GET RH OF WORD
2) CAME T1,DD.EXT(P2) ;ANY CHANGE?
2) TLO P2,OP.SAC ;SOME ARGUMENT CHANGED
2) HLLM T1,DD.EXT(P2) ;[416][453] SAVE THE EXTENSION
2) POPJ P, ;RETURN TO THE SWITCH SCANNER
2) OPNDLM: TLZE P2,40000 ;[416] ALREADY IN DIALOG MODE?
2) JRST OPNEXT ;[416] YES, GO BACK AND TRY AGAIN
2) SETZB T1,G3 ;[416] SET ILLEGAL DELIMITER
2) ;[416] SET SWITCH ERROR FOUND
2) TLO P2,OP.ERR ;[416] SET ERROR FOUND FLAG(ARGUMENT)
2) ERROR (OPN,11,7,.+1) ;[416] TELL ABOUT OPEN ARG ERROR
2) EXCH P2,P3 ;[416] SET UP TO TYPE THE DDB
2) PUSHJ P,TY%DDB ;[416] SHOW WHAT WE GOT SO FAR
2) EXCH P3,P2 ;[416] RESTORE THE I/O REGS
2) POPJ P, ;[416] RETURN TAKES US TO DIALOG MODE
2) OPNPPN: TLO P2,OP.SAC ;SOME ARGUMENT CHANGED
2) TLNN P2,OP.OPN!OP.DIA ;DIALOG MODE
**************
1)13 DPB T1,[POINT 9,DD.PRV(P2),8] ;[322] SAVE PROTECTION CODE
1) TRZ T2,1B'>' ;CHECK THE TERMINATOR
1) POPJ P, ;JUST RETURN
1) OPNEST:
1) MOVEM T1,DD.EST(P2) ;SAVE ESTIMATED FILE SIZE
File 1) DSKB:FOROTS.MAC[10,6] created: 0000 13-AUG-1975
File 2) DSKC:FOROTS.MAC[10,6] created: 1038 12-OCT-1977
1) POPJ P, ;RETURN
1) OPNREC:
1) MOVNM T1,DD.LOG(P2) ;SAVE THE LOGICAL RECORD LENGTH
1) ;SET NEGATIVE DON'T KNOW (CHAR/WORD)
1) POPJ P, ;RETURN
1) OPNVER:
1) MOVEM T1,DD.VER(P2) ;[343] STORE VERSION NUMBER
****
2)13 PUSH P,T2
2) LDB T2,[POINT 9,DD.PRV(P2),8] ;GET OLD PROTECTION
2) DPB T1,[POINT 9,DD.PRV(P2),8] ;[322] SAVE PROTECTION CODE
2) CAME T1,T2 ;DID IT CHANGE?
2) TLO P2,OP.SAC ;SOME ARGUMENT CHANGED
2) POP P,T2 ;RESTORE REGISTER
2) TRZ T2,1B'>' ;CHECK THE TERMINATOR
2) POPJ P, ;JUST RETURN
2) OPNEST:
2) ;**;[505] INSERT @ OPNEST+1L JNG 23-NOV-75
2) ADDI T1,177 ;[505] ROUND UP TO BLOCK BOUN
2) LSH T1,-7 ;[505] CONVERT TO BLOCKS FOR FILSER
2) CAME T1,DD.EXT(P2) ;CHANGE IN ESTIMATED SIZE?
2) TLO P2,OP.SAC ;SOME ARGUMENT CHANGED
2) MOVEM T1,DD.EST(P2) ;SAVE ESTIMATED FILE SIZE
2) POPJ P, ;RETURN
2) OPNREC:
2) MOVNM T1,DD.LOG(P2) ;SAVE THE LOGICAL RECORD LENGTH
2) ;SET NEGATIVE DON'T KNOW (CHAR/WORD)
2) POPJ P, ;RETURN
2) OPNVER:
2) CAME T1,DD.VER(P2) ;ANY CHANGE TO VERSION
2) TLO P2,OP.SAC ;SOME ARGUMENT CHANGED
2) MOVEM T1,DD.VER(P2) ;[343] STORE VERSION NUMBER
**************
1)18 JUMPGE T1,.+2 ;JUMP IF A +FLU
1) SKIPA T2,DEVTB.(T1) ;NO GET THE DEVICE NAME FOR A FILE NAME
1) JSP P1,FLUSIX ;CONVERT TO SIXBIT
****
2)18 ;TRH 9-25-74
2) IFN FTWMU,<
2) JUMPGE T1,.+3 ;JUMP IF A +FLU
2) ADD T1,DEV.TB(P4)
2) SKIPA T2,(T1) ;NO GET THE DEVICE NAME FOR A FILE NAME
2) >
2) IFE FTWMU,<
2) JUMPGE T1,.+2 ;JUMP IF A +FLU
2) SKIPA T2,DEVTB.(T1) ;NO GET THE DEVICE NAME FOR A FILE NAME
2) >
2) ;EOP
2) JSP P1,FLUSIX ;CONVERT TO SIXBIT
**************
1)19 GETDV1: CAIG T3,DEV.SZ ;IS THE FLU IN THE TABLE RANGE
1) SKIPN G1,DEVTB.(T3) ;GET THE DEVICE NAME
1) MOVSI G1,(SIXBIT /DSK/) ;NOT IN RANGE OR ZERO ENTRY
****
2)19 ;TRH 9-25-74
2) GETDV1:
File 1) DSKB:FOROTS.MAC[10,6] created: 0000 13-AUG-1975
File 2) DSKC:FOROTS.MAC[10,6] created: 1038 12-OCT-1977
2) IFN FTWMU,<
2) MOVE T2,DEV.TB(P4) ;GET DEVICE TABLE ADDRESS
2) ADDI T2,(T3) ;ADDRESS OF ENTRY WE WANT
2) CAMG T3,DEV.SZ(P4) ;IS THE FLU IN THE TABLE RANGE?
2) SKIPN G1,(T2) ;YES, GET DEVICE NAME
2) >
2) IFE FTWMU,<
2) CAIG T3,DEV.SZ ;IS THE FLU IN THE TABLE RANGE
2) SKIPN G1,DEVTB.(T3) ;GET THE DEVICE NAME
2) >
2) ;EOP
2) MOVSI G1,(SIXBIT /DSK/) ;NOT IN RANGE OR ZERO ENTRY
**************
1)21 IPEEK.: TLNE P3,IO.EOF ;[431] EOF ALREADY
1) JRST IBYTE2 ;[431] YES, NO SENSE CONTINUING
1) SKIPG DD.HRI+2(P3) ;PEEK AT NEXT CHARACTER ANY LEFT
1) PUSHJ P,IBLOK. ;NO, GET NEXT BLOCK
****
2)21 ; IPEEK.+0 S.M. #490.19 RRB/ 6-FEB-76
2) ; DELETED PATCH[431](2 LINES
2) IPEEK.: SKIPG DD.HRI+2(P3) ;PEEK AT NEXT CHARACTER ANY LEFT
2) PUSHJ P,IBLOK. ;NO, GET NEXT BLOCK
**************
1)21 AOS DD.BLK(P3) ;COUNT THIS BLOCK
1) IBLOK0: HLLZ T0,DD.UNT(P3) ;GET THE CHANNEL NUMBER
1) TLO T0,(IN) ;SETUP AN INPUT UUO
1) TLZE P3,IO.RNG ;CHANGING RINGS
1) HRR T0,DD.HRI(P3) ;GET THE NEW RING ADDRESS
1) XCT T0 ;EXECUTE THE UUO
1) POPJ P, ;GET THE NEXT CHARACTER FROM THE BLOCK
1) ERROR (DEV,0,5,IBLOK1);DO THE ERROR PROCESSING
1) IBLOK1: TLO P3,IO.EOL!IO.EOF;SET END OF LINE
****
2)21 ; IBLOK.+4 S.M. #490.20 RRB/ 16-JUL-76
2) TLNN P3,IO.EOF ;EOF ALREADY?
2) JRST IBLOK7 ;NO
2) TLNE G3,DV.DTA!DV.DSK!DV.TTA ;DID FORERR CALL CLOSE
2) JRST IBLOKZ ;NO
2) TLZ P3,IO.EOF ;CLEAR EOF FLAG
2) IBLOK7:
2) ;EOP
2) AOS DD.BLK(P3) ;COUNT THIS BLOCK
2) IBLOK0: HLLZ T0,DD.UNT(P3) ;GET THE CHANNEL NUMBER
2) TLO T0,(IN) ;SETUP AN INPUT UUO
2) TLZE P3,IO.RNG ;CHANGING RINGS
2) HRR T0,DD.HRI(P3) ;GET THE NEW RING ADDRESS
2) XCT T0 ;EXECUTE THE UUO
2) POPJ P, ;GET THE NEXT CHARACTER FROM THE BLOCK
2) ; IBLOK0+6 S.M. #490.19 RRB/ 6-FEB-76
2) IBLOKZ: ERROR (DEV,0,5,IBLOK1);DO THE ERROR PROCESSING
2) ;EOP
2) IBLOK1: TLO P3,IO.EOL!IO.EOF;SET END OF LINE
**************
1)21 MOVSI T2,-<<23-3>*5-1>;[177] CLEAR THE BYTE COUNT
1) INCHWL T0 ;WAIT FOR A CHARACTER
1) JRST IBLOK4 ;GO A CHARACTER
File 1) DSKB:FOROTS.MAC[10,6] created: 0000 13-AUG-1975
File 2) DSKC:FOROTS.MAC[10,6] created: 1038 12-OCT-1977
1) IBLOK3: INCHSL T0 ;GET ANOTHER CHARACTER
1) JRST IBLOK5 ;NONE LEFT
1) IBLOK4: CAIN T0,32 ;^Z FOR EOF
****
2)21 ;**;[502] CHANGE @ IBLOCK6+10L JNG 23-NOV-75
2) MOVSI T2,-<<36-3>*5-1>;[502] CLEAR THE BYTE COUNT
2) IBLOK3: INCHWL T0 ;[502] WAIT FOR A CHARACTER
2) IBLOK4: CAIN T0,32 ;^Z FOR EOF
**************
1)21 CAIG T0,14 ;CHECK FOR A TERMINATOR
****
2)21 CAIN T0,33 ;CHECK FOR ALTMODE TERMINATOR(SINCE 512
2) JRST IBLOK5 ;BROKE DIALOG WHICH EXPECTS ALTMODE)
2) CAIG T0,14 ;CHECK FOR A TERMINATOR
**************
1)22 TSOA T0,DD.LOG(P3) ;GET THE LOGCIAL RECORD SIZE
****
2)22 ; NXTLNO+24. S.M. #485.21 NDG/ 6-9-76
2) TLZ P3,IO.EOL ;WE REALLY ARE AT THE BEGINNING OF A NEW
2) ;RECORD (NOT END OF CURRENT)
2) TSOA T0,DD.LOG(P3) ;GET THE LOGCIAL RECORD SIZE
**************
1)23 MOVEI T0,<23-3>*5-1 ;GET BUFFER SIZE IN CHARACTERS
1) MOVEM T0,DD.HRO+2(P3) ;SAVE IN RING HEADER
****
2)23 ;**;[502] CHANGE @ OBLOK2+5L JNG 23-NOV-75
2) MOVEI T0,<36-3>*5-1 ;[502] GET BUFFER SIZE IN CHARACTERS
2) MOVEM T0,DD.HRO+2(P3) ;SAVE IN RING HEADER
**************
1)24 SUBI T0,"*" ;RELOCATE CONTROL CHARACTER FOR INDEXING
1) JUMPL T0,OUTCC2 ;CHARACTER IS NOT IN RANGE
1) CAILE T0,"3"-"*" ;CHECK THE HIGH END
1) JRST OUTCC2 ;NOT IN RANGE USE THE PREVIOUS CCC
1) ADDI T0,CCC.TB ;POINT TO THE TABLE
1) MOVE T0,@T0 ;GET THE CONTROL CHARACTERS
1) ROT T0,5 ;GET THE LOW ORDER 4 BITS
1) TLNN P3,IO.TTA ;IS THIS THE USER'S TTY
1) JRST OUTCC0 ;NO,CONTINUE NORMAL
****
2)24 ; OUTCCC+4 S.M. 485.17 ;RRB/ 12-23-75
2) CAIE T0," " ;SPACE?
2) JRST OUTCC8 ;NO
2) MOVEI T0,12 ;YES, SINGLE LINEFEED
2) JRST OUTCC9
2) OUTCC8: SUBI T0,"*" ;RELOCATE CONTROL CHARACTER FOR INDEXING
2) JUMPL T0,OUTCC2 ;CHARACTER IS NOT IN RANGE
2) CAILE T0,"3"-"*" ;CHECK THE HIGH END
2) JRST OUTCC2 ;NOT IN RANGE USE THE PREVIOUS CCC
2) ADDI T0,CCC.TB ;POINT TO THE TABLE
2) MOVE T0,@T0 ;GET THE CONTROL CHARACTERS
2) ROT T0,5 ;GET THE LOW ORDER 4 BITS
2) OUTCC9: TLNN P3,IO.TTA ;IS THIS THE USER'S TTY
2) JRST OUTCC0 ;NO,CONTINUE NORMAL
**************
1)25 JSP P1,IBYTE. ;GET AN INPUT CHARACTER
1) TLZE P3,IO.EOL!IO.EOF;END OF LINE
File 1) DSKB:FOROTS.MAC[10,6] created: 0000 13-AUG-1975
File 2) DSKC:FOROTS.MAC[10,6] created: 1038 12-OCT-1977
1) POPJ P, ;YES, STOP THE COPY
1) TLC P3,IO.STR ;SET STRING FOR OUTPUT
1) JSP P1,OBYTE. ;OUTPUT
1) TLC P3,IO.STR ;COMPLEMENT
1) JRST CPYSTR ;CONTINUE
1)26 SUBTTL FIND RANDOM ACCESS POSITIONING ROUTINES
****
2)25 ;**;[501] INSERT @ CPYSTR JNG 23-NOV-75
2) TLZ P3,IO.EOL ;[501] GET DATA FROM IBYTE.
2) CPYST1: JSP P1,IBYTE. ;[501] GET AN INPUT CHARACTER
2) TLZE P3,IO.EOL!IO.EOF;END OF LINE
2) POPJ P, ;YES, STOP THE COPY
2) TLC P3,IO.STR ;SET STRING FOR OUTPUT
2) JSP P1,OBYTE. ;OUTPUT
2) TLC P3,IO.STR ;COMPLEMENT
2) ;**;[501] CHANGE @ CPYSTR+7L JNG 23-NOV-75
2) JRST CPYST1 ;[501] CONTINUE
2)26 SUBTTL FIND RANDOM ACCESS POSITIONING ROUTINES
**************
1)26 TLNE P3,IO.EOF ;[447] DID RBLOK. CAUSE EOF
1) JRST [POP P, ;[447] YES-SET UP RETURN TO USER
1) JRST FIN%%] ;[447] CLEAN UP FILE JUNK
1) SETZB T2,T2 ;[424] CLEAR AC FOR TEST
****
2)26 SETZB T2,T2 ;[424] CLEAR AC FOR TEST
**************
1)26 CAMGE T5,1(T1) ;[427][447] REQUESTED OFFSET WITHIN BUF SIZE
1) ERROR (DAT,2,7,) ;[427] YES-- RECORD NEVER WRITTEN
1) HLLZ T0,DD.UNT(P3) ;[447] GET CHANNEL NUMBER
1) IOR [SETSTS 0,20000] ;[447] SET UP EOF FOR FORER%
1) XCT T0 ;[447] DO IT
1) TLO P3,IO.EOL!IO.EOF ;[447] MAY NOT BE NECESSARY
1) POP P, ;[447] SET UP TO RETURN TO USER
1) ERROR (DEV,0,5,FIN%%) ;[447] GIVE ERROR MSG IF NECESSARY
1) RBLOK.: ;GET THE NEXT RANDOM BLOCK IN CORE
****
2)26 CAML T5,1(T1) ;[427] REQUESTED OFFSET WITHIN BUF SIZE
2) POPJ P, ;[427] NO--EOF GETS HANDLED ELSEWHERE
2) ERROR (DAT,2,7,) ;[427] YES-- RECORD NEVER WRITTEN
2) RBLOK.: ;GET THE NEXT RANDOM BLOCK IN CORE
**************
1)37 CAIGE G2,IOL.MX ;CHECK FOR AN IMPLIED FIN CALL
****
2)37 ;**;[500] INSERT @ IOLST1+5L JNG 22-NOV-75
2) TLZ P2,FT.SLT!FT.ELT!FT.EXT ;[500] NEW LIST...NEW FLAGS
2) CAIGE G2,IOL.MX ;CHECK FOR AN IMPLIED FIN CALL
**************
1)39 JRST FINXI1 ;EXIT ON ENCODE/DECODE
1) FINF1: PUSHJ P,ENDLN. ;FINISH UP THIS LINE
****
2)39 ; FIN%%+12 S.M. #485.15 RRB/ 12-17-75
2) JRST [SETZM CH.SAV(P4) ;CLEAR SAVED CHARACTER
2) JRST FINXI1] ;EXIT ON ENCODE/DECODE
2) FINF1: PUSHJ P,ENDLN. ;FINISH UP THIS LINE
**************
1)39 SETZM ALT.PC(P4) ;[225] CLEAR ALT RETURN PC
File 1) DSKB:FOROTS.MAC[10,6] created: 0000 13-AUG-1975
File 2) DSKC:FOROTS.MAC[10,6] created: 1038 12-OCT-1977
1) POPJ P, ;RETURN TO THE USER
****
2)39 SKIPE T1,ALT.PC(P4) ;[225] END OR ERR RETURN
2) MOVEM T1,USR.PC(P4) ;[225] YES - SET ALTERNATE RETURN
2) SETZM ALT.PC(P4) ;[225] CLEAR ALT RETURN PC
2) ; FINXI1+2 SPR#17718[473] RRB/ 12-17-75
2) SETZM CH.SAV(P4) ;[473] CLEAR SAVED CHR AT END OF RECORD
2) POPJ P, ;RETURN TO THE USER
**************
1)45 JUMPE T1,FSXEE1 ;PAREN STACK NOT DEFINED
1) HLRZ T2,-1(T1) ;GET THE SIZE OF THE PAREN STACK
1) LSH G3,1 ;TWO WORDS/PAREN DEPTH
1) CAIG G3,-4(T2) ;MUST THE STACK BE EXPANDED
****
2)45 ; FSXEE+3[464] S.M. #485.17 RRB/ 12-29-75
2) LSH G3,1 ;[464] TWO WORDS/PAREN DEPTH
2) JUMPE T1,FSXEE1 ;PAREN STACK NOT DEFINED
2) HLRZ T2,-1(T1) ;GET THE SIZE OF THE PAREN STACK
2) CAIG G3,-4(T2) ;MUST THE STACK BE EXPANDED
**************
1)48 MOVEI G3,DD.HRI(P3) ;INPUT HEADER
****
2)48 ;**;[503] INSERT @ FSXT+1L JNG 23-NOV-75
2) SETZM CH.SAV(P4) ;[503] ZAP SAVED CHARACTER
2) MOVEI G3,DD.HRI(P3) ;INPUT HEADER
**************
1)54 TLNN G3,DV.DSK!DV.DTA;[204] DISK OR DECTAPE?
****
2)54 TLNE P2,OP.SAC ;DID USER RESET ANY ARGS?
2) TLNN G3,DV.DSK!DV.DTA;[204] DISK OR DECTAPE?
**************
1)55 MOVS T1,DD.PPN(P3) ;PPN
1) TRNN T1,-1 ;IS THERE AN SFD
1) JUMPN T1,.+3 ;OR NULL
1) MOVSM T1,Q.FDIR(P2) ;STORE THE PPN
1) JRST .+3 ;SKIP THE SFD STUFF
1) HRRI T1,Q.FDIR(P2) ;YES, SET UP A BLT POINTER
1) BLT T1,Q.FDIR+6(P2) ;MOVE THE DIRECTORY PATH
1) MOVE T1,DD.NAM(P3) ;GET THE FILE NAME
****
2)55 ; REPLACE 7 LINES @ CLOS.Q+43(8) CCOA 6-FEB-75
2) SKIPE T1,DD.PPN(P3) ;IS THERE A PPN OR PATH SPECIFIED?
2) TLNE T1,-1 ;YES--IS IT A PATH?
2) JRST [MOVEM T1,Q.FDIR(P2) ;NO--JUST PUT AWAY PPN
2) JRST CLOSQ1] ;AND SKIP AROUND
2) HRLI T1,2(T1) ;YES--GET ADR OF PPN IN PATH
2) HRRI T1,Q.FDIR(P2) ;GET PATH ADR IN QUEUE BLOCK
2) BLT T1,Q.FDIR+5(P2) ;AND STORE PPN AND SFD PATH
2) CLOSQ1:
2) ; END OF REPLACEMENT @ CLOS.Q+43(8)
2) MOVE T1,DD.NAM(P3) ;GET THE FILE NAME
**************
1)55 PUSH P,.JBHRL## ;[346] SAVE HIGH SEGMENT LENGTH
1) PUSHJ P,FORQU%## ;CALL QMANGR VIA FORQUE
1) POP P,.JBHRL ;[346] RESTORE
1) PUSHJ P,PMEM%% ;[240] RETURN THE ARG BLOCK TO THE HEAP
File 1) DSKB:FOROTS.MAC[10,6] created: 0000 13-AUG-1975
File 2) DSKC:FOROTS.MAC[10,6] created: 1038 12-OCT-1977
1) PJRST UPDCHN ;[240] UPDATE CHANNEL TABLE
1) QUE.TB: ;TABLE OF QUEUE CODES
****
2)55 ; CLOS.Q+ S.M. #485.25 NDG/ 10-12-77
2) TLO T1,40000 ;TELL QMANGR NOT TO DO ANY CORE SHRINKING
2) PUSH P,.JBHRL## ;[346] SAVE HIGH SEGMENT LENGTH
2) PUSHJ P,FORQU%## ;CALL QMANGR VIA FORQUE
2) POP P,.JBHRL ;[346] RESTORE
2) PUSHJ P,PMEM%% ;[240] RETURN THE ARG BLOCK TO THE HEAP
2) PUSHJ P,UPDCHN ;[240] UPDATE CHANNEL TABLE
2) HRRZ T2,.JBFF ;GET WHERE WE THINK CORE ENDS
2) CAML T2,.JBREL ;QMANGR CHANGE?
2) POPJ P, ;NO. OK
2) IFN <KA10-CPU>,< ;IF NOT A KA10
2) MOVE T3,[XWD 4,T4] ;CHECK FOR EXISTENCE OF PAGE. UUO
2) MOVEI T4,1 ;BY GETTING A WORD OF WORKING SET TABLE
2) PAGE. T3, ;DO CALL
2) JRST QUECB3 ;DOES NOT EXIST. NOT PAGING SYSTEM
2) MOVEI P1,776(T2) ;GET FIRST UNWANTED PAGE
2) LSH P1,-^D9
2) HRRZ T3,.JBREL## ;GET LAST UNWANTED PAGE
2) LSH T3,-^D9
2) TLO P1,(1B0) ;SET DELETING PAGES BIT IN P1
2) RETAGN: MOVSI T5,-17 ;MAX PAGES TO DO AT ONE TIME
2) HRRI T5,PAG.TB(P4) ;WHERE TO STORE WORDS
2) SETZM PAG.TB(P4) ;START WITH ZERO PAGES
2) RETMOR: CAIGE T3,(P1) ;FINISHED?
2) JRST RETDON ;YES. DO FINAL PAGE. UUO
2) MOVEM P1,1(T5) ;NO. STORE THIS PAGE. (SHOULD BE AT LEAST ONE)
2) AOS PAG.TB(P4) ;AND COUNT IT
2) ADDI P1,1 ;STEP TO NEXT PAGE
2) AOBJN T5,RETMOR ;LOOP FOR MORE PAGES
2) RETDON: MOVEI T5,PAG.TB(P4) ;SET UP UUO ARG
2) HRLI T5,1 ;DELETE PAGES FUNCTION
2) PAGE. T5, ;DO IT
2) JFCL ;IGNORE IT. MAY CAUSE PROBS?
2) CAIL T3,(P1) ;WAS THAT THE END?
2) JRST RETAGN ;NO. DO MORE
2) POPJ P, ;YES. DONE
2) > ;END IFN <KA10-CPU>
2) QUECB3: MOVEI P1,-1(T2) ;WHERE TO SHRINK BY CORE UUO
2) CORE P1, ;DO IT
2) JFCL ;CAN'T FAIL
2) POPJ P, ;RETURN
2) QUE.TB: ;TABLE OF QUEUE CODES
**************
1)59 ERROR (SYS,1,0,0) ;EXIT VIA FORERR FOR MESSAGE
1)60 SUBTTL GMEM%% PMEM%% SMEM%% MEMORY MANAGEMENT ROUTINES
****
2)59 ; EXIT.2+3 S.M. #485.6 NDG/ 1-2-75
2) IFN F40LIB,<
2) TLNN L,-20 ;F40 CALL?
2) JRST EXITF4 ;NO
2) HLRZ T1,(L) ;YES. GET NEXT WORD.
2) TRZ T1,777 ;JUST OP CODE
2) CAIE T1,(JUMP) ;IS IT AN ARG?
File 1) DSKB:FOROTS.MAC[10,6] created: 0000 13-AUG-1975
File 2) DSKC:FOROTS.MAC[10,6] created: 1038 12-OCT-1977
2) JRST EXIT%M ;NO
2) JRST EXIT%0 ;YES
2) EXITF4:>
2) HLRE T1,-1(L) ;F10 CALL. SEE IF ARGUMENTS
2) ; EXITF4+1 S.M. #485.11 NDG/ 4-4-75
2) JUMPGE T1,EXIT%M ;IF NO ARGS, DO NORMAL EXIT
2) EXIT%0: MOVE T1,@0(L) ;GET ARG
2) CAIN T1,0 ; CALL EXIT(0)
2) EXIT ;YES.
2) CAIE T1,1 ;CALL EXIT(1)
2) JRST EXIT%M ;NO. GIVE MESSAGE AND EXIT
2) EXIT 1, ;GIVE EXIT WITH JUST DOT
2) JRST .-1 ;REPEAT
2) EXIT%M: ERROR (SYS,1,0,0) ;EXIT VIA FORERR FOR MESSAGE
2)60 SUBTTL GMEM%% PMEM%% SMEM%% MEMORY MANAGEMENT ROUTINES
**************
1)62 SUBTTL DEVTB. DEFAULT DEVICE TABLE FOR FORTRAN IV
****
2)62 IFE FTWMU,<
2) SUBTTL DEVTB. DEFAULT DEVICE TABLE FOR FORTRAN IV
**************
1)62 SIXBIT .DEV5. ;29;
1) DEV.SZ==.-DEVTB.-1
1) END
****
2)62 SIXBIT .CDP. ;29;
2) SIXBIT .TTY. ;30;
2) DEV.SZ==.-DEVTB.-1
2) >
2) END
**************
File 1) DSKB:FORPLT.MAC[10,6] created: 1016 16-SEPT-1974
File 2) TAPE:FORPLT.MAC created: 0000 19-MAY-1976
1)2 740,,[201224020100]
1) 200,,THETA
****
2)2 740,,[ASCII /(X10 )/] ;[BYU-106]
2) 200,,THETA
**************
File 1) DSKB:FORPRM.KI[10,6] created: 0942 10-APR-1975
File 2) TAPE:FORPRM.MAC created: 0000 20-APR-1977
1)2 SUBTTL REVISION HISTORY
****
2)1 IFNDEF FTWMU,<FTWMU==-1> ;0 IF DON'T WANT DEVTB. IN LOWSEG
2) ;STANDARD FOROTS HAS IT IN HIGHSEG.
2) ;NOTE THAT THE ROUTINES IN FORWMU WHICH NORMALLY ACCEPT UNIT NUMBERS
2) ; WILL ONLY ACCEPT DEVICE NAMES IF THIS IS ZERO, AND THAT
2) ; DEVCHG WILL NOT WORK AT ALL.
2)2 SUBTTL REVISION HISTORY
**************
1)12 ;FLAGS DEFINE IN THE LEFT HALF OF P2 DURING FORMAT PROCESSING
****
2)12 ;40000 IS USED AS TEMPORAY DIALOGUE FLAG BY OPNARG
2) OP.SAC==20000 ;OPNARG SET SOME RENAME ARGUMENT TO NEW VALUE
2) ;FLAGS DEFINE IN THE LEFT HALF OF P2 DURING FORMAT PROCESSING
**************
1)13 STATIC(FLU.TB,FLU.SZ) ;The FORTRAN logical unit number table.
1) LOW.SZ==ZZ. ;SIZE OF THE STATIC LOW SEGMENT
****
2)13 IFN FTWMU,<
2) ; S.M. #485.5 RRB/ 12-16-75
2) STATIC(DEV.TB,1) ;ADDRESS OF DEVTAB
2) STATIC(DEV.SZ,1) ;POSITIVE SIZE OF DEVTAB
2) >
2) STATIC(FLU.TB,FLU.SZ) ;The FORTRAN logical unit number table.
2) STATIC(PAG.TB,20) ;WORDS FOR FORFUN TO DO PAGE. UUOS
2) LOW.SZ==ZZ. ;SIZE OF THE STATIC LOW SEGMENT
**************
File 1) DSKB:FORTRP.MAC[10,6] created: 1147 09-SEPT-1974
File 2) TAPE:FORTRP.MAC created: 0000 20-MAY-1976
1)1 TITLE FORTRP %4.(152) OVER/UNDERFLOW TRAP ROUTINE
1) SUBTTL D. TODD /DRT/ 08-MAR-1972 T. EGGERS/DMN/TWE/DRT
1) ;***COPYRIGHT 1972,1973,1974 DIGITAL EQUIPMENT CORP., MAYNARD, MASS.***
****
2)1 TITLE FORTRP %4C.(531) OVER/UNDERFLOW TRAP ROUTINE
2) SUBTTL D. TODD/T. EGGERS/DRT/TWE/DMN/JNG/CLRH 5-APR-76
2) ;***COPYRIGHT 1972,1973,1974 DIGITAL EQUIPMENT CORP., MAYNARD, MASS.***
**************
1)2 OVTRAP: PUSH P,T ;SAVE AC T AS "TSAVE"
1) N=1
****
2)2 ;**;[531] CHANGE @ OVTRAP CLRH 5-APR-76
2) OVTRAP: ;[531]
2) IFN CPU-KA10,< ;[531]
2) JRST 1,.+1 ;[531] PORTAL FOR EXECUTE ONLY
2) >;END IFN CPU-KA10 ;[531]
2) PUSH P,T ;SAVE AC T AS "TSAVE"
2) N=1
**************
1)4 MOVSI T,(Z 17,) ;GET ONES IN AC FIELD
1) AND T,@.JBTPC ;EXTRACT AC FIELD FROM FAULTING D.P. INST
1) IOR T,[DMOVE 0,[EXP <377777,,777777>,<377777,,777777>]]
1) SKIPGE ACDATA-N(P) ;WAS OVERFLOW RESULT POSITIVE?
****
2)4 ;**; [531] CHANGE @ ACDOUN + 1L CLRH 5-APR-76
2) SETO T, ;[531] GET -1 TO MAKE INFINITIES
2) MOVMM T,TSAVE-N+1(P) ;[531] PUT TWO WORDS ON THE STACK
2) MOVMM T,TSAVE-N+2(P) ;[531] FOR THE DMOVE TO USE
2) ;[531] THIS ASSUMES THAT ACDATA IS AT
2) ;[531] LEAST 3 SINCE WE ARE MAKING PLUS
2) ;[531] STACK ENTRIES. THESE SHOULD BE
2) ;[531] SETOM'S AND MOVM'S IF ACFLD OR
2) ;[531] INST ARE NEEDED LATER
2) MOVSI T,(Z 17,) ;GET ONES IN AC FIELD
2) AND T,@.JBTPC ;EXTRACT AC FIELD FROM FAULTING D.P. INST
2) IOR T,[DMOVE 0,TSAVE-N+1(P)] ;[531] SET UP DMOVE
2) SKIPGE ACDATA-N(P) ;WAS OVERFLOW RESULT POSITIVE?
**************
1)4 IFE CPU-KA10,<LDB T,[POINT 4,@.JBTPC,12] ;GET AC FIELD
1) DPB T,[POINT 4,T,12] ;COPY INTO AC FIELD
1) ADDI T,1 ;CHANGE AC TO AC+1
1) TRZ T,20 ;MASK TO 4 BITS
1) TLO T,(SETZB) > ;CHANGE TO "SETZB AC,AC+1"
1) IFE CPU-KI10,<MOVSI T,(Z 17,) ;GET ONES IN AC FIELD
1) AND T,@.JBTPC ;EXTRACT AC FIELD FROM FAULTING INST
1) IOR T,[DMOVE 0,[EXP 0,0]] > ;SET UP A DMOVE TO CLEAR 2 AC'S
1) JRST UAC2
1) UFSC: MOVE T,.JBTPC ;GET THE TRAP ADDRESS
****
2)4 ;**; [531] CHANGE @ UACLNG + 1L CLRH 5-APR-76
2) LDB T,[POINT 4,@.JBTPC,12] ;[531] GET AC FIELD
2) DPB T,[POINT 4,T,12] ;COPY INTO AC FIELD
2) ADDI T,1 ;CHANGE AC TO AC+1
2) TRZ T,20 ;MASK TO 4 BITS
2) TLO T,(SETZB) ;[531] CHANGE TO "SETZB AC,AC+1"
2) ;**; [531] DELETE CPU-KI10 COND @ UACLNG CLRH 5-APR-76
File 1) DSKB:FORTRP.MAC[10,6] created: 1147 09-SEPT-1974
File 2) TAPE:FORTRP.MAC created: 0000 20-MAY-1976
2) JRST UAC2
2) UFSC: MOVE T,.JBTPC ;GET THE TRAP ADDRESS
**************
1)4 TJFCL: N=1
****
2)4 ;**; [531] INSERT @ UAC2 + 2L CLRH 5-APR-76
2) IFN CPU-KA10,< ;[531]
2) JRST 1,.+1 ;[531] KI AND KL PORTAL
2) >;END IFN CPU-KA10 ;[531]
2) TJFCL: N=1
**************