; MACRO 11 - GENERAL PURPOSE STRING MACROS. ; ***************************************** ; ; AUTHOR :- J.S.CLIFTON ; DATE :- 20th May 1982 ; ; The first macro is a list of the library MCALL'S and calls ; to other macro list for easy program definition. ; ; ******************************************* ; ** MACRO (GENMAC) - Macro definitions. ** ; ******************************************* ; .MACRO GENMAC ; .SBTTL EXTERNAL MACRO CALL SECTION ; .MCALL UNSAVE,SAVE .MCALL SETREG,..TPRM .MCALL STRING,MOVTEXT,RESERVE,PRESET .MCALL BITDEF,FLODEF,FNAMDEF,FILEFUN .MCALL EXITERROR,EXITSUCCESS .MCALL SETERROR,SETSUCCESS .MCALL IFERROR,IFSUCCESS .MCALL EXITFALSE,EXITTRUE .MCALL EXIT .MCALL SETFALSE,SETTRUE .MCALL IFFALSE,IFTRUE .MCALL PRINT,PRINTA,PRINTC,PRINTD,PRINTO,PRINTR .MCALL NEWLINE,SPACES .MCALL PTEXT,REPCHAR .MCALL INPUT,INPUTNE .MCALL INITIALISE,TERMINATE .MCALL MESSAGE,MFUNCTION .MCALL DUMP,DEBUG .MCALL NODEBLOCK,NODE,TABLEBLOCK,TABLE .MCALL SERIO ;SERIAL I/O DEVICE HANDLER MACRO .MCALL TLOOKUP,TREAD,TWRITE,TKILL,TCREATE,TCLOSE .MCALL TPROTECT,TUNPROTECT,TINSERT,TREMOVE,T..ALL .MCALL PAD,SPPAD,ZPAD .MCALL ADDSTRING,CLRSTRING,CMPSTRING,MOVSTRING,ROLSTRING .MCALL RORSTRING,SHLSTRING,SHRSTRING,SUBSTRING .MCALL ADDCHRSTRG,INSCHRSTRG,MODCHRSTRG,DELCHRSTRG .MCALL POPCHRSTRG,PUSHCHRSTRG .MCALL DMPSYM,DMPOFF,DMPBIT .MCALL QUEBUF .MCALL NOTRACE,TRACE ; $LDEF$ = 3000 ;SET LOCAL LABEL GENERATION START. ; .MACRO GENMAC $TRACE = 1 ;SET NOTRACE. LST$$ = 1 ;SET TO NOLIST. $LDEF$ = 3000 ;SET LOCAL LABEL GENERATION START. .ENDM GENMAC .ENDM GENMAC ; ; .MACRO SPPAD LAB,COUNT PAD LAB,#40,COUNT .ENDM SPPAD ; ; .MACRO ZPAD LAB,COUNT PAD LAB,#0,COUNT .ENDM ZPAD ; ; .MACRO PAD LAB,CHAR,COUNT .IF B LAB .ERROR ; -LABLE NOT DEFINED. .MEXIT .ENDC .IF B CHAR .ERROR ; -CHARACTER NOT DEFINED. .MEXIT .ENDC .IF B COUNT .ERROR ; -COUNT NOT DEFINED. .MEXIT .ENDC .IF DIF LAB,- .NTYPE TLAB,LAB .IF EQ TLAB&70 .EMIT .IFF .EMIT .ENDC .ENDC .IIF DIF CHAR,- .EMIT .IIF DIF COUNT,- .EMIT .EMIT .ENDM PAD ; ; .MACRO ADDSTRING SRC,DST .IF B SRC .ERROR ; -SOURCE NOT DEFINED. .MEXIT .ENDC .IF B DST .ERROR ; -DESTINATION NOT DEFINED. .MEXIT .ENDC .IF DIF SRC,- .NTYPE TSRC,SRC .IF EQ TSRC&70 .EMIT .IFF .EMIT .ENDC .ENDC .IF DIF DST,- .NTYPE TDST,DST .IF EQ TDST&70 .EMIT .IFF .EMIT .ENDC .ENDC .EMIT .ENDM ADDSTRING ; ; .MACRO CLRSTRING LAB .IF B LAB .ERROR ; -LABLE NOT DEFINED. .MEXIT .ENDC .IF DIF LAB,- .NTYPE TLAB,LAB .IF EQ TLAB&70 .EMIT .IFF .EMIT .ENDC .ENDC .EMIT .ENDM CLRSTRING ; ; .MACRO CMPSTRING SRC,DST .IF B SRC .ERROR ; -SOURCE NOT DEFINED. .MEXIT .ENDC .IF B DST .ERROR ; -DESTINATION NOT DEFINED. .MEXIT .ENDC .IF DIF SRC,- .NTYPE TSRC,SRC .IF NE TSRC&70 .EMIT .IFF .EMIT .ENDC .ENDC .IF DIF DST,- .NTYPE TDST,DST .IF EQ TDST&70 .EMIT .IFF .EMIT .ENDC .EMIT .ENDM CMPSTRING ; ; .MACRO MOVSTRING SRC,DST .IIF IDN SRC,- .EMIT .IIF IDN DST,- .EMIT CLRSTRING DST .IIF IDN SRC,- .EMIT ON.NOERROR ADDSTRING SRC,DST END .ENDM MOVSTRING ; ; .MACRO ROLSTRING SRC .IF B SRC .ERROR ; -SOURCE NOT DEFINED .MEXIT .ENDC .IF DIF SRC,- .NTYPE TSRC .IF NE TDST&70 .EMIT .IFF .EMIT .ENDC .ENDC .EMIT .ENDM ROLSTRING ; ; .MACRO RORSTRING SRC .IF B SRC .ERROR ; -SOURCE NOT DEFINED. .MEXIT .ENDC .IF DIF SRC,- .NTYPE TSRC .IF EQ TSRC&70 .EMIT .IFF .EMIT .ENDC .ENDC .EMIT .ENDM RORSTRING ; ; .MACRO SHLSTRING SRC .IF B SRC .ERROR ; -SOURCE NOT DEFINED .MEXIT .ENDC .IF DIF SRC,- .NTYPE TSRC,SRC .IF EQ TSRC&70 .EMIT .IFF .EMIT .ENDC .ENDC .EMIT .ENDM SHLSTRING ; ; .MACRO SHRSTRING SRC,CHAR .IF B SRC .ERROR ; -SOURCE NOT DEFINED. .MEXIT .ENDC .IF B CHAR .ERROR ; -CHARACTER NOT DEFINED. .MEXIT .ENDC .IF DIF SRC,- .NTYPE TSRC,SRC .IF NE TSRC&70 .EMIT .IFF .EMIT .ENDC .ENDC .IIF DIF CHAR,- .EMIT .EMIT .ENDM SHRSTRING ; ; .MACRO SUBSTRING SRC,DST .IF B SRC .ERROR ; -SOURCE NOT DEFINED. .MEXIT .ENDC .IF B DST .ERROR ; -DESTINATION NOT DEFINED. .MEXIT .ENDC .IF DIF DST,- .NTYPE TDST,DST .IF EQ TDST&70 .EMIT .IFF .EMIT .ENDC .ENDC .IF DIF SRC,- .NTYPE TSRC,DST .IF EQ TSRC&70 .EMIT .IFF .EMIT .ENDC .ENDC .EMIT ON.NOERROR .EMIT END .ENDM SUBSTRING ; ; .MACRO SWABSTRING SRC .IF B SRC .ERROR ; -SOURCE NOT DEFINED. .MEXIT .ENDC .IF DIF SRC,- .NTYPE TSRC,SRC .IF EQ TSRCT&70 .EMIT .IFF .EMIT .ENDC .ENDC .EMIT .ENDM SWABSTRING ; ; .MACRO TSTSTRING SRC .IF B SRC .ERROR ; -SOURCE NOT DEFINED. .MEXIT .ENDC .IF DIF SRC,- .NTYPE TSRC,SRC .IF EQ TSRC&70 .EMIT .IFF .EMIT .ENDC .ENDC .IIF EQ LST$$ .LIST MOV @CD.SRC,CD.RES TST CD.RES .IIF EQ LST$$ .NLIST .ENDM TSTSTRING ; ; .MACRO ADDCHRSTRG CHAR,SRC .IF B CHAR .ERROR ; -CHARACTER NOT DEFINED. .MEXIT .ENDC .IF B SRC .ERROR ; -SOURCE NOT DEFINED. .MEXIT .ENDC .IF DIF SRC,- .NTYPE TSRC,SRC .IF EQ TSRC&70 .EMIT .IFF .EMIT .ENDC .ENDC .IIF DIF CHAR,- .EMIT .EMIT .ENDM ADDCHRSTRG ; ; .MACRO INSCHRSTRG CHAR,POS,LAB .IF B CHAR .ERROR ; -CHARACTER NOT DEFINED. .MEXIT .ENDC .IF B POS .ERROR ; -POSITION NOT DEFINED. .MEXIT .ENDC .IF B LAB .ERROR ; -LABLE NOT DEFINED. .MEXIT .ENDC .IIF DIF CHAR,- .EMIT .IIF DIF POS,- .EMIT .IF DIF LAB,- .NTYPE TLAB,LAB .IF EQ TLAB&70 .EMIT .IFF .EMIT .ENDC .ENDC .EMIT .ENDM INSCHRSTRG ; ; .MACRO MODCHRSTRG CHAR,POS,LAB .IF B CHAR .ERROR ; -CHARACTER NOT DEFINED. .MEXIT .ENDC .IF B POS .ERROR ; -POSITION NOT DEFINED. .MEXIT .ENDC .IF B LAB .ERROR ; -LABLE NOT DEFINED. .MEXIT .ENDC .IIF DIF CHAR,- .EMIT .IF DIF LAB,- .NTYPE TLAB,LAB .IF EQ TLAB&70 .EMIT .IFF .EMIT .ENDC .ENDC .IIF DIF POS,- .EMIT .EMIT .ENDM MODCHRSTRG ; ; .MACRO DELCHRSTRG POS,LAB .IF B POS .ERROR ; -POSITION NOT DEFINED. .MEXIT .ENDC .IF B LAB .ERROR ; -LABLE NOT DEFINED. .MEXIT .ENDC .IF DIF LAB,- .NTYPE TLAB,LAB .IF EQ TLAB&70 .EMIT .IFF .EMIT .ENDC .ENDC .IIF DIF POS,- .EMIT .EMIT .ENDM DELCHRSTRG ; ; .MACRO POPCHRSTRING LAB SHLSTRING LAB .ENDM POPCHRSTRING ; ; .MACRO PUSHCHRSTRG CHAR,LAB INSCHRSTRG CHAR,#0,LAB .ENDM PUSHCHRSTRG ; ; .END ;