1
0
mirror of https://github.com/PDP-10/stacken.git synced 2026-03-06 11:03:21 +00:00
Files
Lars Brinkhoff 6e18f5ebef Extract files from tape images.
Some tapes could not be extracted.
2021-01-29 10:47:33 +01:00

564 lines
14 KiB
Plaintext
Raw Permalink 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.
UNIVERSAL DTSPRM - Parameters for DTS/DTR
SUBTTL W. Nichols May, 1981
FTEXTRA==0 ;Non-zero to allow extra commands
FTNCP==0 ;Non-zero to include NCP command
FTUSRMODE==0 ;Non-zero if loaded with test-bed
FTTRACE==0 ;Non-zero to include trace code
FTLIST==0 ;Non-zero to list $XLISTed text
FTNSPDCP==0 ;Non-zero to include NSP. LUUO library
HIBTIM==^D30000 ;MILLISECS FOR DTS TO HIBER
; BETWEEN READ STATUS FCNS
SEARCH JOBDAT,UUOSYM,SWIL
SALL
; This program conforms to the DTS specification version 1.1
; published on 22 April 1981.
SUBTTL - Make Global Symbols Global
;Call GLOBAL EXTERNAL,INTERNAL in DTS and DTR
;Call GLOBAL INTERNAL,EXTERNAL in DTSCOM
DEFINE GLOBAL(common,notcommon),<
common TIMSTP,STRLOG,STPLOG,CLSLOG,NSPREL,.STATUS,TYPSTA,TYPFLO
common ERRCMD,ERRMSG,WRNMSG,INFMSG,NSPERR,NSPERL,NSPSTS
common UNKCMD,RDDSDT,RDCNDT,RCVMSG,PRCVMSG,STYPOU,STYPIN
common PDLIOW,USERDATA,CNTUSR,FILSTD,CMPSTD,CMPSTB
common CCLF1,TYPBOL,TYPRCS,INIFF,INICOR,CURCMD,RSNTXT
common CHANEL,LOGSPC,LOGFOP,LOGBRH,LOGENT,LOGPTH
common PUT1BY,PUT2BY,PUTNBY,ASC2ST,SIX2ST,.TSTRB
common GET1BY,GET2BY,GETNBY,GETTIM,SETQTA
common ALWPRI,PSTATS
IFN FTEXTRA,common USLINK,TRCMSG
notcommon PRGID,PRGABR,LOGFLG,PRINT
notcommon BAUD,MSGSIZ,SNDCNT,RCVCNT,RERRCNT
notcommon SERRCNT,SNDCNT,ELPTIM
;;Make a null USRSAV macro for SAVEAC macro to call. This will
;;prevent it calling the SCAN save routines with the wrong args.
DEFINE USRSAV,<>
DEFINE RETSKP,<JRST .POPJ1> ;REDEFINE MACSYM'S MACRO
>;END OF DEFINE GLOBAL
SUBTTL Compile-Time Variables
DEFINE ND(name,val),<IFNDEF name,<name==val>>
DEFINE XP(name,val),<name==:val>
;Block lengths
ND LN$PDL, ^D300 ;LENGTH OF PUSH DOWN LIST
ND FOPLEN, .FOMAX ;LENGTH OF NON-PRIV FILOP. BLOCK
ND LN$ENT, .RBMAX ;LENGTH OF EXTENDED ENTER BLOCK
ND LN$LKP, .RBMAX ;LENGTH OF EXTENDED LOOKUP BLOCK
ND LN$DAT, ^D100 ;MAX LENGTH OF USER DATA (8-BIT BYTES)
ND MAXSGM,^D1024 ;NUMBER OF BYTES IN MAX DATA SEGMENT
ND MAXMSG,^D5000 ;MAX SIZE MESSAGE WE'LL SEND (BYTES)
MAXMGW==<<MAXMSG+3>/4>+1 ;LENGTH OF SUCH A STRING IN WORDS
ND STRLEN, ^D39 ;MAX STRING WE'LL COPY TO A STRING BLK
STRLNW==<<STRLEN+3>/4>+1 ;LENGTH OF SUCH A STRING IN WORDS
;+1 FOR COUNT WORD
ND SEQLEN,4 ;LENGTH OF A MESSAGE SEQUENCE NUMBER
;I/O Channel Allocations
ND LOGCHN,1 ;THE LOG FILE'S I/O CHANNEL
SUBTTL Macro used to call NSP. (L)UUO
DEFINE CALNSP(function,lstarg,wait<0>,%temp),<
IFB <lstarg>,%temp==NSACH
IFNB <lstarg>,%temp==lstarg
MOVE NSAFN,[EXP wait ! <function>B17 ! 1+%temp-NSAFN]
MOVE NSACH,CHANEL
MOVX T1,NSAFN
NSP. T1,
PURGE %temp
>
;Macro to define a string block, puts the length (words) in the
;right half of the first word, as a string block is supposed to have.
DEFINE STRBLK(length),<
EXP length+1
BLOCK length
>
SUBTTL Matching Definitions for DTS's Parse Macros
;Definitions for the PRINT:xxx switch
PRI.AL==1 ;ALL
PRI.NO==2 ;NONE
PRI.ER==3 ;ERROR
FLAG=:0 ;FLAGS, CONTINUOUS THROUGH ALL CALLS
T1=:1 ;WORK... T1 AND T2 MUST BE 1 & 2
T2=:2
T3=:3 ;AND T3 AND T4 MUST BE 3 & 4
T4=:4 ;FOR COMPATIBILITY WITH SCAN & WILD
P1=:5
P2=:6
N=:7 ;SAME AS IN SCAN
C=:10 ;SAME AS IN SCAN
NSAFN=:11
NSACH=:12
NSAA1=:13
NSAA2=:14
NSAA3=:15
NSALN==5 ;LENGTH OF NSA?? ARGUMENT BLOCK
CX=:16 ;SUPER-TEMP AC FOR LOAD/STOR/ETC
.SAC==CX ; AND ITS ALIAS USED BY MACSYM MACROS
P=:17 ;STACK POINTER
SUBTTL Useful Macros and Initializations
EXTERN .POPJ,.POPJ1
OPDEF PJRST [JRST]
OPDEF CALL [PUSHJ P,]
OPDEF RET [POPJ P,]
DEFINE $XLIST,<
IFE FTLIST,<IFN ..LIST,<XLIST>
..LIST==0
>>
DEFINE $LIST,<
IFE FTLIST,<IFE ..LIST,<LIST>
..LIST==1
>>
..LIST==1 ;INITIALIZE THE $XLIST MACROS
;Macro to build an 8-bit string from a literal text string.
DEFINE BYTE8(string),<
%LEN==0
%WRD==0
IRPC string,<
%WRD==<%WRD_10>+<"string"_4>
%LEN=%LEN+1
IFE %LEN-4,<
EXP %WRD
%WRD==0
%LEN==0
>>
IFN %LEN,<
%WRD==%WRD_<<4-%LEN>*10>
EXP %WRD
>
>
DEFINE ERROR(message,crlf),<
CALL [ SAVEAC <T1,T2,T3,T4>
IFNB <crlf>,<
MOVEI T1,[ASCIZ |message
|]
>
IFB <crlf>,<
MOVEI T1,[ASCIZ |message|]
>
PJRST ERRMSG
]
>;END OF ERROR MACRO
DEFINE WARN(message,crlf),<
CALL [ SAVEAC <T1,T2,T3,T4>
IFNB <crlf>,<
MOVEI T1,[ASCIZ |message
|]
>
IFB <crlf>,<
MOVEI T1,[ASCIZ |message|]
>
PJRST WRNMSG
]
>;END OF WARN MACRO
DEFINE INFO(message,crlf),<
CALL [ SAVEAC <T1,T2,T3,T4>
IFNB <crlf>,<
MOVEI T1,[ASCIZ |message]
|]
>
IFB <crlf>,<
MOVEI T1,[ASCIZ |message|]
>
PJRST INFMSG
]
>;END OF INFO MACRO
DEFINE TRACE(message,crlf),<
IFN FTTRACE,<
CALL [ SAVEAC <T1,T2,T3,T4>
IFNB <crlf>,<
MOVEI T1,[ASCIZ |message]
|]
>
IFB <crlf>,<
MOVEI T1,[ASCIZ |message|]
>
PJRST TRCMSG
]
>;END OF IFN FTTRACE
>;END OF TRACE MACRO
;MACROS TO PUT CODE IN THE LOW OR HIGH SEGMENT
DEFINE $RELOC(A)<
IFNDEF HIORG,HIORG==400000
TWOSEG HIORG
RELOC HIORG
LOCFLG==-1 ;0=LOW SEG
;-1=HIGH SEG
;+1=ABSOLUTE LOW SEGMENT
HILOC==HIORG
LOLOC==0
ABSLOC==0
>;END OF $RELOC
DEFINE $LOW(A)<
IFL LOCFLG,<HILOC==.
LOCFLG==0
RELOC LOLOC>
IFG LOCFLG,<ABSLOC==.
LOCFLG==0
RELOC LOLOC>
>;END OF $LOW
DEFINE $HIGH(A)<
IFE LOCFLG,<LOLOC==.
LOCFLG==-1
RELOC HILOC>
IFG LOCFLG,<ABSLOC==.
LOCFLG==-1
RELOC HILOC>
>;END OF $HIGH
DEFINE $ABS(A)<
IFL LOCFLG,<HILOC==.
LOCFLG==1
LOC ABSLOC>
IFE LOCFLG,<LOLOC==.
LOCFLG==1
LOC ABSLOC>
>;END OF $ABS
SUBTTL DTS/DTR Protocol Definitions
;The DTR Object Type Code
XP OBJDTR,^O77 ;THE DTR OBJECT TYPE
;All test sequences consist of a TEST TYPE and a TEST DESCriptor
; +---------------+---------------+
; | TESTTYPE | TESTDESC |
; +---------------+---------------+
;The TESTTYPE byte is
; 7 6 5 0
; +----------+----------+-----------------------+
; | PRINTOPT | ERRPROPT | TYPE |
; +----------+----------+-----------------------+
;The TestType Codes
XP .TCPRI,200 ;TEST RESULTS TO BE TYPED BY DTR
XP .TCERR,100 ;ERRORS TO BE TYPED BY DTR
XP .TCCON,0 ;CONNECT TEST
XP .TCDAT,1 ;DATA TEST
XP .TCDSC,2 ;DISCONNECT TEST
XP .TCINT,3 ;INTERRUPT TEST
; 4-15 ;RESERVED FOR INTRA-SYSTEM TESTS
; 16-31 ;RESERVED FOR INTER-SYSTEM TESTS
; 32-63 ;RESERVED FOR USER-DEFINED TESTS
XP .TCMAX,3 ;LARGEST KNOWN TEST CODE
;The Error Codes from the DTR
; +----------+------------------+
; | 15 | ERRONEOUS FIELD |
; +----------+------------------+
XP .ECUKT,^D15 ;UNKNOWN TEST CODE
; ERRONEOUS FIELD is the sequence number of field in error
; with TESTTYPE being field number 0
;The Connect Test Types (CONTYPE)
; +---------+----------+
; | CONTYPE | USERDATA |
; +---------+----------+
XP .CCRJN,0 ;CONNECT REJECT, NO DATA
XP .CCACN,1 ;CONNECT ACCEPT, NO DATA
XP .CCRJS,2 ;CONNECT REJECT, STANDARD DATA
XP .CCACS,3 ;CONNECT ACCEPT, STANDARD DATA
XP .CCRJR,4 ;CONNECT REJECT, RETURN DATA
XP .CCACR,5 ;CONNECT ACCEPT, RETURN DATA
XP .CCMAX,5 ;MAX DEFINED VALUE
;The Disconnect Test Types (DISTYPE)
; +---------+----------+
; | DISTYPE | USERDATA |
; +---------+----------+
XP .SCSDN,0 ;SYNCHRONOUS DISCONNECT, NO DATA
XP .SCADN,1 ;ABORT DISCONNECT, NO DATA
XP .SCSDS,2 ;SYNCHRONOUS DISCONNECT, STANDARD DATA
XP .SCADS,3 ;ABORT DISCONNECT, STANDARD DATA
XP .SCSDR,4 ;SYNCHRONOUS DISCONNECT, RETURN DATA
XP .SCADR,5 ;ABORT DISCONNECT, RETURN DATA
XP .SCMAX,5 ;MAX DEFINED VALUE
;The Data Test Types (DATTYPE)
; +---------+-------+--------+------+-----+-----+----+
; | DATTYPE | RFLOW | RQUEUE | RESERVED | MSGLEN |
; +---------+-------+--------+------+-----+-----+----+
XP .DCSNK,0 ;SINK DATA TEST
XP .DCSEQ,1 ;SEQUENCE DATA TEST
XP .DCPAT,2 ;PATTERN DATA TEST
XP .DCECH,3 ;ECHO DATA TEST
; 4-63 ;RESERVED FOR DEC
; 64-255 ;RESERVED FOR THE USER
XP .DCMAX,3 ;MAX FIELD WE HAVE DEFINED
;Flow Control Types
XP .NSFC0,1 ;NO FLOW CONTROL
XP .NSFCS,2 ;SEGMENT FLOW CONTROL
XP .NSFCM,3 ;MESSAGE FLOW CONTROL
XP .FCMAX,3 ;MAX FIELD WE HAVE DEFINED
;The Interrupt Test Types (INTTYPE)
; +---------+--------+------+-----+
; | INTTYPE | RQUEUE | MSGLEN |
; +---------+--------+------+-----+
XP .ICSNK,0 ;SINK INTERRUPT TEST
XP .ICSEQ,1 ;SEQUENCE INTERRUPT TEST
XP .ICPAT,2 ;PATTERN INTERRUPT TEST
XP .ICECH,3 ;ECHO INTERRUPT TEST
XP .ICESQ,4 ;ECHO SEQUENCE INTERRUPT TEST
XP .ICEPT,5 ;ECHO PATTERN INTERRUPT TEST
XP .ICMAX,5 ;MAX FIELD WE HAVE DEFINED
SUBTTL DECnet Standard Parameters
;The REASON values for a Disconnect Initiate or Disconnect Confirm message
..RDX==10 ;SAVE PRESENT RADIX
RADIX 10 ;USE DECIMAL FOR THE REASONS
RSNRBO==0 ;REJECTED BY OBJECT
RSNDBO==0 ;DISCONNECTED BY OBJECT (WHEN RUNNING)
RSNRES==1 ;NO RESOURCES
RSNUNN==2 ;UNRECOGNIZED NODE NAME
RSNRNS==3 ;REMOTE NODE SHUT DOWN
RSNURO==4 ;UNRECOGNIZED OBJECT
RSNIOF==5 ;INVALID OBJECT NAME FORMAT
RSNOTB==6 ;OBJECT TOO BUSY
RSNABM==8 ;ABORT BY MANAGEMENT
RSNABO==9 ;ABORT BY OBJECT
RSNINF==10 ;INVALID NODE NAME FORMAT
RSNLNS==11 ;LOCAL NODE SHUT DOWN
RSNACR==34 ;ACCESS CONTROL REJECTION
RSNRNO==38 ;NO RESPONSE FROM OBJECT
RSNNUR==39 ;NODE UNREACHABLE
RSNNLK==41 ;NO LINK
RSNDSC==42 ;DISCONNECT COMPLETE
RSNIMG==43 ;IMAGE FIELD TOO LONG
RADIX ..RDX ;RESTORE PREVIOUS RADIX
SUBTTL Special Macro for Calling SCAN
;When DTS/DTR is loaded with the user-mode test-bed, it must
;call the scan typout routines with a special call that turns off
;PSI interrupts around the call. SCAN is not re-entrant.
DEFINE CALLSCAN(routine),<
IFE FTUSRMODE,CALL routine
IFN FTUSRMODE,<
CALL [ CALL PSIOFF## ;;DON'T ALLOW PSI INTERRUPTS DURING SCAN
CALL routine
TRNA
AOS (P)
CALLRET PSION##]
>
>
DEFINE PROMPT(msg),<
MOVEI T1,[ASCIZ \msg \]
CALLSCAN .TSTRG##
>
DEFINE REDLIN(proc),<
CALL .CLRBF##
MOVEI T1,0
CALLSCAN .PSCAN##
JFCL ;;PROMPT ALREADY GIVEN
EXT proc
CALLSCAN proc
>
SUBTTL SAVEAC - Save AC List
;SAVEAC is a macro to generate a JSP .SAC,xxx call to an AC saving
;co-routine and to generate the routine also, if necessary. SAVEAC
;generates the routines as literals so that MACRO will compress as
;many as possible. SAVEAC sorts the arguments so that routines which
;save the same ACs will always look the same to MACRO.
;When the there are four or more ACs to be saved, SAVEAC assumes that
;at least two of them will be adjacent and changes from multiple
;PUSHes and POPs to and ADJSP and MOVEMs or, if possible, DMOVEMs for
;efficiency.
;If .SAC is among the ACs being saved, it is saved before the JSP
;.SAC,xxx and then restored in the co-routine literal.
;ACs may be refered to by any currently valid name and in any order.
;A given set of ACs will always be recognized if its literal code has
;been generated before or if it is a special set handled by a system
;routine.
;If an AC is mentioned more than once, it will only be saved/restored
;once.
;Provision is made for detecting standard AC sets which are handled by
;user or system routines. The routines, if defined, must be entered
;with JSP .SAC,xxx. For example, SAVEAC <P1,P2> will call the system
;routine .SAV2 instead of generating local code to do the same thing.
;See SPCMAC below. By redefining the macro USRSAV, the user can
;control the tests made for standard routines.
;The following definition of USRSAV is the default. Redefine it if
;you want. The calls to SPCSAV have two arguments: the routine name
;and a list of ACs saved by that routine.
DEFINE USRSAV,<>
DEFINE SAVEAC(ACS),<
..DONE==0
..SACC==0
..NAC==0
..MASK==0
IRP <ACS>,<
IFG ACS-^D15,<PRINTX ?SAVEAC(ACS) IS ILLEGAL,
PRINTX ?SAVEAC CAN ONLY BE USED ON ACCUMULATORS>
IFE ACS-.SAC,<..SACC==1>
IFN ACS-.SAC,<IFE ..MASK&1B<ACS>,<
..MASK==..MASK!1B<ACS>
..NAC==..NAC+1>>
>
IFE ..SACC,<USRSAV> ;;..DONE SET BY SPCSAV IF IT SUCCEEDS
IFE ..DONE,<
IFLE ..SACC,<JSP .SAC,[>
IFG ..SACC,<CALL [EXCH .SAC,(P)>
IFG ..NAC-3,<DSAVAC>
IFLE ..NAC-3,<IFG ..NAC,<PSAVAC>>
PUSHJ P,(.SAC)
TRNA
AOS -..NAC-..SACC(P)
IFG ..NAC-3,<DRSTAC>
IFLE ..NAC-3,<IFG ..NAC,<PRSTAC>>
IFG ..SACC,<POP P,.SAC>
POPJ P,]
>
PURGE ..NAC,..TNAC,..MASK,..TMSK,..SACC,..NUM,..SMSK,..DONE
>;END OF DEFINE SAVEAC
;Helper macros for SAVEAC
DEFINE SPCSAV(ADDR,ACS),<
IFE ..DONE,<
..SMSK==0
IRP <ACS>,<..SMSK==..SMSK!1B<ACS>>
IFE ..MASK-..SMSK,<JSP .SAC,ADDR
..DONE==1>
>
>;END OF SPCSAV
DEFINE DSAVAC,<
IFG ..NAC,<ADJSP P,..NAC>
..TMSK==..MASK
..TNAC==..NAC-1
REPEAT ..NAC,<
IFN ..TMSK,<
..NUM==^L<..TMSK>
..TMSK==..TMSK-1B<..NUM>
IFE ..TMSK & 1B<..NUM+1>,<
MOVEM ..NUM,-..TNAC(P)
..TNAC==..TNAC-1>
IFN ..TMSK & 1B<..NUM+1>,<
DMOVEM ..NUM,-..TNAC(P)
..TNAC==..TNAC-2
..TMSK==..TMSK-1B<..NUM+1>>
>>
>;END OF DEFINE DSAVAC
DEFINE DRSTAC,<
..TMSK==..MASK
..TNAC==..NAC-1
REPEAT ..NAC,<
IFN ..TMSK,<
..NUM==^L<..TMSK>
..TMSK==..TMSK-1B<..NUM>
IFE ..TMSK & 1B<..NUM+1>,<
MOVE ..NUM,-..TNAC(P)
..TNAC==..TNAC-1>
IFN ..TMSK & 1B<..NUM+1>,<
DMOVE ..NUM,-..TNAC(P)
..TNAC==..TNAC-2
..TMSK==..TMSK-1B<..NUM+1>>
>>
IFG ..NAC,<ADJSP P,-..NAC>
>;END OF DEFINE DRSTAC
DEFINE PSAVAC,<
..TMSK==..MASK
REPEAT ..NAC,<
..NUM==^L<..TMSK>
..TMSK==..TMSK-1B<..NUM>
PUSH P,..NUM
>
>
DEFINE PRSTAC,<
..NUM==^D15
REPEAT ^D16,<
IFN ..MASK & 1B<..NUM>,<
POP P,..NUM>
..NUM==..NUM-1
>
>
SUBTTL End of Universal
END