. EDIT$ EDITING PACKAGE . INTERNAL DEFINITIONS DEF PX EQU X1 PACKET POINTER CX EQU X2 CHARACTER POINTER WX EQU X3 WORD POINTER PKT EQUF 0,PX PACKET LOCATION CI EQUF 0,CX CHARACTER INDEX WI EQUF 0,WX WORD INDEX EMSGC EQUF PKT,,S2 EMSG$ SIGNAL CHARACTER IL EQUF PKT,,S3 IMAGE LENGTH ILOC EQUF PKT,,H2 IMAGE LOCATION CIX EQUF PKT+1,,S1 SAVE AREA FOR CHARACTER INDEX WIX EQUF PKT+1,,S2 SAVE AREA FOR WORD INDEX CIM EQUF PKT+1,,S3 SAVE AREA FOR EMSG$ CHARACTER INDEX WIM EQUF PKT+1,,H2 SAVE AREA FOR EMSG$ WORD INDEX FPS EQUF PKT+2,,S1 SCALE FOR FLOATING POINT EDIT FPR EQUF PKT+2,,S2 FLOATING POINT ROUNDING OPTION RETURN EQUF PKT+2 RETURN POINT FOR VECTORS RET EQUF PKT+3,,H1 SAVE AREA FOR RETURN POINT SAVE1 EQUF PKT+3,,H2 SAVE AREA FOR PX SAVE2 EQUF PKT+4 SAVE AREA FOR CX SAVE3 EQUF PKT+5 SAVE AREA FOR WX DPC EQUF PKT+6,,S1 CHARACTER FOR DOUBLE PRECISION SCALE SPC EQUF PKT+6,,S2 CHARACTER FOR SINGLE PRECISION SCALE NDP EQUF PKT+6,,S3 DIGITS BEFORE DECIMAL POINT NDF EQUF PKT+6,,S4 DIGITS FOLLOWING DECIMAL POINT SIGN EQUF PKT+6,,S5 SIGN INDICATOR ZERO EQUF PKT+6,,S6 FLOATING POINT ZERO INDICATOR FCOL EQUF PKT+7,,H1 FINAL COLUMN OR ZERO SCALE EQUF PKT+7,,XH2 POWER OF TEN VALUE EQUF PKT+8 SAVE AREA FOR DIGITS E$DEF* PROC *0 $(1) LIT P PROC *1 STORE** NAME DO P(1)>0 , LA,P(0,1) A2,+(E$AD 1,1) EX EDIT$T,*CX END END / . PROCEDURES FOR EDIT$ P PROC *1 E$DIT* NAME EDIT$ INITIAL EDIT$ ENTRY E$DITR* NAME EDITR$ EDIT$ RE-ENTRY E$DITZ* NAME EDITZ$ EDIT$ RE-ENTRY AND ZERO COLUMN POINTER E$CHAR* NAME ECHAR$ EDIT A CHARACTER E$COL* NAME ECOL$ POSITION TO A COLUMN E$SKIP* NAME ESKIP$ SKIP AN AREA E$MSGC* NAME *1 STORE NEW EMSG$ CHARACTER DO P(1)>1 , LA,15*(P(1)<3)+P(1,3) 12,+(E$AD 1,1) DO P(1)=1 , LA,15 12,P(1,1) DO P(0,*0)=0 , LMJ 11,P(0,0) DO P(0,*0)=1 , SA,12 12,0,1 END P PROC *1 E$OCTV* NAME EOCTV$ VARIABLE LENGTH OCTAL E$DECV* NAME EDECV$ VARIABLE LENGTH DECIMAL E$FD1* NAME EFD1$ ONE WORD FIELDATA E$FD3* NAME EFD3$ FIELDATA E$FI* NAME EFI$ I$ FORM E$FH* NAME EFH$ 18,18 FORM E$FD5* NAME EFD5$ FIELDATA E$HEXV* NAME EHEXV$ VARIABLE LENGTH HEXADECIMAL DO P(1)>0 , LA,P(1,3) 12,+(E$AD 1,1) LMJ 11,P(0,0) END P PROC 0,1 E$DITX* NAME EDITX$ EXIT FROM EDIT MODE E$DTX* NAME EDITX$ E$COLN* NAME ECOLN$ COMPUTE COLUMN NUMBER E$MSGR* NAME EMSGR$ RE-ENTER MESSAGE EDITOR E$CLEAR* NAME ECLEAR$ BLANK IMAGE AND RESET COLUMN POINTER LMJ 11,P(0,0) END P PROC *1 E$FD2* NAME EFD2$ TWO WORD FIELDATA E$FD4* NAME EFD4$ FIELDATA E$FD6* NAME EFD6$ FIELDATA DO P(1)>0 , DL 12,+(E$AD 1,1) LMJ 11,P(0,0) END P PROC *1 E$MSG* NAME EMSG$ E$MSG1* NAME EMSG1$ DO P(1)>0 , LA,14*(P(1)<3)+P(1,3) 12,+(E$AD 1,1) DO P(0)>1 , LXI,14*(P(0)<4)+P(0,3) 12,+(E$AD 0,1) LMJ 11,P(0,0) END P PROC *1 E$COPY* NAME ECOPY$ STRING COPY ROUTINE E$PACK* NAME EPACK$ STRING COPY WITH PACKING DO P(1)>1 , LA,14*(P(1)<4)+P(1,4) 12,+(E$AD 1,2) DO P(0)>1 , LXI,14*(P(0)<4)+P(0,3) 12,+(E$AD 0,1) DO P(1)>0 , LA,14 13,P(1,1) LMJ 11,P(0,0) END P PROC *1 E$OCTF* NAME EOCTF$ FIXED LENGTH OCTAL EDITOR E$DECF* NAME EDECF$ FIXED LENGTH DECIMAL EDITOR E$DECZ* NAME EDECZ$ FIXED LENGTH LEADING ZERO DECIMAL E$DCFZ* NAME EDCFZ$ FIXED LENGTH LEADING ZERO DECIMAL E$HEXF* NAME EHEXF$ FIXED LENGTH HEXADECIMAL EDITOR DO P(1)>1 , LA,P(1,4) 12,+(E$AD 1,2) DO P(1)>0 , LA,14 13,P(1,1) LMJ 11,P(0,0) END P PROC *1 E$FORM* NAME 1 GENERAL FORM EDIT DO P(1)>1 , LA,P(1,4) 12,+(E$AD 1,2) DO P(1)>0 , LA 13,P(1,1) LMJ 11,EFORM$ END P PROC *1 E$FLS1* NAME EFLS1$ SINGLE PRECISION SCIENTIFIC E$FLG1* NAME EFLG1$ SINGLE PRECISION GENERALIZED FORMAT E$FLF1* NAME EFLF1$ SINGLE PRECISION FIXED FORMAT E$FLN1* NAME EFLN1$ SINGLE NICE EDIT P(2,1) EQU 1 E$FLS2* NAME EFLS2$ DOUBLE PRECISION SCIENTIFIC E$FLG2* NAME EFLG2$ DOUBLE PRECISION GENERALIZED E$FLF2* NAME EFLF2$ DOUBLE PRECISION FIXED E$FLN2* NAME EFLN2$ DOUBLE NICE EDIT DO P(2,1)**(P(1)>1) , LA 13,+(E$AD 1,2) DO (1-P(2,1))**(P(1)>1) , DL 13,+(E$AD 1,2) DO P(1)>0 , LA,14 12,P(1,1) LMJ 11,P(0,0) END P PROC *1 E$TIM* NAME ETIME$ HH:MM:SS E$TIME* NAME ETIME$ HH:MM:SS E$DAY1* NAME EDAY1$ MM/DD/YY E$DAY2* NAME EDAY2$ DD MMM YY E$DAY3* NAME EDAY3$ MONTH DD, YEAR E$DAY4* NAME EDAY4$ YYYYMMDD E$DAY5* NAME EDAY5$ YYMMDD E$DAYW* NAME EDAYW$ WEEKDAY E$TIM1* NAME ETIM1$ HH:MM:SS XM E$TIME1* NAME ETIM1$ HH:MM:SS XM DO P(1)>0 , LA,P(1,3) 12,+(E$AD 1,1) LMJ 11,P(0,0) END P PROC 0,2 E$TD* NAME ETIME$ HH:MM:SS E$DAT1* NAME EDAY1$ MM/DD/YY E$DAT2* NAME EDAY2$ DD MMM YY E$DAT3* NAME EDAY3$ MONTH DD, YEAR E$DAT4* NAME EDAY4$ YYYYMMDD E$DAT5* NAME EDAY5$ YYMMDD E$DATW* NAME EDAYW$ WEEKDAY E$TD1* NAME ETIM1$ HH:MM:SS XM TDATE$ LMJ 11,P(0,0) END E$AD* PROC 1,1 COMPUTE GENERALIZED ADDRESS S EQU E$AD(1,1) T EQU E$AD(1,2) +(I$ 0,0,0,P(S,T+1),2*P(S,*T+1)+P(S,*T),P(S,T)) END P PROC *10 E$PKT* NAME 1 GENERATE SMALL PACKET E$PKTF* NAME 0 GENERATE BIG PACKET A(0,1) EQU 'MSG' A(1,1) EQU 046 '&' A(0,2) EQU 'FPS' A(1,2) EQU 1 A(0,3) EQU 'FPR' A(1,3) EQU 1 A(0,4) EQU 'DPC' A(1,4) EQU 0 A(0,5) EQU 'SPC' A(1,5) EQU 0 DO P>2 ,I DO P-2 ,J DO A(1) , DO A(0,J)=P(I+1,1) ,A(1,J) EQU P(I+1,2) Z FORM 6,6,6,18 Z 0,A(1,1),P(1,1),P(1,2) Z 0,0,0,0 Z A(1,2),A(1,3),0,0 + 0,0 + 0 + 0 DO P(0,0) , END + A(1,4),A(1,5),0,0,0,0 + 0,0 + 0 + 0 END P PROC 1,1 E$FW* NAME 1 GENERATE FORM WORD I DO P(1) ,F(1) EQU (F(1)*/P(1,I))++(1*/(P(1,I)-1)) + F(1) END P PROC *1 EDIT USING COMMON PACKET E$DT* NAME 1 E$DTR* NAME 2 E$DTZ* NAME 3 DO P(0,0)=1 , E$DIT EP$ DO P(0,0)=2 , E$DITR EP$ DO P(0,0)=3 , E$DITZ EP$ DO P(1)>0 , E$MSGC P(1,1) END P PROC *1 E$PRTX* NAME E$DTX E$PRT* NAME PRINT$ EL$,ELL$,P(1,1)+(P(1)=0) END / . INTERNAL DEFINITIONS FOR EDIT$S AND EDIT$U DEF ISIGN EQUF PKT+1,,S3 INTEGER SIGN XPSIGN EQUF PKT+6,,S3 SIGN OF THE EXPONENT EXP EQUF PKT+6,,S4 IF NONZERO, THEN NO EXPONENT SEARCHING AFTRDP EQUF PKT+6,,S5 AFTER DECIMAL POINT FLAG VALNUM EQUF PKT+6,,S6 VALID NUMBER FOUND FLAG BIAS EQUF PKT+7,,XH2 SAVE AREA FOR POWERS MAN EQUF PKT+8 TWO WORD MANTISSA SAVE U$DEF* PROC 0,0 LOAD* EQUF EDIT$U,*CX LOOK* EQUF EDIT$K,CX END . PROCEDURES FOR EDIT$S AND EDIT$U P PROC 0,1 U$POS3* NAME UPOS3$ POSITION BEFORE NEXT NON-BLANK CHARACTER U$POS4* NAME UPOS4$ POSITION AFTER NEXT NON-BLANK CHARACTER U$CHAR* NAME UCHAR$ A0 = 1 CHARACTER U$LOOK* NAME ULOOK$ LOOK AT NEXT CHAR, POINTER UNTOUCHED U$I* NAME UI$ A0(A1) = INTEGER U$DI* NAME UDI$ A0(A1) = DECIMAL INTEGER U$OI* NAME UOI$ A0(A1) = OCTAL INTEGER U$HI* NAME UHI$ A0,A1 = HEXADECIMAL INTEGER LMJ 11,P(0,0) END P PROC *1 U$POS1* NAME UPOS1$ POSITION BEFORE CHARACTER IN A0 U$POS2* NAME UPOS2$ POSITION AFTER CHARACTER IN A0 DO P(1)>0 , LA,14 12,P(1,1)-(P(0,*0)=1) LMJ 11,P(0,0) END P PROC *0 U$FP* NAME UFP$ FLOATING POINT UNEDIT U$FP2* NAME UFP2$ DOUBLE PRECISION ENTRY U$N* NAME UN$ ANY TYPE WHATSOEVER LMJ 11,P(0,0) END