UNIVERSAL IMPPRM PARAMETER FILE FOR MACRO ROUTINES IN IMP ; K. FARVIS 9TH. NOV. 1976 .DIRECTIVE .NOBIN ;DEFS OF ACS T1=2 T2=3 T3=4 T4=5 T5=6 J=3 ;*** DUPLICATE USE OF REGISTER 3 *** IOREG=4 ARG3=4 ;*** NOTE DUPLICATE OF IOREG AND T3 *** ARG2=5 ;*** THIS ALSO DUPLICATE OF T4 *** ARG1=6 ;*** DUPLICATE OF T5 *** P=17 BASE1=16 BASE2=15 BASE3=14 BASE4=13 BASE5=12 ; P=17 ;PDL FOR ROUTINE ENTRY-EXIT ; ARG1=16 ;1ST PARAMETER FOR PROCEDURE ; ARG2=15 ;2ND PARAMETER ; ARG3=14 ;3RD PARAMETER ; AC'S 13-7 ARE BASE REGISTERS 5-1 ; FOR GENERAL MACRO ROUTINES THE FOLLOWING REGISTERS ARE FREE ; T6=6 ; T5=5 ; T4=4 ; T3=3 ; T2=2 ; T1=1 ;AND ALSO AC1=1 ;%RESULT REGISTER FROM MAPS ; AC=0 ;%RESULT REGISTER FROM FUNCTIONS AC=1 ;ADDITIONAL AC DEFNS FOR PRIMITIVE PROCEDURES P2=1 ;PRESERVED ACS P1=2 J=3 ;RETURN ADDRESS ARGLST==2 ;START LOCATION OF PARAMETERS ON STACK ;THE REGISTER FOR LONG REAL ARGUMENT PARAMETER LARG1==6 ;NOW LOCATION OF LONG REAL ARGUMENTS ON THE STACK A1INC==2 ;LOC OF 1ST A2INC==4 ;LOC OF 2ND A3INC==6 ;LOC OF 3RD A4INC==10 ;LOC OF 4TH A5INC==12 ;LOC OF 5TH A6INC==14 ;LOC OF 6TH ;DEVICE TYPE DEFINITIONS TMPDEV==-2 UNDEV==-1 DSKDEV==0 DTADEV==1 MTADEV==2 TTYDEV==3 XDSKDEV==4 ; SCB RECORD DEFININTIONS MUST CORRESPOND TO IMP SIDE DEVTYP==0 ;**TEMP UNTIL SHORT INTEGERS CHNTYP==1 NXTCHR==2 OPER==3 FLAGS==4 RESVD==5 TMPNAME==6 UDX==7 FILOPFN==10 STATUS==11 DEVNAM==12 BUFHEDS==13 BUFNUM==14 LKENT==15 PATHARG==16 BUFADR==17 BYTPTR==20 BYTCNT==21 MPXUDX==21 IBUFOP==23 OBUFOP==24 USETI==25 USETO==26 STATZ==27 BLOCKSIZE==30 ;NEXT COMES THE PATH BLOCK ;THEN THE LOOKUP ENTER BLOCK ;+ADDITIONAL DEFNS FOR TERMINAL SCB ARGPTR==5 FUNCT==6 OUTARG==10 ;AND FOR STRRING SCB LENGTH==4 LENPTR==5 POINTER==6 ;THE CALLING INSTRUCTIONS FOR ROUTINES OPDEF CALL [ PUSHJ P,] OPDEF RETURN [POPJ 17,0] OPDEF GOTO [JRST] OPDEF PJRST [JRST] ;OPENING SEQUENCE FOR LONG REAL PROCEDURES, TO PUT ARGS ON STACK DEFINE IHELLO (NAME) < SALL ;**NEW**NAME: DMOVEM ARG1,A1INC(SP) NAME: MOVEM ARG1,A1INC(SP) SETZM A1INC+1(SP) MOVEM ARG2,A2INC(SP) SETZM A2INC+1(SP) MOVEM ARG3,A3INC(SP) SETZM A3INC+1(SP) > SUBTTL PROCESSOR DEFINITION (KA10/KI10) ;TYPE OF PROCESSOR KA10==1 KI10==2 IFNDEF CPU, IFN CPU-KA10,< DEFINE DOUBLE (A,B)< A B> > IFE CPU-KA10,< DEFINE DOUBLE (A,B)< ZZ1.==A&<777000,,0> IFL ZZ1.,> ZZ1.==ZZ1.-<033000,,0> IFE B, ZZ2.==ZZ1.+<_-8>&<000777,,777777> IFL ZZ1., A ZZ2. SUPPRESS ZZ1.,ZZ2.> DEFINE DMOVE(AC,M)< IFL -<@>,< MOVE AC,M MOVE AC+1,1+M> IFGE -<@>,< MOVEI AC+1,M MOVE AC,(AC+1) MOVE AC+1,1(AC+1)> > DEFINE DMOVN(AC,M)< DMOVE AC,M DFN AC,AC+1> DEFINE DMOVEM(AC,M)< MOVEM AC,M MOVEM AC+1,1+M > DEFINE FLMUL (AC,M,%OV)< MOVEM AC,AC+2 FMPR AC+2,1+M JFCL (2) FMPR AC+1,M JFCL (2) UFA AC+1,AC+2 JFCL FMPL AC,M JOV %OV UFA AC+1,AC+2 FADL AC,AC+2 %OV: > DEFINE FLDIV(AC,M,%OV)< FDVL AC,M JOV %OV MOVN AC+2,AC FMPR AC+2,1+M JFCL (2) UFA AC+1,AC+2 FDVR AC+2,M JFCL FADL AC,AC+2 %OV: > DEFINE FLADD(AC,M,%OV)< UFA AC+1,1+M FADL AC,M JOV %OV UFA AC+1,AC+2 FADL AC,AC+2 %OV: > > ;END OF KA10 CONDITIONAL IFE CPU-KI10,< OPDEF FLADD [DFAD] OPDEF FLMUL [DFMP] OPDEF FLDIV [DFDV] DEFINE DFN (A,B)< DMOVN A,A IFN < &17->, > > ;END OF KI10 CONDITIONAL SUBTTL IMP STRING DEFINITION ;DEFINE AN IMPSTRING TO BE 9-BIT BYTES WITH COUNT AS THE FIRST DEFINE IMPSTR($C) < SALL $N==0 $CT==1 IRPC $C,<$N==$N+1> IRPC $C, IFE $CT-4, < EXP $N $N=="$C" $CT==0> $CT==$CT+1> IFE $CT-3,<$N==$N_11> IFE $CT-2,<$N==$N_22> IFE $CT-1,<$N==$N_33> EXP $N > SUBTTL ERROR MACROS DEFINE ERROR(EVENT,SUBEV,XTRA,EMESS,%A)< SALL MOVE ARG3,XTRA MOVEI P2,%A MOVEI P1,ERRMSG## JSP J,.$MOVE## POP P,J ;GET ORIGINAL RETURN ADDRESS HRREI ARG1,EVENT HRREI ARG2,SUBEV GOTO .$SNAL## ;GOTO IT %A: EMESS > DEFINE PRMERROR(EVENT,SUBEV,XTRA,EMESS,%A)< SALL MOVE ARG3,XTRA MOVEI P2,%A MOVEI P1,ERRMSG## MOVEM J,ARG1 ;SAVE RETURN ADDRESS JSP J,.$MOVE## MOVE J,ARG1 ;GET ORIGINAL RETURN ADDRESS HRREI ARG1,EVENT HRREI ARG2,SUBEV GOTO .$SNAL## %A: EMESS > SUBTTL STORAGE CONSTANTS $IOSIZE==^D2000 $PDLSIZE==200 $STACKSIZE==^D20000 $ERRORS==1 END