mirror of
https://github.com/PDP-10/its.git
synced 2026-01-26 12:12:12 +00:00
21942 lines
572 KiB
Plaintext
21942 lines
572 KiB
Plaintext
;-*-MIDAS-*-
|
||
;;; Copyright (c) 1999 Massachusetts Institute of Technology
|
||
;;; See the COPYING file at the top-level directory of this project.
|
||
|
||
.SYMTAB 12003.,5500.
|
||
TITLE ITS
|
||
|
||
SUBTTL DEFINITIONS
|
||
|
||
.NSTGWD .SEE PATB ;NO STORAGE WORDS ALLOWED UNTIL PATB
|
||
|
||
IF1 [ PRINTX \MACHINE NAME = \
|
||
;WELL-KNOWN MACHINE NAMES ARE:
|
||
; AIKA AI LAB KA10 (R.I.P.)
|
||
; MLKA MATHLAB KA10 (R.I.P.)
|
||
; DM DYNAMIC MODELING KA10 (R.I.P.)
|
||
; MC Mail Computer KS10
|
||
; AI AI Lab KS10
|
||
; MX The ex-MC KL10
|
||
; ML Math Lab KS10
|
||
; MD Mostly Development KS10
|
||
; SI Stacken ITS KS10
|
||
; FU Australian KS10
|
||
; PM PandaMonium KS10
|
||
; DX DigeX KS10
|
||
; NX Non-eXistent KS10 (KLH10)
|
||
;THE FILE "CONFIG" HAS ASSEMBLY SWITCHES AS A FUNCTION OF MACHINE.
|
||
|
||
.TTYMAC A
|
||
IFN ASCII/A/&ASCII/ /,.FATAL USE UPPER CASE!
|
||
DEFINE MCOND X ;0 IFF THIS IS MACHINE X.
|
||
<IFSN X,A,[1]>,TERMIN
|
||
DEFINE MNAME X ;USED TO SUBSTITUTE IN THIS MACHINE'S NAME.
|
||
X!!A!!TERMIN
|
||
FOO==.TTYFLG ;MAKE ERR FILE LOOK NICE
|
||
.TTYFLG==1
|
||
PRINTX/A
|
||
/
|
||
.TTYFLG==FOO
|
||
TERMIN ];IF1
|
||
|
||
IFNDEF PCLSW,PCLSW==1 ;1 => ASSEMBLE PCLSR TEST FEATURE
|
||
IFNDEF TT11BY,TT11BY==8 ;PDP11-TV OUTPUT BUFFER BYTE SIZE.
|
||
.MLLIT==1 ;MULTI-LINE LITERAL MODE
|
||
ASTIME==.OP .OPER+@,0,.RTIME ;GET ASSEMBLY TIME AND DATE IN SIXBIT.
|
||
ASDATE==.OP .OPER+@,0,.RDATE ;RH OF INSN MUST BE 0, SO MIDAS WILL PUT IN PROPER AC FLD.
|
||
|
||
;AC DEFS
|
||
|
||
A=1
|
||
B=2
|
||
C=3
|
||
D=4
|
||
E=5
|
||
TT=6
|
||
I=7
|
||
Q=10
|
||
J=11
|
||
R=12
|
||
W=13
|
||
H=14
|
||
P=15 ;DO NOT CHANGE! ;PDL POINTER
|
||
T=16 ;"
|
||
U=17 ;" ;USER INDEX
|
||
|
||
.XCREF A,B,C,D,E,TT,I,Q,J,R,W,H,P,T,U
|
||
|
||
IF1 EXPUNGE APR,OCT,DEC ;FOR NEW CALENDAR HACK
|
||
|
||
NULBLK==4 ;NUMBER OF LOCKED SWITCH BLKS IN USR VARIABLES
|
||
;USES 2 WDS OF USER VAR PER
|
||
|
||
NPVSEC==30. ;NUMBER OF SECONDS A USER IS ALLOWED TO BE IN THE PRIVILEDGED SWAPPING CLASS
|
||
IF2 LIOBLK==<USRSTG+LUBLK*MAXJ+1777>_-10. ;LOWEST BLOCK NEVER TO BE SHUFFLED
|
||
;ALSO MAX # OF BLOCKS SYS JOB MAY HAVE
|
||
IF2 MAXJ==<LIOBLK_10.-USRSTG>/LUBLK ;ROUND UP TO ACTUAL MAX #JOBS
|
||
|
||
DIRMAP==1 ;ENABLE DIRECT MAPPING OF HIGH HALF
|
||
;I DON'T THINK IT WORKS TO TURN THIS OFF.
|
||
NIOCHN==20 ;NUMBER OF I/O CHANNELS PER USER
|
||
|
||
DEFINE $INSRT $%$%$% ;PRINTX MESSAGE WHEN FILE GETS INSERTED
|
||
.INSRT $%$%$% >
|
||
PRINTX \ ==> INSERTED: \
|
||
.TYO6 .IFNM1
|
||
.TYO 40
|
||
.TYO6 .IFNM2
|
||
PRINTX \
|
||
\
|
||
TERMIN
|
||
|
||
;;; CONFIG uses this macro...
|
||
DEFINE CONC A,B
|
||
A!B!TERMIN
|
||
|
||
$INSRT CONFIG ;CONFIGURATION SWITCHES FOR ALL KNOWN MACHINES
|
||
|
||
$INSRT BITS ;DEFINITIONS OF MANY BIT NAMES
|
||
|
||
;IN BADBTS => CLASS 2 OR 1 INTERRUPT ;IN VBDBTS=> CLASS 1 INTERRUPT
|
||
VBDBTS==%PIB42\%PIVAL\%PIBRK\%PIC.Z\%PI1PR\%PITRP\%PIDCL
|
||
BADBTS==VBDBTS\%PIMPV\%PIIOC\%PIILO\%PIMAR\%PIDIS\%PIOOB\%PILOS\%PIFET\%PIWRO\%PIPAR\%PITTY\%PIPDL\%PINXI
|
||
|
||
UUOMIN==40000,, ;SMALLEST NUM THAT COULD BE A SYSTEM CALL
|
||
UUOMAX==50000,, ;ONE GREATER THAN LARGEST NUM "
|
||
UIOT=UUOMAX ;USE FOR USER I/O INST TRAP
|
||
|
||
;MAX DYN ALLOC ALLOC IO BUFFERS
|
||
MXIOB==100 ;MAX POSSIBLE
|
||
|
||
SIOMT==50 ;MAX SIZE TRANSLATION TABLE
|
||
|
||
LUPDL==50 ;LENGTH USER PDL MUST BE >= 40 FOR 2311 GC
|
||
LUIOP==20 ;LENGTH OF USER IO PDL
|
||
CPDLL==40 ;LENGTH CLOCK CHANNEL PDL
|
||
LUTCP==40 ;LENGTH UTC PDL (NETWORKS AND DISKS)
|
||
LSYSP==100 ;SYSTEM JOB PDL
|
||
LTTYP==40 ;LENGTH OF TTY (INTERRUPT LEVEL) PDL
|
||
|
||
DMNSZ==20 ;# ENTRIES IN DEMON BUFFER (DMNBF)
|
||
|
||
MXCZS==5 ;MAX NUMBER ^Z'S PER CLOCK BREAK
|
||
|
||
SCLKI==30. ;60'THS PER SLOW CLOCK
|
||
VSCLKI==2*60.*60. ;60'THS PER VERY SLOW CLOCK TICK
|
||
MXOPT==8. ;SLOW CLOCK MAX UT OP CAN TAKE
|
||
NINFP==8. .SEE UFIN ;MAX # OF DIRECT INFERIORS A PROCEDURE MAY HAVE
|
||
|
||
SSCHDB==100 ;LENGTH OF SCHEDULER HISTORY BUFFER
|
||
|
||
SPD==60.*60.*24. ;# SECS IN A DAY (FITS IN A HALFWORD)
|
||
PDUPS==60. ;# PDCLK INCREMENTS/SEC
|
||
|
||
OPNCOM==410300 ;COMMAND FIELD IN LH OF FIRST OPEN WORD
|
||
|
||
IFN 340P,N340PB==10. ;# EXEC PGS USED FOR 340 DATA MUST BE EVEN
|
||
IFN N11TYS,[
|
||
NTTPG==6 ;# EXEC PGS FOR PDP11 TV TTYS.
|
||
NTVBP==11 ;THESE PAGES ADDRESS THE WHOLE VIDEO BUFFER MEMORY ADDRESS
|
||
;SPACE OF THE TV 11. THE LAST OF THESE ADDRESSES THE
|
||
;TV CONSOLE REGISTER
|
||
]
|
||
NUVPG==256. ;NUMBER OF VIRTUAL PAGES PER USER. SIZE OF PAGE TABLE VARS.
|
||
;DON'T TRY TO CHANGE THIS.
|
||
;CIRCULAR PAGE LINK FORM
|
||
;2.9=0
|
||
;1.1-1.8 PAGE #
|
||
;2.8-1.9 USER #
|
||
;2.9=1
|
||
;2.8=0 2.7-1.1 LINK TO MMP TABLE
|
||
;2.8=1 2.7-1.1 LINK TO MEM PNT TABLE
|
||
;EXCEPT 2.9-1.1=777777 => ABSOLUTE PAGE, NOT LINKED
|
||
|
||
SUBTTL GOBBLE TTYTYP FILE
|
||
|
||
IFN XGP\N11TYS,[IFE TEN11P,[
|
||
.ERR XGP OR N11TYS WITHOUT TEN11P
|
||
N11TYS==0
|
||
XGP==0
|
||
]
|
||
]
|
||
IFNDEF UNSPLP,UNSPLP==<TTLPTP+OLPTP+NLPTP>*DEMON*<1-TPLP>
|
||
;1 IF THE "UNSPOO" PROGRAM DOES LPT SPOOLING.
|
||
|
||
IFNDEF TSYSM,[
|
||
MNAME PRINTX \NO PARAMS KNOWN FOR , MACHINE.
|
||
\
|
||
.INSRT TTY:
|
||
]
|
||
|
||
IF2,[
|
||
;TTY LINES DEFINITIONS
|
||
|
||
;MACRO WHICH RETURNS THE %TY BIT FOR THE CONTROLLER ACCORDING TO THE LINE NUMBER
|
||
|
||
DEFINE CNTRLR <N>
|
||
IRPS F,,[0 NFKSTY NFETY NFNTY NFNVTY NFDZTY NFDPTY NFMTY NFDLTY NFSTTY NF11TY
|
||
]NT,,[NOTYS NKSTYS NETYS NNTYS NNVTTS NDZTYS NDPTYS NMTYS NDLTYS NSTTYS N11TYS
|
||
]FG,,[%TYOTY %TYKST %TYETY %TYNTY %TYNVA %TYDZT %TYDPK %TYMTY %TYDL %TYSTY %TY11T]
|
||
IFGE <N>-F,[IFL <N>-<F+NT>,[FG]]TERMIN TERMIN
|
||
|
||
;MACRO WHICH RETURNS $TTISP, $TTOSP BITS GIVEN BAUD RATES
|
||
|
||
DEFINE SPEEDC <IBAUD,OBAUD>
|
||
<IFB IBAUD,[SPEED1 OBAUD]IFNB IBAUD,[SPEED1 IBAUD]>*%TTISP+<SPEED1 OBAUD>*%TTOSP!TERMIN
|
||
|
||
DEFINE SPEED1 <BAUD>
|
||
IRPS BD,,[0 600 110 150 300 1200 1800 2400 4800 9600 25K 40K 50K 80K
|
||
]CD,,[0 1 2 3 4 5 6 7 10 11 12 13 14 15 ]
|
||
IFSE BAUD,BD,[CD] TERMIN TERMIN
|
||
|
||
;KEYWORD PARAMETERS TO TTY DEFINITION MACROS
|
||
; FOR OVER-RIDING DEFAULTS
|
||
;SPEED NUMBER OF BAUDS OUTPUT
|
||
;ISPEED NUMBER OF BAUDS INPUT IF DIFFERENT
|
||
;TT LH(TTTYP) IN ADDITION TO SPEED CODE
|
||
;TY RH(TTYTYP) IN ADDITION TO CONTROLLER BIT
|
||
;TO LH(TTYOPT) IN ADDITION TO USUAL CODES FOR TERMINAL TYPE
|
||
;TP RH(TTYOPT) IN ADDITION TO PAD CODES
|
||
;TCT TCTYP
|
||
;HOR SCREEN WIDTH
|
||
;VER SCREEN HEIGHT
|
||
;ROL LINES PER GLITCH WHEN SCROLLING
|
||
|
||
;DEFINE TTY AS PRINTING.
|
||
;IF SPEED IS 110, ASSUME TTY IS TELETYPE,
|
||
;MEANING CAN'T BS, STANDARDIZE ALTMODES.
|
||
;IF KA10 CONSOLE TTY OR TK10 TTY, NEED PARITY
|
||
DEFINE TTDPRT N,+SPEED=300,ISPEED=,TT=0,TY=0,TO=0,TP=%TPORS,TCT=%TNPRT,SMARTS=0
|
||
T!N!$SMT==SMARTS,,
|
||
T!N!$HOR==80.-IFE 110-SPEED,8
|
||
T!N!$VER==MOVE
|
||
T!N!$OPT==TO+%TOOVR+%TOALT+IFN 110-SPEED,[%TOMVB+%TOLWR-%TOALT],,<1+IFE 300-SPEED,[IFE TY&<%TYDIL\%TYRLM>,[3]]>*%TPPCR+TP
|
||
T!N!$TYP==TT+<SPEEDC ISPEED,SPEED>\<IFE N,[IFN NOTYS,[%TTPAR]]>\<IFGE N-NFNTY,[IFL N-<NFNTY+NNTYS>,[%TTPAR]]>,,TY+<CNTRLR N>
|
||
T!N!$TCT==TCT
|
||
T!N!$ROL==1
|
||
TERMIN
|
||
|
||
;DEFINE TTY AS MEMOREX
|
||
DEFINE TTDMRX N,+SPEED=600,ISPEED=,TT=0,TY=0,TO=0,TP=%TPORS,HOR=120.,SMARTS=0
|
||
T!N!$SMT==SMARTS,,
|
||
T!N!$HOR==HOR
|
||
T!N!$VER==MOVE
|
||
T!N!$OPT==TO+%TOOVR+%TOMVB+%TOLWR,,4*%TPPLF+6*%TPPCR+TP
|
||
T!N!$TYP==TT+<SPEEDC ISPEED,SPEED>,,TY+<CNTRLR N>
|
||
T!N!$TCT==%TNMEM
|
||
T!N!$ROL==1
|
||
TERMIN
|
||
|
||
;DEFINE TTY AS TERMINET.
|
||
DEFINE TTDTRM N,+SPEED=1200,ISPEED=,TT=0,TY=0,TO=0,TP=%TPORS,HOR=120.,SMARTS=0
|
||
T!N!$SMT==SMARTS,,
|
||
T!N!$HOR==HOR
|
||
T!N!$VER==MOVE
|
||
T!N!$OPT==TO+%TOOVR+%TOMVB+%TOLWR,,5*%TPPLF+TP
|
||
T!N!$TYP==TT+<SPEEDC ISPEED,SPEED>,,TY+<CNTRLR N>
|
||
T!N!$TCT==%TNTRM
|
||
T!N!$ROL==1
|
||
TERMIN
|
||
|
||
;DEFINE TTY AS A LPT.
|
||
DEFINE TTDLPT N,+SPEED=9600,ISPEED=,TT=0,TY=0,TO=0,TP=0,HOR=200.,TCT=%TNPRT,SMARTS=0
|
||
T!N!$SMT==SMARTS,,
|
||
T!N!$HOR==HOR
|
||
T!N!$VER==MOVE
|
||
T!N!$OPT==TO+%TOMVB+%TOOVR,,TP
|
||
T!N!$TYP==%TTDDI+TT+<SPEEDC ISPEED,SPEED>,,TY+<CNTRLR N>
|
||
T!N!$TCT==TCT
|
||
T!N!$ROL==1
|
||
TERMIN
|
||
|
||
;DEFINE TTY AS AN LA36 DECWRITER.
|
||
DEFINE TTDLA36 N,+SPEED=300,ISPEED=,TT=0,TY=0,TO=0,TP=%TPORS,HOR=132.,TCT=%TNPRT,SMARTS=0
|
||
T!N!$SMT==SMARTS,,
|
||
T!N!$HOR==HOR
|
||
T!N!$VER==MOVE
|
||
T!N!$OPT==TO+%TOMVB+%TOOVR+%TOLWR,,TP
|
||
T!N!$TYP==TT+<SPEEDC ISPEED,SPEED>,,TY+<CNTRLR N>
|
||
T!N!$TCT==TCT
|
||
T!N!$ROL==1
|
||
TERMIN
|
||
|
||
;DEFINE TTY AS IMLAC. (RUNNING SOFTWARE-TTY PROGRAM)
|
||
DEFINE TTDIML N,+SPEED=50K,ISPEED=25K,TT=0,TY=0,TO=0,TP=0,HOR=90.,VER=44.,TCT=%TNSFW,ROL=10.,SMARTS=%TQIM1
|
||
T!N!$SMT==SMARTS,,
|
||
T!N!$HOR==HOR
|
||
T!N!$VER==VER
|
||
T!N!$OPT==TO+%TOOVR+%TOLWR+%TOMVB+%TOMVU+%TOERS+%TOLID+%TOCID,,TP
|
||
T!N!$TYP==%TTDDI+TT+<SPEEDC ISPEED,SPEED>,,TY+<CNTRLR N>
|
||
T!N!$TCT==TCT
|
||
T!N!$ROL==ROL
|
||
TERMIN
|
||
|
||
;DEFINE TTY AS VT52
|
||
DEFINE TTDVT N,+SPEED=9600,ISPEED=,TT=0,TY=0,TO=0,TP=%TPORS,HOR=80.,VER=24.,TCT=%TNESC,ROL=1,SMARTS=0
|
||
T!N!$SMT==SMARTS,,
|
||
T!N!$HOR==HOR
|
||
T!N!$VER==VER
|
||
T!N!$OPT==TO+%TOMVU+%TOMVB+%TOLWR+%TOERS,,TP+%TPPTB*<IFE SPEED-9600,[1] .ELSE [3]>
|
||
;DIRECT POSITIONING LOSES AT 9600
|
||
T!N!$TYP==TT+<SPEEDC ISPEED,SPEED>,,TY+<CNTRLR N>
|
||
T!N!$TCT==TCT
|
||
T!N!$ROL==ROL
|
||
TERMIN
|
||
|
||
;DEFINE TTY AS H19
|
||
DEFINE TTDH19 N,+SPEED=9600,ISPEED=,TT=0,TY=0,TO=0,TP=%TPORS,HOR=80.,VER=24.,TCT=%TNH19,ROL=1,SMARTS=0
|
||
T!N!$SMT==SMARTS,,
|
||
T!N!$HOR==HOR
|
||
T!N!$VER==VER
|
||
T!N!$OPT==TO+%TOMVU+%TOMVB+%TOLWR+%TOERS+%TOLID+%TOCID,,TP+%TPPTB*3
|
||
T!N!$TYP==TT+<SPEEDC ISPEED,SPEED>,,TY+<CNTRLR N>
|
||
T!N!$TCT==TCT
|
||
T!N!$ROL==ROL
|
||
TERMIN
|
||
|
||
;DEFINE TTY AS AAA
|
||
DEFINE TTDAAA N,+SPEED=9600,ISPEED=,TT=0,TY=0,TO=0,TP=%TPORS+%TPMTA,HOR=80.,VER=48.,TCT=%TNAAA,ROL=1,SMARTS=0
|
||
T!N!$SMT==SMARTS,,
|
||
T!N!$HOR==HOR
|
||
T!N!$VER==VER
|
||
T!N!$OPT==TO+%TOMVU+%TOMVB+%TOLWR+%TOERS+%TOLID+%TOCID,,TP+%TPPTB*2
|
||
T!N!$TYP==TT+<SPEEDC ISPEED,SPEED>,,TY+<CNTRLR N>
|
||
T!N!$TCT==TCT
|
||
T!N!$ROL==ROL
|
||
TERMIN
|
||
|
||
;DEFINE TTY AS C100
|
||
DEFINE TTDC100 N,+SPEED=9600,ISPEED=,TT=0,TY=0,TO=0,TP=%TPORS,HOR=79.,VER=24.,TCT=%TNHDS,ROL=1,SMARTS=0
|
||
T!N!$SMT==SMARTS,,
|
||
T!N!$HOR==HOR
|
||
T!N!$VER==VER
|
||
T!N!$OPT==TO+%TOMVU+%TOMVB+%TOLWR+%TOERS+%TOLID+%TOCID,,TP+%TPPTB*3+<IFG SPEED-1200,%TPPCR>
|
||
T!N!$TYP==TT+<SPEEDC ISPEED,SPEED>,,TY+<CNTRLR N>
|
||
T!N!$TCT==TCT
|
||
T!N!$ROL==ROL
|
||
TERMIN
|
||
|
||
;DEFINE TTY AS TEKTRONIX.
|
||
DEFINE TTDTEK N,+SPEED=1200,ISPEED=,TT=0,TY=0,TO=0,TP=%TPORS,TCT=%TNTEK,HOR=73.,VER=35.,SMARTS=0
|
||
T!N!$SMT==SMARTS,,
|
||
T!N!$HOR==HOR
|
||
T!N!$VER==VER
|
||
T!N!$OPT==TO+%TOMVU+%TOOVR+%TOMVB+%TOLWR+%TOMOR,,TP
|
||
T!N!$TYP==TT+<SPEEDC ISPEED,SPEED>,,TY+<CNTRLR N>
|
||
T!N!$TCT==TCT
|
||
T!N!$ROL==0
|
||
TERMIN
|
||
|
||
;DEFINE TTY AS A LOSING DATAPOINT
|
||
DEFINE TTDLSR N,+SPEED=2400,ISPEED=,TT=0,TY=0,TO=0,TP=%TPORS,SMARTS=0
|
||
T!N!$SMT==SMARTS,,
|
||
T!N!$TCT==%TNODP
|
||
T!N!$HOR==71.-IFN MCOND AIKA,1 ;OTHER DATAPOINTS HAVE SHORTER SCREENS.
|
||
T!N!$VER==25.
|
||
T!N!$OPT==TO+%TOMVB+%TOMVU+%TOERS,,4*%TPPCR+TP
|
||
T!N!$TYP==TT+<SPEEDC ISPEED,SPEED>,,TY+<CNTRLR N>
|
||
T!N!$ROL==1
|
||
TERMIN
|
||
|
||
;DEFINE TTY AS DATAPOINT.
|
||
DEFINE TTDDPT N,+SPEED=2400,ISPEED=,TT=0,TY=0,TO=0,TP=%TPORS,HOR=[72.-IFN MCOND AIKA,[1]],SMARTS=0
|
||
T!N!$SMT==SMARTS,,
|
||
T!N!$TCT==%TNDP
|
||
T!N!$HOR==HOR ;OTHER DATAPOINTS HAVE SHORTER SCREENS.
|
||
T!N!$VER==25.
|
||
T!N!$OPT==TO+%TOMVB+%TOMVU+%TOERS,,4*%TPPCR+TP
|
||
T!N!$TYP==TT+<SPEEDC ISPEED,SPEED>,,TY+<CNTRLR N>
|
||
T!N!$ROL==1
|
||
TERMIN
|
||
|
||
;DEFINE TTY AS A TELERAY 1061
|
||
DEFINE TTDRAY N,+SPEED=9600,ISPEED=,TT=0,TY=0,TO=0,TP=%TPORS,HOR=80.,SMARTS=0
|
||
T!N!$SMT==SMARTS,,
|
||
T!N!$TCT==%TNRAY
|
||
T!N!$HOR==HOR
|
||
T!N!$VER==24.
|
||
T!N!$OPT==TO+%TOMVU+%TOMVB+%TOERS+%TOLWR+%TOLID+%TOCID,,3*%TPPTB+TP
|
||
T!N!$TYP==TT+<SPEEDC ISPEED,SPEED>,,TY+<CNTRLR N>
|
||
T!N!$ROL==1
|
||
TERMIN
|
||
|
||
;DEFINE A TTY THAT IS A GT40.
|
||
DEFINE TTDGT40 N,+SPEED=4800,ISPEED=,TT=0,TY=0,TO=0,TP=%TPORS,TCT=%TNDP,HOR=72.,VER=32.,ROL=1,SMARTS=0
|
||
T!N!$SMT==SMARTS,,
|
||
T!N!$HOR==HOR
|
||
T!N!$VER==VER
|
||
T!N!$OPT==TO+%TOMVB+%TOERS+%TOMVU+%TOOVR+%TOLWR,,TP
|
||
T!N!$TYP==TT+<SPEEDC ISPEED,SPEED>,,TY+<CNTRLR N>
|
||
T!N!$TCT==TCT
|
||
T!N!$ROL==ROL
|
||
TERMIN
|
||
|
||
;DEFINE A TTY THAT IS A LINE TO A PDP11.
|
||
DEFINE TTD11 N,+SPEED=4800,ISPEED=,TT=0,TY=0,TO=0,TP=0,TCT=%TNPRT,HOR=72.,VER=MOVE,ROL=1,SMARTS=0
|
||
T!N!$SMT==SMARTS,,
|
||
T!N!$HOR==HOR
|
||
T!N!$VER==VER
|
||
T!N!$OPT==TO+%TOMVB+%TOOVR+%TOALT,,TP
|
||
T!N!$TYP==TT+%TTDDI+<SPEEDC ISPEED,SPEED>,,TY+<CNTRLR N>
|
||
T!N!$TCT==TCT
|
||
T!N!$ROL==ROL
|
||
TERMIN
|
||
|
||
;DEFINE A TTY THAT IS RANDOM.
|
||
DEFINE TTDRAN N,+SPEED=FOO.,ISPEED=,TT=0,TY=0,TO=FOO.,TP=FOO.,TCT=FOO.,HOR=FOO.,VER=FOO.,ROL=FOO.,SMARTS=0
|
||
T!N!$SMT==SMARTS,,
|
||
T!N!$HOR==HOR
|
||
T!N!$VER==VER
|
||
T!N!$OPT==TO,,TP
|
||
T!N!$TYP==TT+<SPEEDC ISPEED,SPEED>,,TY+<CNTRLR N>
|
||
T!N!$TCT==TCT
|
||
T!N!$ROL==ROL
|
||
TERMIN
|
||
|
||
;DATAMEDIA
|
||
DEFINE TTDDTM N,+SPEED=4800,ISPEED=,TT=0,TY=0,TO=0,TP=%TPORS+3*%TPPCR,HOR=80.,VER=24.
|
||
T!N!$SMT==0
|
||
T!N!$HOR==HOR
|
||
T!N!$VER==VER
|
||
T!N!$OPT==TO+%TOMVB+%TOERS+%TOMVU+%TOLWR+%TOLID+%TOCID,,TP
|
||
T!N!$TYP==TT+<SPEEDC ISPEED,SPEED>,,TY+<CNTRLR N>
|
||
T!N!$TCT==%TNDTM
|
||
T!N!$ROL==1
|
||
TERMIN
|
||
|
||
;DEFINE A PDP11 TV COMMUNICATING VIA TEN-11 INTERFACE. NO OPTIONS.
|
||
DEFINE TTDTV N
|
||
T!N!$SMT==%TQGRF+%TQVIR+%TQREC+%TQXOR+<.DPB 14,<.BP %TQHGT>>+<.DPB 6,<.BP %TQWID>>,,%TRSCN
|
||
T!N!$HOR==96.
|
||
T!N!$VER==45
|
||
T!N!$OPT==%TOMVB+%TOMVU+%TOERS+%TOSAI+%TOLWR+%TOOVR+%TOFCI+%TOLID+%TOCID,,%TP11T+%TPRSC
|
||
T!N!$TYP==%TTLCL+<SPEEDC 9600,9600>,,%TY11T
|
||
T!N!$TCT==%TNTV
|
||
T!N!$ROL==4
|
||
TERMIN
|
||
|
||
;DEFINE A PDP11 TV COMMUNICATING AS A SOFTWARE TTY. TYPICALLY A GRINNELL (512x512).
|
||
DEFINE TTDGRN N,+SPEED=9600,ISPEED=,TT=0,TY=0,TO=0,TP=%TPCBS+%TPORS,HOR=86.,VER=50.,TCT=%TNSFW,ROL=0,SMARTS=0
|
||
T!N!$SMT==SMARTS,,
|
||
T!N!$HOR==HOR
|
||
T!N!$VER==VER
|
||
T!N!$OPT==TO+%TOMVB+%TOMVU+%TOERS+%TOSAI+%TOLWR+%TOOVR+%TOFCI,,TP
|
||
T!N!$TYP==TT+<SPEEDC ISPEED,SPEED>,,TY+<CNTRLR N>
|
||
T!N!$TCT==TCT
|
||
T!N!$ROL==ROL
|
||
TERMIN
|
||
|
||
;DEFINE AN STY LINE. NO OPTIONS.
|
||
DEFINE TTDSTY N
|
||
T!N!$SMT==0,,
|
||
T!N!$HOR==81.
|
||
T!N!$VER==MOVE
|
||
T!N!$OPT==%TOMVB+%TOOVR+%TOLWR+%TORAW,,%TPORS
|
||
T!N!$TYP==%TYSTY
|
||
T!N!$TCT==%TNPRT
|
||
T!N!$ROL==1
|
||
TERMIN
|
||
|
||
DEFINE MCONDX MCHN
|
||
IFE MCOND MCHN,TERMIN
|
||
|
||
;;; THE NEXT TWO MACROS CAUSE TTYTYP FILE TO BE INSERTABLE BY BOTH
|
||
;;; PDP-10 AND PDP-11 PROGRAMS.
|
||
|
||
DEFINE .ENDC
|
||
TERMIN
|
||
|
||
DEFINE .ENDR
|
||
TERMIN
|
||
|
||
.CRFOFF
|
||
$INSRT TTYTYP
|
||
.CRFON
|
||
EXPUNGE TTDPRT,TTDTRM,TTDDPT,TTDMRX,TTDGT40,TTD11,TTDRAN,TTDGRN,TTDVT,TTDTEK
|
||
EXPUNGE TTDTV,TTD2741,TTDSTY,TTDLPT,TTDIML,TTDLA36,TTDLSR
|
||
EXPUNGE SPEEDC,SPEED1,CNTRLR,MCONDX,.ENDC,.ENDR
|
||
] ;END OF IF2
|
||
|
||
SUBTTL BUG MACROLOGY
|
||
|
||
;Macro for reporting a bug or other interesting condition
|
||
;Use this in place of JRST 4, especially when condition is automatically
|
||
;recoverable or wants explanation typed out for benefit of loser.
|
||
;
|
||
;First argument is one of the following symbols:
|
||
; INFO - just print on the system console
|
||
; CHECK - same as INFO unless SYSDBG non-zero or buffer full, then same as PAUSE
|
||
; PAUSE - print message, go to DDT, allow alt-P
|
||
; HALT - print message, go to DDT, do not allow alt-P
|
||
; DDT - PAUSE but not because of a bug (shorter message), allow alt-P
|
||
; AWFUL - same as HALT but usable when there is no pdl in P
|
||
; Should there be a combination of AWFUL and PAUSE?
|
||
; That would require restoring P upon attempt to continue
|
||
;Arguments after the first are either strings to be printed
|
||
;(enclose in brackets), or format,value pairs. Value is any
|
||
;address; indexing and indirection are allowed, however registers
|
||
;P and TT may not be referenced.
|
||
;A format is one of the following symbols:
|
||
; OCT - octal number, with ,, if bits on in the left halt
|
||
; DEC - decimal number
|
||
; THOU - decimal number with commas every three digits
|
||
; CR - print a carriage return (unfortunately swallows and ignores an arg)
|
||
; SIXBIT - sixbit word
|
||
; ASCIZ - asciz string
|
||
;Undefined formats will be taken as strings to be printed.
|
||
;The maximum number of value arguments is 6
|
||
;A space is printed after each formatted value. A space is also
|
||
;printed after the last string and before any additional formatted values.
|
||
;
|
||
;With no arguments, BUG may be used in place of JRST 4,.
|
||
;It uses the same amount of storage but has the advantage of going
|
||
;straight to DDT. In this case there won't be a specific message
|
||
;about what the bug was, of course.
|
||
;
|
||
;Note that the BUG macro always generates one word of code, and hence
|
||
;may be skipped over.
|
||
;All registers are preserved.
|
||
;P must point at a valid PDL.
|
||
;
|
||
;Due to Midas inadequacy, the BUG macro may not be used from inside
|
||
;a literal. You will get an error (label inside brackets) if you try it.
|
||
;
|
||
;Example:
|
||
; BUG PAUSE,[DSK: DRIVE NUMBER ],OCT,Q,[IS OFF-LINE.]
|
||
;
|
||
DEFINE BUG FLAVOR,ARGS/
|
||
IFNB [FLAVOR][
|
||
;Make sure we are not in a literal, since cannot get value of "."
|
||
BUGBUG: EXPUNGE BUGBUG
|
||
;Generate call to appropriate flavour of subroutine
|
||
ZZ==0
|
||
IRPS FLA,,[INFO,CHECK,PAUSE,HALT,DDT]SUB,,[BUGINF,BUGCHK,BUGPSE,BUGHLT,BUGDDT]
|
||
IFSE [FLAVOR]FLA,[
|
||
PUSHJ P,SUB
|
||
ZZ==1 ]
|
||
TERMIN
|
||
IFSE [FLAVOR]AWFUL, JSR BUGAWF
|
||
.ELSE IFE ZZ, .ERR "FLAVOR" UNKNOWN FLAVOUR OF BUG
|
||
|
||
BUGB==0 ;Initialize formatting bits
|
||
|
||
;Initialize remote macros
|
||
DEFINE BUGMC1 *ZZ001*ZZ002*ZZ003*
|
||
ZZ001!ZZ002!ZZ003!TERMIN
|
||
|
||
DEFINE BUGMC4 ZZ001
|
||
ZZ001
|
||
TERMIN
|
||
|
||
BUGN==0 ;number of accumulated arguments
|
||
BUGNN==0 ;total number of arguments
|
||
BUGF==0 ;next thing not argument
|
||
IRP ARG,,[ARGS]
|
||
;; Processing "ARG"
|
||
IFN BUGF,[ ;Address of word to print
|
||
BUGN==BUGN+1
|
||
BUGNN==BUGNN+1
|
||
BUGMC5 [ARG]
|
||
BUGF==0
|
||
]
|
||
.ELSE [ ;Name of format in which to print?
|
||
IRPS FMT,,OCT DEC THOU CR UNUSED5 SIXBIT ASCIZ
|
||
IFSE [ARG]FMT,[
|
||
BUGF==1
|
||
BUGB==BUGB+<<.IRPCNT+1>_<<5-BUGNN>*3>>
|
||
]
|
||
TERMIN
|
||
IFE BUGF,[ ;Just a string to be printed
|
||
IFN BUGN,[ ;Say to output some arguments before this string
|
||
BUGMC3 BUGN
|
||
BUGN==0
|
||
]
|
||
BUGMC2 [ARG]
|
||
] ]
|
||
TERMIN
|
||
IFG BUGNN-6, .ERR MORE THAN 6 WORDS TO BE PRINTED IN BUG MACRO
|
||
;Make bug table entry: length,,pc ? bits,,string ? args
|
||
IF1, BUGMC1 'ZZ==[ASCIZ|',,'|]'
|
||
IF2,[
|
||
ZZ==.
|
||
LOC BUGTAB+LBUGTB
|
||
BUGNN+2,,ZZ
|
||
BUGMC1 'BUGB,,[ASCIZ|',,'|]'
|
||
BUGMC4
|
||
LOC ZZ
|
||
]
|
||
LBUGTB==LBUGTB+BUGNN+2
|
||
];end IFNB
|
||
.ELSE PUSHJ P,BUGNIL
|
||
TERMIN
|
||
|
||
LBUGTB==0 ;Initialize length of bug table
|
||
|
||
;This support macro appends a string to the middle argument of BUGMC1
|
||
DEFINE BUGMC2 STRING
|
||
BUGMC1 //,[DEFINE BUGMC1 *ZZ001*ZZ002*ZZ003*
|
||
ZZ001!ZZ002!]//,STRING!!ZZ003!TERMIN
|
||
TERMIN
|
||
|
||
;This support macro appends a character, given by number, to the middle
|
||
;argument of BUGMC1
|
||
;Only for characters 0 through 7
|
||
DEFINE BUGMC3 #N
|
||
IRPC C,,.QUOTE/ |