Trailing-Edge
-
PDP-10 Archives
-
decuslib10-06
-
43,50366/recsm6.mac
There are no other files named recsm6.mac in the archive.
TITLE RECSM
SUBTTL COMPILADOR DE EXPRESIONES REGULARES
REPEAT 0,<
CARLOS GARCIA JURADO
INSTITUTO NACIONAL DE ENERGIA NUCLEAR
APDO POSTAL 27-190
MEXICO 18,D.F.
>
;PURE=1 ENSAMBLA VERSION REENTRANTE
;PURE=0 ENSAMBLA EL COMPILADOR COMO UNA SUBRUTINA QUE
;PUEDE SER LLAMADA DESDE FORTRAN.
IFNDEF PURE,<PURE=1>
IFN PURE,<
JOBVER=137
LOC 137
EXP 001
HISEG
>
EXTERNAL JOBREL,JOBSYM,JOBFF,JOBSA,JOBDDT,JOBAPR,JOBTPC
EXTERNAL SYSJO,DATE,TIME
ENTRY A,B,D,C,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
ENTRY CONT,LOADAC,EQ,C.NUM,SYSF,SWS,RWS,QUOTE,CAN,CNA
ENTRY SUMA,RESTA,MULT,DIV,REPPDL,MOD,RTEXT1
INTERN INPUSH,TEXT0,TEXT3,TEX00,LTEXT,CSBR.1,DP.1,LOW2,PP
IFE PURE,<
RELOC
ENTRY RECSM
>
INCHN=16
OUCHN=17
AC0=0
AC1=1
AC2=2
AC3=3
AC4=4
AC5=5
AC6=6
AC7=7
FLAG=10
TEM=11
CHREC=12
TEXT1=13
TEXT2=14
QTEXT0=15
TXPD=16
REC=17
PARENT=1
REENTC=2
EXEC=4
S.R=200
S.W=400
ACOMP=AC4
XPD=AC5
YPD=AC6
ZPD=AC7
;PARAMETROS DE RECSM
WKSIZE=3500
QSIZE=770
QPDL=147
PDLSIZ=200
IFE PURE,<
REPEAT 0,<
OPCION PARA LLAMAR AL COMPILADOR DESDE FORTRAN
LA SECUENCIA DE LLAMADO ES:
CALL RECSM (IV,ITEXT,IREC)
ES DECIR EL COMPILADOR ESTA DEFINIDO COMO UNA
SUBRUTINA DONDE LOS ARGUMENTOS SE INTERPRETAN
COMO SIGUE:
IREC: ARREGLO ENTERO DONDE ESTA EMPACADO EL PRO-
GRAMA REC QUE VA A EJECUTARSE EL PROGRAMA DEBE ESTAR
EMPACADO EN FORMATO A5.
ITEXT: ES UN ARREGLO ENTERO QUE CONTIENE LA CADENA
DE SIMBOLOS ASCII QUE SE VA A TRANSFORMAR,TAMBIEN
EN ESTE CASO LA CADENA DEBE ESTAR EN A5.
PARA DETERMINAR LA DIMENSION DEL ARREGLO
ES DAR N=M/5+1 DONDE M ES EL NUMERO MAXIMO DE
CARACTERES QUE SE VAN A MANEJAR.
IV: ES UNA VARIABLE LOGICA QUE CONTIENE EL VALOR
FALSO O VERDAD DE LA EXPRESION REC QUE SE EJECUTO
>
RECSM: 0
HRRZI ,SACF
BLT 0,SACF+17
MOVE ,@(16)
MOVEM IV
MOVE JOBFF
MOVEM JOBFF0
SKIPE F4
JRST K.1
MOVE REC,INPUSH
CLEAR FLAG,
ADDI ,3000
MOVEM ,JOBFF
CALLI ,11
JRST ERR6
PUSHJ REC,INICOM
HRRZ QTEXT0,2(16)
HLL QTEXT0,[POINT 7,,]
HRRZ AC1,1(16)
HLL AC1,[POINT 7,,]
ILDB TEM,AC1
JUMPE TEM,.+5
SKIPA
ILDB TEM,AC1
IDPB TEM,TEXT3
JUMPN TEM,.-2
SETOM IV
PUSHJ REC,RECCOM
PUSHJ REC,REA.1
SETZM ,IV
SETZM F4
MOVE ,JOBFF0
MOVEM JOBFF
CALLI ,11
JRST ERR6
RETURN: HRLZI 0,SACF
BLT 0,16
MOVE ,IV
MOVEM ,@(16)
HRRZ AC1,1(16)
HLL AC1,[POINT 7,,]
MOVE AC2,TEXT0
ILDB CHREC,AC2
IDPB CHREC,AC1
JUMPN CHREC,.-2
MOVEI AC2,5
IDPB CHREC,AC1
SOJG AC2,.-1
JRA 16,3(16)
IV: 0
F4: 0
JOBFF0: 0
SACF: BLOCK 20
>
IFN PURE,<
START: MOVE REC,INPUSH
CLEAR FLAG,
MOVE ,JOBFF
CALLI ,11
JRST ERR6
SETZM O.WD
SETZM O.R1
PUSHJ REC,INICOM
REENT: TTCALL 3,CRLF
TTCALL 3,INDEV
PUSHJ REC,CLARG
MOVE ,[ASCII /TTY:/]
MOVEM ARGIO
TTCALL 4,CHREC
CAIN CHREC,15
JRST .+12
CAIN CHREC,""
JRST .+10
SKIPA
TTCALL 4,CHREC
CAIN CHREC,""
MOVEI CHREC,15
IDPB CHREC,AC1
CAIE CHREC,15
JRST .-5
PUSHJ REC,O.RD
JRST START1
TTCALL 3,TERM
TRO FLAG,EXEC
TRZE FLAG,REENTC
JRST TRAECA
TLZ FLAG,S.W
PUSHJ REC,RECCOM
PUSHJ REC,REA
TLN
CLEAR
CALL [SIXBIT /EXIT/]
START1: TTCALL 3,ARGIO
TTCALL 3,CRLF
TTCALL 3,ER4
TTCALL 11,
JRST START
>
RECCOM: HRRZ ,ACOMP
ADDI ,1
HRLZ AC1,CSBR.1
HRR AC1,0
HRRZ AC2,
ADDI AC2,77
BLT AC1,(AC2)
HRRM CSBR.1
HRRM DP.1
ADDI 100
HRRZM APCOM0
MOVE ,@(REC)
MOVEM LEECA
PUSH REC,APCOM0
ADDI ACOMP,100
HRRZI ,SAC
BLT ,SAC+14
HRRZI XPD,XPDL
HRRZI YPD,YPDL
MOVE ZPD,[XWD -17,ZPDL]
TRZ FLAG,PARENT
TRAECA: HRRZ ,ACOMP
ADDI ,177
CAML ,JOBFF
PUSHJ REC,CORE
PUSHJ REC,LEECA
CAIG CHREC,40
JRST TRAECA
CAIN CHREC,","
JRST TRAECA
CAIN CHREC,"["
JRST COMEN
CAIN CHREC,"("
TRO FLAG,PARENT
TRNN FLAG,PARENT
JRST CHKQ
SUBI CHREC,40
HRRZ AC1,TDSC(CHREC)
PUSHJ REC,@AC1
JRST TRAECA
CHKQ: CAIN CHREC,"'"
JRST COMI
CAIE CHREC,42
JRST TRAECA
COMI: MOVE TEM,CHREC
MOVEI AC2,42
CAIE TEM,"'"
MOVEI AC2,"'"
PUSHJ REC,COMI.1
JRST TRAECA
COMI.1: PUSHJ REC,LEECA
CAME CHREC,AC2
JRST .+5
EXCH TEM,AC2
PUSHJ REC,COMI.1
EXCH TEM,AC2
JRST COMI.1
CAME CHREC,TEM
JRST COMI.1
POPJ REC,
IIIAAAA>>AAA> AA@@@@IIIA ``B@*U*-8x