mirror of
https://github.com/PDP-10/its.git
synced 2026-02-01 06:22:14 +00:00
Files from CLIB; AR2 CLIB.
This commit is contained in:
35
src/c/code.insert
Normal file
35
src/c/code.insert
Normal file
@@ -0,0 +1,35 @@
|
||||
; MACROS FOR SEPARATE CODE LITERAL AREA
|
||||
; THIS DOES NOT HANDLE RECURSIVE CALLS
|
||||
|
||||
CD%N==0
|
||||
IF1,[CD%LOC==0]
|
||||
|
||||
DEFINE CD%AS *PREFIX*,#SEGNO,*SUFFIX*
|
||||
PREFIX!SEGNO!SUFFIX
|
||||
TERMIN
|
||||
|
||||
DEFINE CODE BODY
|
||||
IF2,[ CD%AS/CD%LOC+CD%/,CD%N+1]
|
||||
|
||||
CD%N==CD%N+1
|
||||
DOT==.-1
|
||||
CD%OLC==.
|
||||
IF1,[
|
||||
BODY
|
||||
CD%AS /CD%/,CD%N,/==CD%LOC/
|
||||
CD%LOC==CD%LOC+<.-CD%OLC>
|
||||
]
|
||||
IF2,[
|
||||
CD%AS /LOC CD%LOC+CD%/,CD%N
|
||||
BODY
|
||||
]
|
||||
LOC CD%OLC
|
||||
TERMIN
|
||||
|
||||
DEFINE INSCODE
|
||||
IF1,[
|
||||
CD%SIZ==CD%LOC
|
||||
CD%LOC==.
|
||||
BLOCK CD%SIZ
|
||||
]
|
||||
TERMIN
|
||||
163
src/c/nm.insert
Normal file
163
src/c/nm.insert
Normal file
@@ -0,0 +1,163 @@
|
||||
.INSRT C;CODE INSERT
|
||||
|
||||
.OFNM2=SIXBIT/STK/
|
||||
|
||||
CL=PUSHJ P,
|
||||
RTN=POPJ P,
|
||||
|
||||
.VCALL=2_33
|
||||
.ACALL=3_33
|
||||
.XCALL=4_33
|
||||
|
||||
DEFINE SYSCAL NAME,ARGS,DUMMY,LABEL
|
||||
SETZ A,
|
||||
.CALL [SETZ
|
||||
.1STWD SIXBIT /NAME/
|
||||
ARGS
|
||||
403000,,A
|
||||
]
|
||||
IFSN [LABEL][]GO LABEL
|
||||
IFSE [LABEL][]MOVN A,A
|
||||
TERMIN
|
||||
|
||||
DEFINE INFORM A,B
|
||||
IF1,[PRINTX \ A = B
|
||||
\]
|
||||
TERMIN
|
||||
|
||||
; SUPPORT ROUTINES
|
||||
|
||||
DEFINE %LEN [LIST]
|
||||
%COUNT==0
|
||||
IRP ELEM,,LIST
|
||||
%COUNT==%COUNT+1
|
||||
TERMIN
|
||||
TERMIN
|
||||
|
||||
DEFINE DEFVAR NAME,#OFFSET
|
||||
DEFINE NAME
|
||||
<OFFSET-%P>&262143.(P)TERMIN
|
||||
TERMIN
|
||||
|
||||
; DEFINE C-CALLABLE PROCEDURE (C NAME)
|
||||
|
||||
DEFINE CENTRY NAME,[ARGS],[VARS]
|
||||
PROLOG Z!NAME,NAME,ARGS,VARS
|
||||
TERMIN
|
||||
|
||||
; DEFINE C-CALLABLE PROCEDURE (MIDAS NAME)
|
||||
|
||||
DEFINE MENTRY NAME,[ARGS],[VARS]
|
||||
PROLOG NAME,NAME,ARGS,VARS
|
||||
TERMIN
|
||||
|
||||
; DEFINE MIDAS ENTRY POINT (NOT PROCEDURE)
|
||||
|
||||
DEFINE IENTRY NAME
|
||||
NAME": TERMIN
|
||||
|
||||
; PROLOG MACRO
|
||||
|
||||
DEFINE PROLOG MNAME,PNAME,[ARGS],[VARS]
|
||||
%LEN ARGS
|
||||
%A==%COUNT
|
||||
%LEN VARS
|
||||
%V==%COUNT
|
||||
%OFF== -<%A+%V>
|
||||
IRP ARGNAM,,ARGS
|
||||
DEFVAR ARGNAM,%OFF
|
||||
%OFF==%OFF+1
|
||||
TERMIN
|
||||
%OFF==%OFF+1
|
||||
IRP VARNAM,,VARS
|
||||
DEFVAR VARNAM,%OFF
|
||||
%OFF==%OFF+1
|
||||
TERMIN
|
||||
%A,,[ASCIZ/PNAME/]
|
||||
MNAME": IFN %V,[ADDI P,%V]
|
||||
TERMIN
|
||||
|
||||
; DEFINE SYNONYM FOR C-CALLABLE ENTRY POINT
|
||||
|
||||
DEFINE XENTRY NEWNAME,OLDNAME
|
||||
Z!NEWNAME"=Z!OLDNAME"
|
||||
TERMIN
|
||||
|
||||
; DEFINE MIDAS-ACCESSIBLE DATA
|
||||
|
||||
DEFINE MDATA NAME
|
||||
NAME":TERMIN
|
||||
|
||||
; FATAL ERROR
|
||||
|
||||
DEFINE CROAK STRING/
|
||||
.VALUE [ASCIZ \
|
||||
: STRING
|
||||
\]
|
||||
TERMIN
|
||||
|
||||
; RETURN STATEMENT
|
||||
|
||||
DEFINE RETURN
|
||||
IFE %A,[
|
||||
IFN %V,[SUBI P,%V]
|
||||
POPJ P,
|
||||
]
|
||||
IFN %A,[
|
||||
SUBI P,%V+%A+1
|
||||
JRST @<%A+1>(P)
|
||||
]
|
||||
TERMIN
|
||||
|
||||
; CALL STATEMENT
|
||||
|
||||
DEFINE CALL NAME,[ARGS]
|
||||
NN==0
|
||||
IRP ARG,,ARGS
|
||||
PPUSH ARG
|
||||
NN==NN+1
|
||||
TERMIN
|
||||
ICALL NN,NAME
|
||||
TERMIN
|
||||
|
||||
; MIDAS-CALL STATEMENT
|
||||
|
||||
DEFINE MCALL NAME,[ARGS]
|
||||
NN==0
|
||||
IRP ARG,,ARGS
|
||||
PPUSH ARG
|
||||
NN==NN+1
|
||||
TERMIN
|
||||
CCALL NN,NAME"
|
||||
TERMIN
|
||||
|
||||
; VARIABLE-CALL STATEMENT
|
||||
|
||||
DEFINE VCALL F,[ARGS]
|
||||
NN==0
|
||||
IRP ARG,,ARGS
|
||||
PPUSH ARG
|
||||
NN==NN+1
|
||||
TERMIN
|
||||
CCALL NN,F
|
||||
TERMIN
|
||||
|
||||
; INTERNAL CALL
|
||||
|
||||
DEFINE ICALL N,NAME
|
||||
CCALL N,Z!NAME"
|
||||
TERMIN
|
||||
|
||||
; HACK FOR CONSTANTS
|
||||
|
||||
EQUALS NM%EN END
|
||||
EXPUNGE END
|
||||
DEFINE END ENDLOC
|
||||
.CODE
|
||||
INSCODE
|
||||
.PDATA
|
||||
CONSTANTS
|
||||
NM%EN ENDLOC
|
||||
TERMIN
|
||||
|
||||
.CODE
|
||||
Reference in New Issue
Block a user