1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-17 00:33:22 +00:00
PDP-10.its/src/syseng/jsf.macros
2016-11-07 08:08:32 +01:00

213 lines
4.0 KiB
Plaintext
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;JSF STANDARD MACROS 6/17/72
IF2,.INEOF ;.INSRT INTO PROG NEAR BEGINNING, PREFERABLY ONLY DURING PASS 1
;RANDOM SYMBOLS
SIGN=400000 ;IT SAVES A LITTLE TYPING
JOV=JFCL 10,
JCRY0=JFCL 4,
JCRY1=JFCL 2,
JFOV=JFCL 1,
;FLOAT=FSC 233 ;FLOAT THE INTEGER IN SELECTED AC
.FORMAT 30,2704_24. ;MAKE A, FORMAT TREAT A LIKE AC
.FORMAT 34,00222704_12. ;CHANGE A,B FORMAT TO TREAT A LIKE AC
.AOP .OPER@ 0,.RDATIM ;GET DATE AND TIME OF ASSEMBLY
ASTIME=.AVAL1 ;TIME (SIXBIT /HHMMSS/) OF ASSEMBLY
ASDATE=.AVAL2 ;DATE (SIXBIT /YYMMDD/) OF ASSEMBLY
;FLAG DEFINITION FORMAT
;FLAG==XHF AC,VALUE
RHF==0
LHF==TLN-TRN
DEFINE SETF FLAG
TRO+FLAG TERMIN
DEFINE CLEARF FLAG
TRZ+FLAG TERMIN
DEFINE TESTF COND,FLAG
TRN!COND+FLAG TERMIN
DEFINE TMODF COND,FLAG
TR!COND+FLAG TERMIN
;FOLLOWING MACRO GENERATES POINTER TO BYTE POINTER TO THE JSF-TYPE FLAG "FLAG"
DEFINE FLGBP FLAG
<.OP FAD <32000,,FLAG>,0 >_3+220*<<FLAG>&LHF>-(3700)+<<FLAG>_<-27>>&17 TERMIN
;SWDEF NAME=EXPR ;SET "NAME" TO "EXPR" IFF "NAME" NOT DEFINED
DEFINE SWDEF ASSGT/
IRPS DUMMY,,[ASSGT]
IFNDEF DUMMY,ASSGT
.ISTOP
TERMIN
TERMIN
;FOLLOWING MACROS TAKE ADVANTAGE
;OF ARGUMENT EVALUATION AT EXPANSION TIME
DEFINE CONCAT A,B
A!B!TERMIN
DEFINE DEF A,B,C,D,E,F,G,H,I,J,K
DEFINE A!B!C!D!E!F!G!H!I!J!K!TERMIN
TERMIN
EQUALS DEF2,DEF ;FOR OLD PROGRAMS
DEFINE PRINTA A,B,C,D,E,F
IF1,[PRINTC Á!B!C!D!E!F
Ý
TERMIN
DEFINE PRINTB A,B,C,D,E,F
PRINTC Á!B!C!D!E!F
Š
TERMIN
;(RIGHT) BYTE POINTER, POS ARG IS # BITS TO RIGHT OF BYTE
DEFINE POINTR POS,SIZ
<POS>_12.+<SIZ>_6,,TERMIN
;(LEFT) BYTE POINTER, 1STBIT ARG IS # BITS TO LEFT OF BYTE
DEFINE POINTL 1STBIT,SIZ
<36.-<SIZ>-<1STBIT>>_12.+<SIZ>_6,,TERMIN
;BYTE POINTER TO BYTE BEFORE FIRST IN WORD
DEFINE POINTZ SIZ
36.-<36./<SIZ>*<SIZ>>_12.+<SIZ>_6,,-1 TERMIN
;(PLURAL) BYTE POINTER ARRAY TO LDB FROM INDEXED
DEFINE POINTS SIZ
REPEAT 36./<SIZ>,<36.-<SIZ>*<.RPCNT+1>>_12.+<SIZ>_6,,TERMIN
;(ILDB) BYTE POINTER ARRAY TO ILDB FROM
DEFINE POINTI SIZ
REPEAT 36./<SIZ>,<36.-<SIZ>*.RPCNT>_12.+<SIZ>_6,,TERMIN
;(BOTH) BYTE POINTER ARRAY TO EITHER LDB FROM OR ILDB FROM (OBSOLESCENT)
DEFINE POINTB SIZ
REPEAT 36./<SIZ>+1,<36.-<SIZ>*.RPCNT>_12.+<SIZ>_6,,TERMIN
;ASSEMBLE INTO A CERTAIN LOCATION
DEFINE TMPLOC LCTN,CRUFT/
.ZZ==.
LOC LCTN
CRUFT
.=.ZZ
TERMIN
;DECREMENT A 7 BIT BYTE POINTER
DEFINE DBP7 AC
ADD AC,[070000,,0]
TLNE AC,400000
SUB AC,[430000,,1]
TERMIN
;DECREMENT 7 BIT BYTE POINTER AND JUMP
DEFINE DBP7J AC,ADR
ADD AC,[70000,,0]
JUMPGE AC,ADR
SUB AC,[430000,,1]
JRST ADR
TERMIN
;ASSEMBLE FILE SPECIFIED BY TYPEIN (OBSOLESCENT)
DEFINE ..INSRT FILENAMES
IF1,[PRINTC FILENAMES PLEASE.
]
.INSRT @:JSF;FILENAMES
TERMIN
;REPEAT AN INSTRUCTION WITH VARIOUS ADDRESSES
DEFINE INSIRP A,B
IRPS %%ADR,,[B]
A,%%ADR
TERMIN
TERMIN
;NON-TS DEFINITIONS
PICON==2200 ;IN RH(CONO PI,), TURN ON CHANNEL(S)
PICOFF==1200 ;TURN OFF CHANNEL(S)
PICIRQ==4200 ;REQUEST INTERRUPT ON CHANNEL(S)
;DEFINE IO DEVICE SYM SUCH THAT DDT WILL TYPE IT OUT
DEFINE IODEV LINE/OLDEND,IODEVC,OIODEV
IODEVC==0
IF1,EQUALS OIODEV,IODEV
DEFINE IODEV ASSGT,OVAL
IFNB [OVAL]ASSGT==OVAL
IFB [OVAL]ASSGT
IRPS %DEV,,[ASSGT]
DEF IOD,\IODEVC,[
%DEV=<BLKI %DEV,>-BLKI
]
.ISTOP
TERMIN
IODEVC==IODEVC+1
TERMIN
EQUALS OLDEND,END
EXPUNGE END
DEFINE END
IF1,EQUALS IODEV,OIODEV
IF2,[REPEAT IODEVC,[
CONCAT IOD,\.RPCNT
]]
EQUALS END,OLDEND
EXPUNGE OLDEND,IODEVC,OIODEV
END!TERMIN
IODEV LINE
TERMIN
IFNDEF SWRQ,.INEOF ;THAT'S ALL IF HE DOESN'TTAKE NOTICE OF TYPEIN
IFE SWRQ,.INEOF ;THAT'S ALSO ALL IF HE DOESN'T WANT TYPEIN
DEFINE INSERT LINE/
IRPS %NAME,,[LINE]
DEFINE %NAME DEFALT/
.INSRT DSK:DEFALT  LINE
TERMIN
.ISTOP
TERMIN
TERMIN
PRINTA SWITCHES?
EQUALS NO,.INEOF ;NO IS VALID ANSWER
%ZQ.$X: .INSRT TTY:
LOC %ZQ.$X
EXPUNGE NO,%ZQ.$X
PRINTA OK.; ;ACKNOWLEDGE NO OR .INEOF (USERS LIKE SIGNS OF LIFE)
DEFINE INSERT DEFALT/GENSYM
IRPS %NAME,,[DEFALT]
IFNDEF %NAME,[
DEFINE %NAME
.INSRT DSK:!TERMIN
]
DEFINE GENSYM
EXPUNG GENSYM
%NAME!!TERMIN
.ISTOP
TERMIN
GENSYM DEFALTîTERMIN
;THAT'S ALL