Trailing-Edge
-
PDP-10 Archives
-
bb-x130a-sb
-
whofmt.mac
There are 4 other files named whofmt.mac in the archive. Click here to see a list.
TITLE WHOFMT - Format switch handler for WHO
SEARCH WHOMAC
$SETUP (WHOFMT)
Comment |
This module handles the format switch processor and contains
some of the typeout routines.
|
; TABLE OF CONTENTS FOR WHOFMT
;
;
; SECTION PAGE
; 1. FORMAT switch handler
; 1.1 General........................................... 4
; 2. Keyword tables
; 2.1 JOB MODE.......................................... 5
; 2.2 LINE mode......................................... 6
; 2.3 NODE mode......................................... 7
; 2.4 USER mode......................................... 8
; 2.5 Dispatch tables................................... 9
; 2.6 INITIAL/FINAL/HEADING/FOOTING..................... 10
; 3. Default format descriptors
; 3.1 Macro definitions................................. 11
; 3.2 Job mode -- VERY FAST............................. 12
; 3.3 Job mode -- FAST.................................. 12
; 3.4 Job mode -- NORMAL................................ 12
; 3.5 Job mode -- SLOW.................................. 12
; 3.6 Line mode -- VERY FAST............................ 13
; 3.7 Line mode -- FAST................................. 13
; 3.8 Line mode -- NORMAL............................... 13
; 3.9 Line mode -- SLOW................................. 13
; 3.10 Node mode -- VERY FAST............................ 14
; 3.11 User mode -- VERY FAST............................ 15
; 3.12 DDBS -- VERY FAST................................. 16
; 3.13 DDBS -- FAST...................................... 16
; 3.14 DDBS -- NORMAL.................................... 16
; 3.15 DDBS -- SLOW...................................... 16
; 3.16 IPCF - NORMAL..................................... 17
; 3.17 DEFAULTS - NORMAL................................. 18
; 3.18 ACCOUNT - NORMAL.................................. 19
; 3.19 BATCH - NORMAL.................................... 20
; 3.20 STAMP - NORMAL.................................... 21
; 3.21 TIME - NORMAL..................................... 22
; 3.22 CORE - NORMAL..................................... 23
; 4. Routines
; 4.1 LKNAM - Lookup keyword in a table................. 24
; 5. Format print routines
; 5.1 TNAME - Type a user name.......................... 25
; 5.2 TNODE - Type node and line........................ 25
; 5.3 TCTL - Type controlling program and job........... 25
; 5.4 TCORE - Type core size............................ 25
; 5.5 TUNAME - Type a user name......................... 25
; 5.6 TPGRR - Type paging rate.......................... 26
; 5.7 THPQP - Type HPQ value............................ 26
; 5.8 TDSKP - Type DSK value............................ 26
; 5.9 TLIMIB - Type batch time limit.................... 26
; 5.10 TPC - type octal PC word.......................... 26
; 5.11 TTIME - Print time................................ 26
; 5.12 TDECB - Type a decimal number if non-zero......... 26
; 5.13 T1000 - Type a decimal number (scaled down 1000).. 26
; 5.14 TWTO - Type WTO privs............................. 26
; 5.15 TOPR - Type OPR privs............................. 26
; 5.16 TBSN - Type batch stream number................... 26
; 6. Storage................................................... 29
SUBTTL Format switch handler -- /INITIAL/FINAL/HEADING/FOOTING/FORMAT
INISWT::
FINSWT::
HEASWT::
FOOSWT::SKIPA T1,[IOWD SYSLEN,SYSFMT]
FORSWT:: MOVE T1,IFMTX(M)
JRST FMTSWT
SUBTTL FORMAT switch handler -- General
FMTSWT: PUSHJ P,.SAVE2## ;SAVE P1-P2
MOVE P1,@1(P2) ;GET ADDRESS OF SWITCH STORAGE
MOVE P2,T1 ;SAVE POINTER TO KEYWORD TABLE
SKIPLE T1,(P1) ;SEE IF FIRST TIME
JRST FMTS.1 ;ALREADY SETUP
MOVEI T1,MX$FMT*.FMLEN ;GET CORE FOR FORMAT SPEC
PUSHJ P,C$ALLOC## ;ALLOCATE CORE
MOVEM T1,(P1) ;STORE ADDRESS OF TABLE
FMTS.1: HLRZ T1,(P1) ;GET COUNT OF ARGS SO FAR
ADDI T1,1 ;INCREMENT
CAILE T1,MX$FMT ;SEE IF TOO MANY
$FATAL (TMF,<Too many FORMAT switch keywords>);YES--DIE
HRLM T1,(P1) ;STICK COUNT BACK IN STORAGE
IMULI T1,.FMLEN ;TIMES LENGTH OF EACH
HRRZ P1,(P1) ;GET BASE
ADDI P1,-.FMLEN(T1) ;PLUS OFFSET
PUSHJ P,.TIAUC## ;GET NEXT CHAR
CAIE C,"""" ;START OF TEXT?
JRST FORS.1 ;NO
;
;HERE TO READ QUOTED ASCII TEXT
;
MOVE T2,[POINT 7,.NMUL##] ;POINT TO STORAGE
MOVEI T1,0 ;CLEAR CHARACTER COUNT
FORA.L: PUSHJ P,.TICHE## ;GET A CHAR
JUMPLE C,FORA.2 ;JUMP IF EOL
CAIN C,"""" ;SEE IF EOQ
JRST FORA.1 ;YES--END
IDPB C,T2 ;NO--STORE CHAR
AOJA T1,FORA.L ;AND LOOP
FORA.1: PUSHJ P,.TIALT## ;GET NEXT CHAR
FORA.2: MOVEI T3,0 ;CLEAR T3
IDPB T3,T2 ;STORE NULL
ADDI T1,5 ;ROUND UP
IDIVI T1,^D5 ;TO WORDS
PUSH P,T1 ;SAVE WORDS
PUSHJ P,C$ALLOC## ;ALLOCATE CORE
HRLI T1,(<MOVEI T1,>) ;POINT TO IT
MOVEM T1,.FMLOD(P1) ;STORE
HRLI T1,.NMUL## ;POINT TO START
POP P,T2 ;RESTORE LENGTH
ADDI T2,(T1) ;FORM END+1
BLT T1,-1(T2) ;MOVE TEXT INTO PLACE
MOVE T1,[INSVL.(.FMFLT,FM.FMT)+FM.STR+.TSTRG##];DEFAULT FLOAT
MOVEM T1,.FMFMT(P1) ;STORE
JRST FORS.3 ;AND SCAN FOR ARGS
;
;HERE TO READ SIXBIT KEYWORD
;
FORS.1: PUSHJ P,.SIXSC## ;READ SIXBIT WORD
MOVE T1,P2 ;POINT TO KEYWORDS
PUSHJ P,LKNAM ;LOOKUP IN TABLE
HLRE T2,P2 ;GET -N+1
IMULI T1,2 ;DOUBLE
SUB T1,T2 ;FORM OFFSET INTO NEXT TABLE
ADDI T1,1(P2) ;ADD START OF TABLE
MOVE T2,0(T1) ;GET INSTR TO LOAD
MOVEM T2,.FMLOD(P1) ;STORE
MOVE T2,1(T1) ;GET WIDTH AND BITS
MOVEM T2,.FMFMT(P1) ;STORE
;
;HERE TO SCAN FOR POSSIBLE FIELDWIDTH AND JUSTIFY SPECIFICATIONS
;
FORS.3: CAIE C,":" ;ARG COMING?
JRST FORS.E ;AND RETURN
PUSHJ P,.DECPW## ;YES--READ FIELDWIDTH
STORE N,.FMFMT(P1),FM.WID ;STORE WIDTH
MOVX T1,FM.USR ;FLAG USER GAVE
IORM T1,.FMFMT(P1) ;STORE
CAIE C,":" ;ARG COMING?
JRST FORS.E ;AND RETURN
PUSHJ P,.SIXSW## ;READ SIXBIT
MOVE T1,[IOWD JUSLEN,JUSTAB] ;POINT TO TABLE
PUSHJ P,LKNAM ;LOOKUP IN TABLE
STORE T1,.FMFMT(P1),FM.JUS ;STORE
CAIE C,":" ;NEXT ARG?
JRST FORS.E ;NO
PUSHJ P,.DECPW## ;YES--SCAN SPACE COUNT
STORE N,.FMFMT(P1),FM.SPC ;STORE THAT
FORS.E: JRST .SWDON## ;RETURN W/O STORE
JUSTAB: SIXBIT /LEFT/
SIXBIT /CENTER/
SIXBIT /RIGHT/
JUSLEN==.-JUSTAB
SUBTTL Keyword tables -- JOB MODE
DEFINE FORMS,<
XLIST
XX ACCOUNT ,FIX ,40,1 ,L,.TSTRG##,<PUSHJ P,JB$ACC##>
IFN FTIPC,<
XX BADGE ,FIX ,7 ,1 ,R,.TDECW##,<PUSHJ P,JB$BDG##>
>;END IFN FTIPC
XX BATCORE ,FIX ,4 ,1 ,L,.TDECW##,<PUSHJ P,JB$BCL##>
XX BATSTREAM ,FIX ,2 ,1 ,R,TBSN,<PUSHJ P,JB$BSN##>
IFN FTIPC,<
XX CATEGORY ,FIX ,4 ,1 ,R,.TOCTW##,<PUSHJ P,JB$CAT##>
>;END IFN FTIPC
XX CHARGE ,FIX ,6 ,1 ,L,CHGTYO##,<PUSHJ P,JB$CNO##>
IFN FTIPC,<
XX CID ,FIX ,6 ,1 ,L,.TSIXN##,<PUSHJ P,JB$CID##>
>;END IFN FTIPC
XX CLASS ,FIX ,3 ,1 ,R,.TDECW##,<PUSHJ P,JB$CLS##>
XX CORE ,FIX ,10,1 ,L ,TCORE,<JFCL>
XX CPL ,FIX ,4 ,1 ,R,.TDECW##,<PUSHJ P,JB$CPL##>
XX CRLF ,FIX ,1 ,0 ,L,.TCRLF##,<JFCL>
XX CTLJOB ,FIX ,3 ,1 ,R,.TDECW##,<PUSHJ P,JB$CJN##>
XX CTLPRG ,FIX ,7 ,1 ,L,.TSIXN##,<PUSHJ P,JB$CPN##>
XX CVL ,FIX ,4 ,1 ,R,.TDECW##,<PUSHJ P,JB$CVL##>
XX DEFATTACH ,FIX , 7,1 ,L,ATTYES##,<PUSHJ P,JB$DAD##>
VERSION GE,702,<
XX DEFBIGBUF ,FIX , 3,1 ,L,.TDECW##,<PUSHJ P,JB$DBB##>
>
XX DEFBUFFER ,FIX , 3,1 ,L,.TDECW##,<PUSHJ P,JB$DNB##>
XX DEFPROTECTION ,FIX , 6,1 ,L,.TPROT##,<PUSHJ P,JB$DPV##>
XX DSKPRIORITY ,FIX ,3 ,1 ,R,.TDECW##,<PUSHJ P,JB$DPR##>
XX FUNNY ,FIX ,3 ,1 ,R,.TDECW##,<PUSHJ P,JB$PFS##>
XX GLXOPR ,FIX ,7 ,1 ,L,TGOP,<PUSHJ P,JB$GOP##>
XX HPQ ,FIX ,3 ,1 ,R,.TDECW##,<PUSHJ P,JB$HPQ##>
XX IPCFORECEIVE ,FIX ,5 ,1 ,R,.TDECW##,<PUSHJ P,JB$IOR##>
XX IPCFOSEND ,FIX ,5 ,1 ,R,.TDECW##,<PUSHJ P,JB$IOS##>
XX IPCFQRECEIVE ,FIX ,5 ,1 ,R,.TDECW##,<PUSHJ P,JB$IQR##>
XX IPCFQSEND ,FIX ,5 ,1 ,R,.TDECW##,<PUSHJ P,JB$IQS##>
XX IPCFRECEIVE ,FIX ,5 ,1 ,R,.TDECW##,<PUSHJ P,JB$IMR##>
XX IPCFSEND ,FIX ,5 ,1 ,R,.TDECW##,<PUSHJ P,JB$IMS##>
XX JLT ,FIX ,10,1 ,L ,.TUFTM##,<PUSHJ P,JB$IJL##>
XX JOB ,FIX ,3 ,1 ,R ,.TDECW##,<MOVEI T1,(O)>
XX KCS ,FIX ,7 ,1 ,R ,T1000,<PUSHJ P,JB$KCM##>
XX LIMIT ,BLK ,8 ,1 ,R,TLIMIB,<PUSHJ P,JB$BTL##>
XX LINE ,FIX ,4 ,1 ,R ,.TOCTW##,<PUSHJ P,JB$NLN##>
XX LOCATION ,FIX ,4 ,1 ,R,.TOCTW##,<PUSHJ P,JB$LOC##>
IFN FTIPC,<
XX LPPN ,FIX ,15,1 ,C ,.TPPNW##,<PUSHJ P,JB$LPN##>
XX LPRGNUM ,FIX ,6 ,1 ,L ,.TOCTW##,<PUSHJ P,JB$LPG##>
XX LPRJNUM ,FIX ,7 ,0 ,R ,.TOCTW##,<PUSHJ P,JB$LPJ##>
>;END IFN FTIPC
XX MPL ,FIX ,4 ,1 ,R,.TDECW##,<PUSHJ P,JB$MPL##>
XX MVL ,FIX ,4 ,1 ,R,.TDECW##,<PUSHJ P,JB$MVL##>
XX NAME ,FIX ,14,1 ,L ,TNAME,<JFCL>
XX NODE ,FIX ,11,1 ,L ,TNODE,<JFCL>
XX NODENAME ,FIX ,7 ,1 ,L ,.TSIXN##,<PUSHJ P,JB$NNM##>
XX NODENUMBER ,FIX ,4 ,1 ,R ,.TOCTW##,<PUSHJ P,JB$NNU##>
XX PAGERATE ,FIX ,6 ,1 ,R,TPGR,<PUSHJ P,JB$PGR##>
XX PC ,FIX ,6 ,1 ,L,TPC,<PUSHJ P,JB$PC##>
XX PHYHIG ,FIX ,3 ,1 ,R,.TDECW##,<PUSHJ P,JB$PPH##>
XX PHYLOW ,FIX ,3 ,1 ,R,.TDECW##,<PUSHJ P,JB$PPL##>
XX PPN ,FIX ,15,1 ,C ,.TPPNW##,<PUSHJ P,JB$PPN##>
XX PRGNUM ,FIX ,6 ,1 ,L ,.TOCTW##,<PUSHJ P,JB$PPG##>
IFN FTPRGRUN,<
XX PRGRUN ,FIX , 7,1 ,L,.TSIXN##,<PUSHJ P,JB$PTR##>
>;END IFN FTPRGRUN
XX PRJNUM ,FIX ,7 ,0 ,R ,.TOCTW##,<PUSHJ P,JB$PPJ##>
XX PROGRAM ,FIX ,7 ,1 ,L ,.TSIXN##,<PUSHJ P,JB$PRG##>
XX PROSET ,FIX , 4,1 ,L,ONOFF##,<PUSHJ P,JB$DPS##>
XX READS ,FIX ,7 ,1 ,R ,.TDECW##,<PUSHJ P,JB$DBR##>
IFN FTRESET,<
XX RESET ,FIX ,10,1 ,L,.TUFTM##,<PUSHJ P,JB$ITR##>
>;END IFN FTRESET
XX RUNTIME ,FIX ,8 ,1 ,R,TTIME,<PUSHJ P,JB$TIM##>
XX SEGMENT ,FIX ,7 ,1 ,L,.TSIXN##,<PUSHJ P,JB$HSN##>
IFN FTIPC,<
XX SLOT ,FIX ,4 ,1 ,R,.TDECW##,<PUSHJ P,JB$SLT##>
>;END IFN FTIPC
XX SPACE ,FIX ,1 ,0 ,L,.TSPAC##,<JFCL>
XX TTY ,FIX ,8 ,1 ,L ,.TSIXN##,<PUSHJ P,JB$TTY##>
XX UUOS ,FIX ,7 ,1 ,R ,.TDECW##,<PUSHJ P,JB$UUC##>
XX VIRHIG ,FIX ,3 ,1 ,R,.TDECW##,<PUSHJ P,JB$PVH##>
XX VIRLOW ,FIX ,3 ,1 ,R,.TDECW##,<PUSHJ P,JB$PVL##>
XX VKCS ,FIX ,7 ,1 ,R ,T1000,<PUSHJ P,JB$VKM##>
XX WRITES ,FIX ,7 ,1 ,R ,.TDECW##,<PUSHJ P,JB$DBW##>
XX WSCODE ,FIX ,6 ,1 ,L ,.TSIXN##,<PUSHJ P,JB$WSC##>
XX WTO ,FIX ,5 ,1 ,L,TWTO,<PUSHJ P,JB$WTO##>
LIST
>
DEFINE XX(NAME,FMT,WID,SPC,JUS,PRT,LOD),<EXP SIXBIT/NAME/>
JOBFMT: FORMS
JOBLEN==.-JOBFMT
DEFINE XX(NAME,FMT,WID,SPC,JUS,PRT,LOD),<
LOD
IFIDN <JUS><R>,<..TMP==.FMRIG>
IFIDN <JUS><C>,<..TMP==.FMCEN>
IFIDN <JUS><L>,<..TMP==.FMLEF>
IFIDN <FMT><FIX>,<..TMR==.FMFIX>
IFIDN <FMT><FLT>,<..TMR==.FMFLT>
IFIDN <FMT><BLK>,<..TMR==.FMBLK>
EXP <INSVL.(..TMR,FM.FMT)!INSVL.(^D'WID,FM.WID)!INSVL.(..TMP,FM.JUS)!INSVL.(SPC,FM.SPC)!INSVL.(PRT,FM.PRT)>
>
DEFINE LL(TXT),<
EXP <INSVL.(.FMFLT,FM.FMT)!FM.STR!.TSTRG##>
MOVEI T1,[ASCIZ\TXT\]
>
DEFINE CRLF,<
EXP <INSVL.(.FMFLT,FM.FMT)!FM.STR!.TCRLF##>
JFCL
>
DEFINE SPACE(N),<
EXP <INSVL.(.FMFIX,FM.FMT)!INSVL.(^D'N,FM.WID)!INSVL.(.FMLEF,FM.JUS)!.POPJ##>
JFCL
>
FORMS
SUBTTL Keyword tables -- LINE mode
DEFINE FORMS,<
XLIST
XX ASSIGN ,FIX,1 ,1 ,L ,TTAC,<PUSHJ P,LB$TAC##>
XX BREAKS ,FIX,6 ,1 ,L ,.TDECW##,<PUSHJ P,LB$BCC##>
XX CARRIER ,FIX,1 ,1 ,L ,TDSC,<PUSHJ P,LB$DSC##>
XX COMMANDS ,FIX,5 ,1 ,L ,.TDECW##,<PUSHJ P,LB$CMD##>
XX CRLF ,FIX,1 ,0 ,L,.TCRLF##,<JFCL>
XX APC ,FIX,1 ,1 ,L ,TAPC,<PUSHJ P,LB$APC##>
XX INITED ,FIX,1 ,1 ,L ,TTAP,<PUSHJ P,LB$TAP##>
XX INPUT ,FIX,7 ,1 ,L ,.TDECW##,<PUSHJ P,LB$ICT##>
XX JOB ,FIX,3 ,1 ,R ,.TDECW##,<PUSHJ P,LB$JOB##>
XX LINE ,FIX,4 ,1 ,R ,.TOCTW##,<PUSHJ P,LB$NLN##>
XX LOCATION ,FIX,19,1 ,L ,.TSTRG##,<PUSHJ P,LB$LOC##>
IFN FTLGNQ,<
XX LOGINQ ,FIX,1 ,1 ,L ,TLQP,<PUSHJ P,LB$LQP##>
> ;END IFN FTLGNQ
XX MIC ,FIX,1 ,1 ,L ,TMCL,<PUSHJ P,LB$MCL##>
XX NODENAME ,FIX,6 ,1 ,L ,.TSIXN##,<PUSHJ P,LB$NNM##>
XX NODENUMBER ,FIX,3 ,1 ,L ,.TSIXN##,<PUSHJ P,LB$NNU##>
XX OUTPUT ,FIX,8 ,1 ,L ,.TDECW##,<PUSHJ P,LB$OCT##>
XX RCVSPEED ,FIX,5 ,1 ,R ,.TDECW##,<PUSHJ P,LB$RBD##>
XX REMOTE ,FIX,1 ,1 ,L ,TRMT,<PUSHJ P,LB$RMT##>
XX SLAVE ,FIX,1 ,1 ,L ,TSLV,<PUSHJ P,LB$SLV##>
XX SPACE ,FIX,1 ,0 ,L,.TSPAC##,<JFCL>
XX TTY ,FIX,7 ,1 ,L ,.TSIXN##,<PUSHJ P,LB$TTY##>
XX TYPE ,FIX,7 ,1 ,L ,.TSIXN##,<PUSHJ P,LB$TYP##>
XX USER ,FIX,1 ,1 ,L ,TTCJ,<PUSHJ P,LB$TCJ##>
XX XMTSPEED ,FIX,5 ,1 ,R ,.TDECW##,<PUSHJ P,LB$TBD##>
LIST
>
DEFINE XX(NAME,FMT,WID,SPC,JUS,PRT,LOD),<EXP SIXBIT/NAME/>
LINFMT: FORMS
LINLEN==.-LINFMT
DEFINE XX(NAME,FMT,WID,SPC,JUS,PRT,LOD),<
LOD
IFIDN <JUS><R>,<..TMP==.FMRIG>
IFIDN <JUS><C>,<..TMP==.FMCEN>
IFIDN <JUS><L>,<..TMP==.FMLEF>
IFIDN <FMT><FIX>,<..TMR==.FMFIX>
IFIDN <FMT><FLT>,<..TMR==.FMFLT>
IFIDN <FMT><BLK>,<..TMR==.FMBLK>
EXP <INSVL.(..TMR,FM.FMT)!INSVL.(^D'WID,FM.WID)!INSVL.(..TMP,FM.JUS)!INSVL.(SPC,FM.SPC)!INSVL.(PRT,FM.PRT)>
>
FORMS
SUBTTL Keyword tables -- NODE mode
DEFINE FORMS,<
XLIST
XX CONFIGURATION ,FIX,32,1 ,L ,.TSTRG##,<PUSHJ P,NB$CNF##>
XX CRLF ,FIX,1 ,0 ,L ,.TCRLF##,<JFCL>
XX CTL ,FIX,3, 1 ,L ,.TDECW##,<PUSHJ P,NB$CTL##>
XX DATE ,FIX,10,1 ,L ,.TSTRG##,<PUSHJ P,NB$DAT##>
XX LAP ,FIX,3 ,1 ,L ,.TDECW##,<PUSHJ P,NB$LAP##>
XX LAR ,FIX,3 ,1 ,L ,.TDECW##,<PUSHJ P,NB$LAR##>
XX LAS ,FIX,3 ,1 ,L ,.TDECW##,<PUSHJ P,NB$LAS##>
XX LMA ,FIX,3 ,1 ,L ,.TDECW##,<PUSHJ P,NB$LMA##>
XX LMP ,FIX,3 ,1 ,L ,.TDECW##,<PUSHJ P,NB$LMP##>
XX LMR ,FIX,3 ,1 ,L ,.TDECW##,<PUSHJ P,NB$LMR##>
XX LMS ,FIX,3 ,1 ,L ,.TDECW##,<PUSHJ P,NB$LMS##>
XX MOM ,FIX,3 ,1 ,L ,.TDECW##,<PUSHJ P,NB$MOM##>
XX NEIGHBORS ,BLK,0 ,0 ,L ,TONEI,<PUSHJ P,NB$TOP##>
XX NODE ,FIX,8 ,1 ,L ,.TSIXW##,<PUSHJ P,NB$NNM##>
XX NODENAME ,FIX,8 ,1 ,L ,.TSIXW##,<PUSHJ P,NB$NNM##>
XX NODENUMBER ,FIX,8 ,1 ,L ,.TOCTP##,<PUSHJ P,NB$NNU##>
XX SPACE ,FIX,1 ,0 ,L ,.TSPAC##,<JFCL>
XX OBJECTS ,FLT,0 ,0 ,L ,TOBJS,<PUSHJ P,NB$OBJ##>
XX OPR ,FIX,3, 1 ,L ,TOOPR,<PUSHJ P,NB$OPR##>
XX TOPOLOGY ,BLK,0 ,0 ,L ,TOTOP,<PUSHJ P,NB$TOP##>
LIST
>
DEFINE XX(NAME,FMT,WID,SPC,JUS,PRT,LOD),<EXP SIXBIT/NAME/>
NODFMT: FORMS
NODLEN==.-NODFMT
DEFINE XX(NAME,FMT,WID,SPC,JUS,PRT,LOD),<
LOD
IFIDN <JUS><R>,<..TMP==.FMRIG>
IFIDN <JUS><C>,<..TMP==.FMCEN>
IFIDN <JUS><L>,<..TMP==.FMLEF>
IFIDN <FMT><FIX>,<..TMR==.FMFIX>
IFIDN <FMT><FLT>,<..TMR==.FMFLT>
IFIDN <FMT><BLK>,<..TMR==.FMBLK>
EXP <INSVL.(..TMR,FM.FMT)!INSVL.(^D'WID,FM.WID)!INSVL.(..TMP,FM.JUS)!INSVL.(SPC,FM.SPC)!INSVL.(PRT,FM.PRT)>
>
FORMS
SUBTTL Keyword tables -- USER mode
DEFINE FORMS,<
XLIST
XX CRLF ,FIX, 1,0 ,L,.TCRLF##,<JFCL>
XX SPACE ,FIX, 1,0 ,L,.TSPAC##,<JFCL>
XX ACTREQ ,FIX, 3,0 ,L,TYESNO,<PUSHJ P,UB$ACT##>
XX CHARGE ,FIX, 7,1 ,L,CHGTYO##,<PUSHJ P,UB$CNO##>
IFN FTIPC,<
XX COSTCENTER ,FIX, 4,1 ,L,.TSIXN##,<PUSHJ P,UB$CST##>
>
XX ENQDEQ ,FIX, 3,1 ,R,.TDECW##,<PUSHJ P,UB$EDQ##>
XX EXPIRATION ,FIX, 9,1 ,L,TUDATE,<PUSHJ P,UB$EXP##>
XX GLXOPR ,FIX, 7,1 ,L,TGOP,<PUSHJ P,UB$GOP##>
XX IPCFRECEIVE ,FIX, 3,1 ,R,.TDECW##,<PUSHJ P,UB$SND##>
XX IPCFSEND ,FIX, 3,1 ,R,.TDECW##,<PUSHJ P,UB$RCV##>
XX LGNBAT ,FIX, 3,0 ,L,TYESNO,<PUSHJ P,UB$BAT##>
XX LGNDST ,FIX, 3,0 ,L,TYESNO,<PUSHJ P,UB$DST##>
XX LGNLOC ,FIX, 3,0 ,L,TYESNO,<PUSHJ P,UB$LOC##>
XX LGNRMT ,FIX, 3,0 ,L,TYESNO,<PUSHJ P,UB$RMT##>
XX LGNROP ,FIX, 3,0 ,L,TYESNO,<PUSHJ P,UB$ROP##>
XX LGNSBJ ,FIX, 3,0 ,L,TYESNO,<PUSHJ P,UB$SBJ##>
XX NAME ,FIX,13,1 ,L ,TUNAME,<JFCL>
XX NAMBAT ,FIX, 3,0 ,L,TYESNO,<PUSHJ P,UB$NRB##>
XX NAMTIM ,FIX, 3,0 ,L,TYESNO,<PUSHJ P,UB$NRT##>
XX PASSWORD ,FIX, 6,1 ,L,TUPSW,<PUSHJ P,UB$PSW##>
XX PHYSICAL ,FIX, 3,1 ,R,.TDECW##,<PUSHJ P,UB$NPP##>
XX PPN ,FIX,13,1 ,L ,.TPPNW##,<PUSHJ P,UB$PPN##>
XX PRGNUM ,FIX, 7,1 ,R,.TOCTW##,<PUSHJ P,UB$PPG##>
XX PRJNUM ,FIX, 7,1 ,R,.TOCTW##,<PUSHJ P,UB$PPJ##>
XX PROGRAM ,FLT, 0,0 ,L,TUPTR,<PUSHJ P,UB$PTR##>
XX PSWBAT ,FIX, 3,0 ,L,TYESNO,<PUSHJ P,UB$PRB##>
XX PSWTIM ,FIX, 3,0 ,L,TYESNO,<PUSHJ P,UB$PRT##>
XX RMKREQ ,FIX, 3,0 ,L,TYESNO,<PUSHJ P,UB$RMK##>
XX SCHEDULER ,FIX, 3,1 ,R,.TDECW##,<PUSHJ P,UB$SCD##>
XX VIRTUAL ,FIX, 3,1 ,R,.TDECW##,<PUSHJ P,UB$NVP##>
XX WEEKDAY ,FLT, 0,0 ,L,TUWDH,<PUSHJ P,UB$WDH##>
XX WEEKEND ,FLT, 0,0 ,L,TUWEH,<PUSHJ P,UB$WEH##>
LIST
>
DEFINE XX(NAME,FMT,WID,SPC,JUS,PRT,LOD),<EXP SIXBIT/NAME/>
USRFMT: FORMS
USRLEN==.-USRFMT
DEFINE XX(NAME,FMT,WID,SPC,JUS,PRT,LOD),<
LOD
IFIDN <JUS><R>,<..TMP==.FMRIG>
IFIDN <JUS><C>,<..TMP==.FMCEN>
IFIDN <JUS><L>,<..TMP==.FMLEF>
IFIDN <FMT><FIX>,<..TMR==.FMFIX>
IFIDN <FMT><FLT>,<..TMR==.FMFLT>
IFIDN <FMT><BLK>,<..TMR==.FMBLK>
EXP <INSVL.(..TMR,FM.FMT)!INSVL.(^D'WID,FM.WID)!INSVL.(..TMP,FM.JUS)!INSVL.(SPC,FM.SPC)!INSVL.(PRT,FM.PRT)>
>
FORMS
SUBTTL Keyword tables -- Dispatch tables
DEFINE XX(MOD,ABR,MAP,TXT,ERR),<IOWD ABR'LEN,ABR'FMT>
IFMTX: MODES
SUBTTL Keyword tables -- INITIAL/FINAL/HEADING/FOOTING
DEFINE FORMS,<
XLIST
XX BATMAX ,FLT, 4,1,L,.TDECW##,<PUSHJ P,SB$BMX##>
XX BATMIN ,FLT, 4,1,L,.TDECW##,<PUSHJ P,SB$BMN##>
XX BATNUM ,FLT, 4,1,L,.TDECW##,<PUSHJ P,SB$BNM##>
XX CORMAX ,FLT, 4,1,L,.TCORW##,<PUSHJ P,SB$CMX##>
XX CRASH ,FLT,25,0,L,.TSTRG##,<MOVEI T1,CRSFIL##>
XX CRLF ,FIX, 1,0,L,.TCRLF##,<JFCL>
XX CVERSION ,FLT,12,1,L,.TVERW##,<PUSHJ P,SB$CVN##>
XX DATE ,FLT,10,0,L,.TDATE##,<PUSHJ P,SB$DAT##>
XX DAY ,FLT,10,0,L,.TDOW##, <PUSHJ P,SB$UDT##>
XX JOBMAX ,FLT, 4,1,L,.TDECW##,<PUSHJ P,SB$JMX##>
XX LOGMAX ,FLT, 4,1,L,.TDECW##,<PUSHJ P,SB$LMX##>
XX LOGNUM ,FLT, 4,1,L,.TDECW##,<PUSHJ P,SB$LNM##>
XX MEMSIZE ,FLT, 5,1,L,.TCORW##,<PUSHJ P,SB$SMS##>
XX NAME ,FLT,25,1,L,.TSTRG##,<PUSHJ P,SB$NAM##>
XX NODENAME ,FLT, 6,0,L,.TSIXN##,<PUSHJ P,SB$NNM##>
XX NODENUMBER ,FLT, 2,0,1,.TOCTW##,<PUSHJ P,SB$NNU##>
XX SCHEDULE ,FLT, 6,1,L,.TOCTW##,<PUSHJ P,SB$SCH##>
XX SERIAL ,FLT, 5,1,L,.TDECW##,<PUSHJ P,SB$CSN##>
XX SPACE ,FIX, 1,0,L,.TSPAC##,<JFCL>
XX SYSDAT ,FLT, 9,1,L,.TSTRG##,<PUSHJ P,SB$SCD##>
XX TIME ,FLT, 9,0,L,.TTIME##,<PUSHJ P,SB$TIM##>
XX UPTIME ,FLT,12,0,L,.TTIME##,<PUSHJ P,SB$UPT##>
XX VERSION ,FLT,12,1,L,.TVERW##,<PUSHJ P,SB$DVN##>
LIST
>
DEFINE XX(NAME,FMT,WID,SPC,JUS,PRT,LOD),<EXP SIXBIT/NAME/>
SYSFMT: FORMS
SYSLEN==.-SYSFMT
DEFINE XX(NAME,FMT,WID,SPC,JUS,PRT,LOD),<
LOD
IFIDN <JUS><R>,<..TMP==.FMRIG>
IFIDN <JUS><C>,<..TMP==.FMCEN>
IFIDN <JUS><L>,<..TMP==.FMLEF>
IFIDN <FMT><FIX>,<..TMR==.FMFIX>
IFIDN <FMT><FLT>,<..TMR==.FMFLT>
IFIDN <FMT><BLK>,<..TMR==.FMBLK>
EXP <INSVL.(..TMR,FM.FMT)!INSVL.(^D'WID,FM.WID)!INSVL.(..TMP,FM.JUS)!INSVL.(SPC,FM.SPC)!INSVL.(PRT,FM.PRT)>
>
FORMS
SUBTTL Default format descriptors -- Macro definitions
DEFINE XX(FMT,WID,SPC,JUS,PRT,LOD),<
IFIDN <JUS><R>,<..TMP==.FMRIG>
IFIDN <JUS><C>,<..TMP==.FMCEN>
IFIDN <JUS><L>,<..TMP==.FMLEF>
IFIDN <FMT><FIX>,<..TMR==.FMFIX>
IFIDN <FMT><FLT>,<..TMR==.FMFLT>
IFIDN <FMT><BLK>,<..TMR==.FMBLK>
EXP <INSVL.(..TMR,FM.FMT)!INSVL.(^D'WID,FM.WID)!INSVL.(..TMP,FM.JUS)!INSVL.(SPC,FM.SPC)!INSVL.(PRT,FM.PRT)>
LOD ;;.FMLOD
>
DEFINE FFORMS(MODE,NAME),<
F'MODE'NAME:: FORMS
L'MODE'NAME==:<.-F'MODE'NAME>/2
>;END DEFINE FFORMS
SUBTTL Default format descriptors -- Job mode -- VERY FAST
DEFINE FORMS,<
XLIST
XX FIX,13,1 ,L ,TNAME,<JFCL>
XX FIX,7 ,1 ,L ,.TSIXN##,<PUSHJ P,JB$TTY##>
LIST
>
FFORMS (JOB,VFAST)
SUBTTL Default format descriptors -- Job mode -- FAST
DEFINE FORMS,<
XLIST
XX FIX,2 ,1 ,R ,.TDECW##,<MOVEI T1,(O)>
SPACE 1
XX FIX,13,1 ,L ,TNAME,<JFCL>
XX FIX,7 ,1 ,L ,.TSIXN##,<PUSHJ P,JB$TTY##>
XX FIX,7 ,1 ,L ,.TSIXN##,<PUSHJ P,JB$PRG##>
XX FIX,6 ,1 ,L ,.TSIXN##,<PUSHJ P,JB$WSC##>
LIST
>
FFORMS (JOB,FAST)
SUBTTL Default format descriptors -- Job mode -- NORMAL
DEFINE FORMS,<
XLIST
XX FIX,2 ,1 ,R ,.TDECW##,<MOVEI T1,(O)>
SPACE 1
XX FIX,13,1 ,L ,TNAME,<JFCL>
XX FIX,6 ,0 ,R ,.TOCTW##,<PUSHJ P,JB$PPJ##>
XX FIX,0 ,0 ,L ,TCOMMA,<JFCL>
XX FIX,6 ,1 ,L ,.TOCTW##,<PUSHJ P,JB$PPG##>
XX FIX,7 ,1 ,L ,.TSIXN##,<PUSHJ P,JB$TTY##>
XX FIX,12,1 ,L ,TNODE,<JFCL>
XX FIX,7 ,1 ,L ,.TSIXN##,<PUSHJ P,JB$PRG##>
XX FIX,10 ,1 ,L ,TCORE,<JFCL>
XX FIX,6 ,1 ,L ,.TSIXN##,<PUSHJ P,JB$WSC##>
XX FIX,8 ,1 ,R ,TTIME,<PUSHJ P,JB$TIM##>
>
FFORMS (JOB,NORMAL)
SUBTTL Default format descriptors -- Job mode -- SLOW
DEFINE FORMS,<
XLIST
XX FIX,2 ,1 ,R ,.TDECW##,<MOVEI T1,(O)>
SPACE 1
XX FIX,13,1 ,L ,TNAME,<JFCL>
XX FIX,6 ,0 ,R ,.TOCTW##,<PUSHJ P,JB$PPJ##>
XX FIX,0 ,0 ,L ,TCOMMA,<JFCL>
XX FIX,6 ,1 ,L ,.TOCTW##,<PUSHJ P,JB$PPG##>
XX FIX,7 ,1 ,L ,.TSIXN##,<PUSHJ P,JB$TTY##>
XX FIX,12,1 ,L ,TNODE,<JFCL>
XX FIX,7 ,1 ,L ,.TSIXN##,<PUSHJ P,JB$PRG##>
XX FIX,10,1 ,L ,TCORE,<JFCL>
XX FIX,6 ,1 ,L ,.TSIXN##,<PUSHJ P,JB$WSC##>
XX FIX,8 ,1 ,R ,TTIME,<PUSHJ P,JB$TIM##>
CRLF
SPACE 5
LL <RD:>
XX FIX,7 ,0 ,L ,.TDECW##,<PUSHJ P,JB$DBR##>
LL <WR:>
XX FIX,7 ,1 ,L ,.TDECW##,<PUSHJ P,JB$DBW##>
LL <UUOS:>
XX FIX,8 ,1 ,L ,.TDECW##,<PUSHJ P,JB$UUC##>
LL <JLT:>
XX FIX,10 ,1 ,L ,.TUFTM##,<PUSHJ P,JB$IJL##>
;;LL <RESET:>
;;XX FIX,10,1 ,L ,.TUFTM##,<PUSHJ P,JB$ITR##>
LL <PC:>
XX FIX,8 ,1 ,L ,TPC,<PUSHJ P,JB$PC##>
XX BLK,13,1 ,L ,TLIMI,<PUSHJ P,JB$BTL##>
XX BLK,9 ,1 ,L ,TPGRR,<PUSHJ P,JB$PGR##>
XX BLK,7 ,1 ,L ,TDSKP,<PUSHJ P,JB$DPR##>
XX BLK,5 ,1 ,L ,THPQP,<PUSHJ P,JB$HPQ##>
LIST
>
FFORMS (JOB,SLOW)
SUBTTL Default format descriptors -- Line mode -- VERY FAST
DEFINE FORMS,<
XLIST
XX FIX,7 ,1 ,L ,.TSIXN##,<PUSHJ P,LB$TTY##>
XX FIX,6 ,1 ,L ,.TSIXN##,<PUSHJ P,LB$NNM##>
XX FIX,4 ,1 ,R ,.TOCTW##,<PUSHJ P,LB$NLN##>
LIST
>
FFORMS (LIN,VFAST)
SUBTTL Default format descriptors -- Line mode -- FAST
DEFINE FORMS,<
XLIST
XX FIX,7 ,1 ,L ,.TSIXN##,<PUSHJ P,LB$TTY##>
XX FIX,6 ,1 ,L ,.TSIXN##,<PUSHJ P,LB$NNM##>
XX FIX,4 ,1 ,R ,.TOCTW##,<PUSHJ P,LB$NLN##>
SPACE 1
XX FIX,1 , ,L ,TRMT,<PUSHJ P,LB$RMT##>
XX FIX,1 , ,L ,TAPC,<PUSHJ P,LB$APC##>
XX FIX,1 , ,L ,TDSC,<PUSHJ P,LB$DSC##>
XX FIX,1 , ,L ,TSLV,<PUSHJ P,LB$SLV##>
XX FIX,1 , ,L ,TMCL,<PUSHJ P,LB$MCL##>
SPACE 1
LL < >
XX FIX,1 ,1 ,L ,TTAC,<PUSHJ P,LB$TAC##>
XX FIX,1 ,1 ,L ,TTAP,<PUSHJ P,LB$TAP##>
XX FIX,1 ,1 ,L ,TTCJ,<PUSHJ P,LB$TCJ##>
IFN FTLGNQ,<
XX FIX,5 ,1 ,L ,TLQP,<PUSHJ P,LB$LQP##>
> ;END IFN FTLGNQ
SPACE 1
XX FIX,1 ,1 ,L ,TJOB,<PUSHJ P,LB$JOB##>
LIST
>
FFORMS (LIN,FAST)
SUBTTL Default format descriptors -- Line mode -- NORMAL
DEFINE FORMS,<
XLIST
XX FIX,7 ,1 ,L ,.TSIXN##,<PUSHJ P,LB$TTY##>
XX FIX,6 ,1 ,L ,.TSIXN##,<PUSHJ P,LB$NNM##>
XX FIX,4 ,1 ,R ,.TOCTW##,<PUSHJ P,LB$NLN##>
SPACE 1
XX FIX,19,1 ,L ,.TSTRG##,<PUSHJ P,LB$LOC##>
XX FIX,1 , ,L ,TRMT,<PUSHJ P,LB$RMT##>
XX FIX,1 , ,L ,TAPC,<PUSHJ P,LB$APC##>
XX FIX,1 , ,L ,TDSC,<PUSHJ P,LB$DSC##>
XX FIX,1 , ,L ,TSLV,<PUSHJ P,LB$SLV##>
XX FIX,1 , ,L ,TMCL,<PUSHJ P,LB$MCL##>
SPACE 1
XX FIX,7 ,1 ,L ,.TSIXN##,<PUSHJ P,LB$TYP##>
XX FIX,5 ,1 ,R ,.TDECW##,<PUSHJ P,LB$TBD##>
XX FIX,5 ,1 ,R ,.TDECW##,<PUSHJ P,LB$RBD##>
SPACE 2
XX FIX,1 ,1 ,L ,TTAC,<PUSHJ P,LB$TAC##>
XX FIX,1 ,1 ,L ,TTAP,<PUSHJ P,LB$TAP##>
XX FIX,1 ,1 ,L ,TTCJ,<PUSHJ P,LB$TCJ##>
IFN FTLGNQ,<
XX FIX,1 ,1 ,L ,TLQP,<PUSHJ P,LB$LQP##>
> ;END IFN FTLGNQ
SPACE 1
XX FIX,1 ,1 ,L ,TJOB,<PUSHJ P,LB$JOB##>
LIST
>
FFORMS (LIN,NORMAL)
SUBTTL Default format descriptors -- Line mode -- SLOW
DEFINE FORMS,<
XLIST
XX FIX,7 ,1 ,L ,.TSIXN##,<PUSHJ P,LB$TTY##>
XX FIX,6 ,1 ,L ,.TSIXN##,<PUSHJ P,LB$NNM##>
XX FIX,4 ,1 ,R ,.TOCTW##,<PUSHJ P,LB$NLN##>
SPACE 1
XX FIX,19,1 ,L ,.TSTRG##,<PUSHJ P,LB$LOC##>
XX FIX,1 , ,L ,TRMT,<PUSHJ P,LB$RMT##>
XX FIX,1 , ,L ,TAPC,<PUSHJ P,LB$APC##>
XX FIX,1 , ,L ,TDSC,<PUSHJ P,LB$DSC##>
XX FIX,1 , ,L ,TSLV,<PUSHJ P,LB$SLV##>
XX FIX,1 , ,L ,TMCL,<PUSHJ P,LB$MCL##>
SPACE 1
XX FIX,7 ,1 ,L ,.TSIXN##,<PUSHJ P,LB$TYP##>
XX FIX,5 ,1 ,R ,.TDECW##,<PUSHJ P,LB$TBD##>
XX FIX,5 ,1 ,R ,.TDECW##,<PUSHJ P,LB$RBD##>
SPACE 2
XX FIX,1 ,1 ,L ,TTAC,<PUSHJ P,LB$TAC##>
XX FIX,1 ,1 ,L ,TTAP,<PUSHJ P,LB$TAP##>
XX FIX,1 ,1 ,L ,TTCJ,<PUSHJ P,LB$TCJ##>
IFN FTLGNQ,<
XX FIX,1 ,1 ,L ,TLQP,<PUSHJ P,LB$LQP##>
> ;END IFN FTLGNQ
SPACE 1
XX FIX,1 ,1 ,L ,TJOB,<PUSHJ P,LB$JOB##>
CRLF
SPACE 5
LL <ICC:>
XX FIX,7 ,1 ,L ,.TDECW##,<PUSHJ P,LB$ICT##>
LL <OCC:>
XX FIX,8 ,1 ,L ,.TDECW##,<PUSHJ P,LB$OCT##>
LL <BRK:>
XX FIX,6 ,1 ,L ,.TDECW##,<PUSHJ P,LB$BCC##>
LL <CMD:>
XX FIX,5 ,1 ,L ,.TDECW##,<PUSHJ P,LB$CMD##>
LIST
>
FFORMS (LIN,SLOW)
SUBTTL Default format descriptors -- Node mode -- VERY FAST
DEFINE FORMS,<
XLIST
XX FIX,6 ,1 ,L ,.TSIXW##,<PUSHJ P,NB$NNM##>
LIST
>
FFORMS (NOD,VFAST)
DEFINE FORMS,<
XLIST
XX FIX,8 ,1 ,L ,.TSIXW##,<PUSHJ P,NB$NNM##>
XX FIX,8 ,1 ,L ,.TOCTP##,<PUSHJ P,NB$NNU##>
LIST
>
FFORMS (NOD,FAST)
DEFINE FORMS,<
XLIST
XX FIX,8 ,1 ,L ,.TSIXW##,<PUSHJ P,NB$NNM##>
XX FIX,8 ,1 ,L ,.TOCTP##,<PUSHJ P,NB$NNU##>
XX FIX,32,1 ,L ,.TSTRG##,<PUSHJ P,NB$CNF##>
XX FIX,10,1 ,L ,.TSTRG##,<PUSHJ P,NB$DAT##>
LIST
>
FFORMS (NOD,NORMAL)
DEFINE FORMS,<
XLIST
XX FIX,8 ,1 ,L ,.TSIXW##,<PUSHJ P,NB$NNM##>
XX FIX,8 ,1 ,L ,.TOCTP##,<PUSHJ P,NB$NNU##>
XX FIX,32,1 ,L ,.TSTRG##,<PUSHJ P,NB$CNF##>
XX FIX,10,1 ,L ,.TSTRG##,<PUSHJ P,NB$DAT##>
CRLF
SPACE 8
XX FLT,0 ,0 ,L ,TOBJS,<PUSHJ P,NB$OBJ##>
LIST
>
FFORMS (NOD,SLOW)
SUBTTL Default format descriptors -- User mode -- VERY FAST
DEFINE FORMS,<
XLIST
XX FIX,13,1 ,L ,TUNAME,<JFCL>
XX FIX,6 ,0 ,R ,.TOCTW##,<PUSHJ P,UB$PPJ##>
XX FIX,1 ,0 ,L ,.TCOMA##,<JFCL>
XX FIX,6 ,0 ,L ,.TOCTW##,<PUSHJ P,UB$PPG##>
XX FIX,1 ,0 ,L ,.TTABC##,<JFCL>
XX FIX,6 ,0 ,L ,TUPSW,<PUSHJ P,UB$PSW##>
XX FIX,1 ,0 ,L ,.TTABC##,<JFCL>
XX FIX,9 ,0 ,R ,TUDATE,<PUSHJ P,UB$EXP##>
LIST
>
FFORMS (USR,VFAST)
FFORMS (USR,FAST)
FFORMS (USR,NORMAL)
FFORMS (USR,SLOW)
SUBTTL Default format descriptors -- DDBS -- VERY FAST
DEFINE FORMS,<
XLIST
XX FIX,45,1,L,TSDDB##,<JFCL>
LIST
>
FFORMS (DDB,VFAST)
SUBTTL Default format descriptors -- DDBS -- FAST
DEFINE FORMS,<
XLIST
XX FIX,45,1,L,TSDDB##,<JFCL>
XX FIX, 6,1,R,TDECB,<PUSHJ P,DG$BLK##>
XX FIX, 4,0,R,DP$ACC##,<JFCL>
XX FIX, 1,0,R,.TCHAR##,<PUSHJ P,DG$AC1##>
XX FIX, 1,0,L,.TCHAR##,<PUSHJ P,DG$IO##>
XX FIX, 1,0,L,.TCHAR##,<PUSHJ P,DG$SIO##>
LIST
>
FFORMS (DDB,FAST)
SUBTTL Default format descriptors -- DDBS -- NORMAL
DEFINE FORMS,<
XLIST
XX FIX, 1,0,L,.TCHAR##,<PUSHJ P,DG$ACT##>
XX FIX, 1,0,L,.TCHAR##,<PUSHJ P,DG$SPL##>
XX FIX, 8,1,L,.TSIXN##,<PUSHJ P,DG$DEV##>
XX FIX, 4,1,L,.TSTRG##,<PUSHJ P,DG$AIF##>
XX FIX, 8,1,L,.TSIXN##,<PUSHJ P,DG$LOG##>
XX FIX,45,1,L,TSDDB##,<JFCL>
XX FIX, 6,1,R,TDECB,<PUSHJ P,DG$BLK##>
XX FIX, 4,0,R,DP$ACC##,<JFCL>
XX FIX, 1,0,R,.TCHAR##,<PUSHJ P,DG$AC1##>
XX FIX, 1,0,L,.TCHAR##,<PUSHJ P,DG$IO##>
XX FIX, 1,0,L,.TCHAR##,<PUSHJ P,DG$SIO##>
LIST
>
FFORMS (DDB,NORMAL)
SUBTTL Default format descriptors -- DDBS -- SLOW
DEFINE FORMS,<
XLIST
XX FIX, 1,0,L,.TCHAR##,<PUSHJ P,DG$ACT##>
XX FIX, 1,0,L,.TCHAR##,<PUSHJ P,DG$SPL##>
XX FIX, 8,1,L,.TSIXN##,<PUSHJ P,DG$DEV##>
XX FIX, 4,1,L,.TSTRG##,<PUSHJ P,DG$AIF##>
XX FIX, 8,1,L,.TSIXN##,<PUSHJ P,DG$LOG##>
XX FIX,45,1,L,TSDDB##,<JFCL>
XX FIX, 6,1,R,TDECB,<PUSHJ P,DG$BLK##>
XX FIX, 4,0,R,DP$ACC##,<JFCL>
XX FIX, 1,0,R,.TCHAR##,<PUSHJ P,DG$AC1##>
XX FIX, 1,0,L,.TCHAR##,<PUSHJ P,DG$IO##>
XX FIX, 1,0,L,.TCHAR##,<PUSHJ P,DG$SIO##>
CRLF
SPACE 5
LL <Mode:>
XX FIX, 6,1,L,.TOCTW##,<PUSHJ P,DG$MOD##>
LL <Addr:>
XX FIX, 9,1,L,.TOCTW##,<PUSHJ P,DG$ADR##>
XX FIX,10,1,L,DP$SLA##,<JFCL>
XX FIX,10,1,L,DP$DLA##,<JFCL>
LIST
>
FFORMS (DDB,SLOW)
SUBTTL Default format descriptors -- IPCF - NORMAL
DEFINE FORMS,<
XLIST
SPACE 5
LL <IPCF messages: S:>
XX FIX,6 ,1 ,L,.TDECW##,<PUSHJ P,JB$IMS##>
LL <R:>
XX FIX,6 ,1 ,L,.TDECW##,<PUSHJ P,JB$IMR>
LL <outstanding: S:>
XX FIX,3 ,1 ,L,.TDECW##,<PUSHJ P,JB$IOS##>
LL <R:>
XX FIX,3 ,1 ,L,.TDECW##,<PUSHJ P,JB$IOR##>
LL <quotas: S:>
XX FIX,4 ,1 ,L,.TDECW##,<PUSHJ P,JB$IQS##>
LL <R:>
XX FIX,4 ,1 ,L,.TDECW##,<PUSHJ P,JB$IQR##>
LIST
>
FFORMS(IPCF,NORMAL)
SUBTTL Default format descriptors -- DEFAULTS - NORMAL
DEFINE FORMS,<
XLIST
SPACE 5
LL <Defaults: >
LL <Buffers:>
XX FIX,4 ,1 ,L,.TDECW##,<PUSHJ P,JB$DNB##>
VERSION GE,702,<
LL <Bigbuf:>
XX FIX,4 ,1 ,L,.TDECW##,<PUSHJ P,JB$DBB##>
>
LL <Protection:>
XX FIX,5 ,0 ,L,.TPROT##,<PUSHJ P,JB$DPV##>
XX FIX,5 ,1 ,L,ONOFF##,<PUSHJ P,JB$DPS##>
LL <Attach:>
XX FIX,7 ,0 ,L,ATTYES##,<PUSHJ P,JB$DAD##>
LIST
>
FFORMS(DEF,NORMAL)
SUBTTL Default format descriptors -- ACCOUNT - NORMAL
DEFINE FORMS,<
XLIST
SPACE 5
LL <Account: >
XX FIX,39,0 ,L,.TSTRG##,<PUSHJ P,JB$ACC##>
LIST
>
FFORMS(ACT,NORMAL)
SUBTTL Default format descriptors -- BATCH - NORMAL
DEFINE FORMS,<
XLIST
SPACE 5
LL <WTO privs:>
XX FIX,6 ,0 ,L,TWTO,<PUSHJ P,JB$WTO##>
LL <OPR privs:>
XX FIX,8 ,0 ,L,TGOP,<PUSHJ P,JB$GOP##>
LL <Batch stream:>
XX FIX,4 ,0 ,L,TBSN,<PUSHJ P,JB$BSN##>
LL <Limit:>
XX FIX,9 ,0 ,L,TLIMIB,<PUSHJ P,JB$BTL##>
LL <Core:>
XX FIX,3 ,0 ,L,.TDECW##,<PUSHJ P,JB$BCL##>
LIST
>
FFORMS(BAT,NORMAL)
SUBTTL Default format descriptors -- LIMITS - NORMAL
DEFINE FORMS,<
XLIST
SPACE 5
LL <Core limits: physical:>
XX FIX,3 ,0 ,L,.TDECW##,<PUSHJ P,UB$NPP##>
LL <, virtual:>
XX FIX,3 ,0 ,L,.TDECW##,<PUSHJ P,UB$NVP##>
LIST
>
FFORMS(LIM,NORMAL)
SUBTTL Default format descriptors -- QUOTAS - NORMAL
DEFINE FORMS,<
XLIST
SPACE 5
LL <Quotas: Enq/Deq:>
XX FIX,3 ,0 ,L,.TDECW##,<PUSHJ P,UB$EDQ##>
LL < IPCF send:>
XX FIX,4 ,0 ,L,.TDECW##,<PUSHJ P,UB$SND##>
LL <receive:>
XX FIX,4 ,0 ,L,.TDECW##,<PUSHJ P,UB$RCV##>
LIST
>
FFORMS(QTA,NORMAL)
SUBTTL Default format descriptors -- STAMP - NORMAL
DEFINE FORMS,<
XLIST
XX FIX,9 ,0 ,R,.TDATE##,<PUSHJ P,SB$DAT##>
SPACE 1
XX FIX,8 ,0 ,R,.TTIME##,<PUSHJ P,SB$TIM##>
LIST
>
FFORMS (STAM,NORMAL)
SUBTTL Default format descriptors -- TIME - NORMAL
DEFINE FORMS,<
XLIST
SPACE 5
LL <Login for >
XX FLT,9 ,1 ,R,.TUFTM##,<PUSHJ P,JB$IJL##>
LL <at >
XX FLT,19, 0,R,.TWDTM##,<PUSHJ P,JB$JLT##>
IFN FTRESET,<
CRLF
SPACE 5
LL <Reset for >
XX FLT,9 ,1 ,R,.TUFTM##,<PUSHJ P,JB$ITR##>
LL <at >
XX FLT,19, 0,R,.TWDTM##,<PUSHJ P,JB$STM##>
>;END IFN FTRESET
LIST
>
FFORMS (TIM,NORMAL)
SUBTTL Default format descriptors -- CORE - NORMAL
DEFINE FORMS,<
XLIST
SPACE 5
LL <Core limits: Current: Virt:>
XX FIX,4 ,0 ,L,.TDECW##,<PUSHJ P,JB$CVL##>
LL <Phys:>
XX FIX,5 ,0 ,L,.TDECW##,<PUSHJ P,JB$CPL##>
LL <Maximum: Virt:>
XX FIX,4 ,0 ,L,.TDECW##,<PUSHJ P,JB$MVL##>
LL <Phys:>
XX FIX,4 ,0 ,L,.TDECW##,<PUSHJ P,JB$MPL##>
LIST
>
FFORMS (COR,NORMAL)
SUBTTL Routines -- LKNAM - Lookup keyword in a table
LKNAM:: JUMPE N,E$$NKS ;JUMP IF NULL
PUSHJ P,.SAVE1## ;SAVE P1
MOVEI P1,(T1) ;SAVE ADDR TABLE
PUSHJ P,.NAME## ;LOOKUP NAME
JRST LKNA.1 ;ERROR
SUBI T1,1(P1) ;RETURN OFFSET
ANDI T1,-1 ;JUST INDEX
POPJ P, ;AND RETURN
LKNA.1: JUMPG T1,E$$ABK ;AMBIGIOUS
$FATAL (UNK,<Unknown keyword >,E.UNK)
$FATAL (ABK,<Ambiguous keyword >,E.UNK)
$FATAL (NKS,<No keyword specified>)
E.UNK: MOVE T1,N ;GET KEYWORD
PJRST .TSIXN## ;TYPE AND RETURN
SUBTTL Format print routines -- TNAME - Type a user name
TNAME: PUSHJ P,JB$NAM## ;GET NAME POINTER
PUSH P,1(T1) ;SAVE SECOND HALF
MOVE T1,(T1) ;GET FIRST HALF
SKIPN (P) ;SECOND HALF BLANK?
JRST [POP P,(P) ;YES--CLEAN STACK
PJRST .TSIXN##] ;AND TYPE WHAT WE GOT
PUSHJ P,.TSIXS## ;TYPE
POP P,T1 ;GET SECOND HALF BACK
PJRST .TSIXN## ;TYPE AND RETURN
SUBTTL Format print routines -- TNODE - Type node and line
TNODE: PUSHJ P,JB$TLN##
CAML T1,SYSPTY##
JRST TCTL
PUSHJ P,JB$NNM##
JUMPE T1,.POPJ##
PUSHJ P,.TSIXN##
MOVEI T1,"_"
PUSHJ P,.TCHAR##
PUSHJ P,JB$NLN##
PUSHJ P,.TOCTW##
PUSHJ P,JB$APC##
CAIG T1,1
POPJ P,
PJRST TAPC
SUBTTL Format print routines -- TCTL - Type controlling program/job
TCTL: PUSHJ P,JB$CPN##
JUMPE T1,.POPJ##
PUSHJ P,.TSIXS##
MOVEI T1,[ASCIZ/ J/]
PUSHJ P,.TSTRG##
PUSHJ P,JB$CJN##
PJRST .TDECW##
SUBTTL Format print routines -- TCORE - Type core size
TCORE: PUSHJ P,.SAVE1## ;SAVE P1
PUSHJ P,JB$PPL## ;PHYSICAL LOW SIZE
MOVEI P1,(T1) ;SAVE A MOMENT
PUSHJ P,.TDECW##
PUSHJ P,JB$PVL## ;VIRTUAL LOW SIZE
CAIE T1,-1(P1) ;SAME AS LOW SIZE (+.UPMP)
PUSHJ P,.TDECP##
PUSHJ P,JB$SGN##
JUMPL T1,[MOVEI T1,[ASCIZ/+SPY/]
PUSHJ P,.TSTRG## ;TYPE SPY
JRST TCORE1] ;AND OUTPUT FUNNY SPACE
MOVEI T1,"+"
PUSHJ P,.TCHAR##
PUSHJ P,JB$PPH## ;PHYSICAL HIGH SIZE
MOVEI P1,(T1) ;SAVE A MOMENT
PUSHJ P,.TDECW##
PUSHJ P,JB$PVH## ;VIRTUAL HIGH SIZE
CAIE T1,(P1) ;SAME AS HIGH SIZE
PUSHJ P,.TDECP##
TCORE1: MOVE T1,S.INCLUDE## ;GET /INCLUDE
TRNN T1,INCFUNNY## ;/INCLUDE:FUNNY?
POPJ P, ;NO--RETURN
PUSHJ P,.TLBRK## ;TYPE "["
PUSHJ P,JB$PFS## ;PAGES FUNNY SPACE
PUSHJ P,.TDECW## ;TYPE
PJRST .TRBRK## ;CLOSE "]" AND RETURN
SUBTTL Format print routines -- TUNAME - Type a user name
TUNAME: PUSHJ P,UB$NAM## ;GET NAME POINTER
PUSH P,1(T1) ;SAVE SECOND HALF
MOVE T1,(T1) ;GET FIRST HALF
SKIPN (P) ;SECOND HALF BLANK?
JRST [POP P,(P) ;YES--CLEAN STACK
PJRST .TSIXN##] ;AND TYPE WHAT WE GOT
PUSHJ P,.TSIXS## ;TYPE
POP P,T1 ;GET SECOND HALF BACK
PJRST .TSIXN## ;TYPE AND RETURN
SUBTTL Format print routines -- TUPSW - Type a password
TUPSW: TLNN F,(FL.GOD) ;LOTS OF PRIVS?
SETZ T1, ;NOPE
PJRST .TSIXN## ;TYPE PASSWORD AND RETURN
SUBTTL Format print routines -- Type LOGIN hours
TUWDH:: TDZA T2,T2 ;WEEKDAY HOURS
TUWEH:: MOVEI T2,1 ;WEEKEND HOURS
PUSHJ P,.SAVE4## ;SAVE SOME ACS
SKIPN P1,T1 ;GET LOGIN HOURS
JRST TUWK2 ;NOT ALLOWED
SETZ P3, ;CLEAR INITIAL HOUR
TRZ F,FR.COMMA ;CLEAR COMMA NEEDED FLAG
MOVE P4,T2 ;SAVE FLAG
TUWK1: JFFO P1,.+1 ;GET STARTING HOUR
TROE F,FR.COMMA ;NEED A COMMA?
PUSHJ P,.TCOMA## ;YES
LSH P2,(P4) ;POSITION AS NECESSARY
MOVEI T1,(P2) ;COPY IT
ADDB T1,P3 ;OFFSET
PUSHJ P,.TDECW## ;OUTPUT IT
LSH P1,(P2) ;POSITION BEYOND STARTING HOUR
SETCA P1,P1 ;COMPLEMENT WORD
JFFO P1,.+1 ;GET TERMINATING HOUR
LSH P2,(P4) ;POSITION AS NECESSARY
MOVEI T1,(P2) ;COPY IT
ADDB T1,P3 ;OFFSET
MOVNS T1 ;NEGATE SO MINUS SIGN PRECEEDS NUMBER
PUSHJ P,.TDECW## ;OUTPUT IT
SETCA P1,P1 ;RESET MASK
LSH P1,(P2) ;LEFT JUSTIFY IT
CAIGE P3,^D24 ;END OF DAY?
JUMPN P1,TUWK1 ;NO--LOOP
POPJ P, ;RETURN
TUWK2: MOVEI T1,[ASCIZ |not allowed|]
PJRST .TSTRG## ;OUTPUT TEXT AND RETURN
SUBTTL Format print routines -- TUPTR - Type program to run
TUPTR:: SKIPN 0(T1) ;HAVE A PROGRAM TO RUN?
JRST TUPTR1 ;NO
PUSHJ P,.SAVE1## ;SAVE P1
MOVE P1,T1 ;SAVE ARGUMENT
MOVE T1,0(P1) ;GET DEVICE NAME
PUSHJ P,.TDEVN## ;TYPE IT
MOVE T1,1(P1) ;GET PROGRAM NAME
PUSHJ P,.TSIXN## ;TYPE IT
MOVE T1,2(P1) ;GET DIRECTORY
PJRST .TPPNW## ;TYPE IT AN RETURN
TUPTR1: MOVEI T1,[ASCIZ |(none)|]
PJRST .TSTRG## ;TYPE TEXT AND RETURN
SUBTTL Format print routines -- TUDATE - Type an expiration date
TUDATE::CAIE T1,777777 ;ETERNITY?
PJRST .TDATE## ;NO-- TYPE DATE AND RETURN
MOVEI T1,[ASCIZ |Eternity|] ;POINT TO TEXT
PJRST .TSTRG## ;TYPE IT AND RETURN
SUBTTL Format print routines -- TPGRR - Type paging rate
TPGRR: JUMPE T1,.POPJ## ;RETURN IF ZERO
PUSH P,T1 ;ELSE SAV IT
MOVEI T1,[ASCIZ/PGR:/]
PUSHJ P,.TSTRG##
POP P,T1 ;GET IT BACK
;AND FALL INTO TPGR
TPGR:: IDIVI T1,^D100 ;SPLIT APART
PUSH P,T2 ;SAVE REMAINDER
TPGRZ: PUSHJ P,.TDECW## ;TYPE
PUSHJ P,.TDOT## ;DOT
POP P,T1 ;GET REMAINDER
MOVEI T3,^D2 ;2 DIGITS
PJRST .TDECZ## ;TYPE WITH ZEROS
SUBTTL Format print routines -- THPQP - Type HPQ value
THPQP: JUMPE T1,.POPJ##
PUSH P,T1
MOVEI T1,[ASCIZ/HPQ:/]
PUSHJ P,.TSTRG##
POP P,T1
PJRST .TDECW##
SUBTTL Format print routines -- TDSKP - Type DSK value
TDSKP: JUMPE T1,.POPJ##
PUSH P,T1
MOVEI T1,[ASCIZ/DPR:/]
PUSHJ P,.TSTRG##
POP P,T1
PJRST .TDECW##
SUBTTL Format print routines -- TLIMIB - Type batch time limit
TLIMI: JUMPE T1,.POPJ##
PUSH P,T1
MOVEI T1,[ASCIZ/LIM:/]
PUSHJ P,.TSTRG##
POP P,T1
TLIMIB: JUMPE T1,.POPJ##
PJUMPG T1,TTIME
PUSH P,T1
PUSHJ P,.TDASH##
POP P,T1
MOVNS T1
PJRST TTIME
SUBTTL Format print routines -- TPC - type octal PC word
TPC: MOVEI T3,^D6
PJRST .TOCTZ##
SUBTTL Format print routines -- TTIME - Print time
TTIME: SKPNO S.INCREMENAL##
CAML T1,[^D60*^D60*^D1000]
CAIA
PJRST .TTIMH##
ADDI T1,^D500
PJRST .TTIME##
SUBTTL Format print routines -- TDECB - Type a decimal number if non-zero
TDECB: JUMPE T1,.POPJ##
PJRST .TDECW##
SUBTTL Format print routines -- T1000 - Type a decimal number (scaled down 1000)
T1000: ADDI T1,^D500
IDIVI T1,^D1000
PJRST .TDECW##
SUBTTL Format print routines -- TWTO - Type WTO privs
TWTO:: MOVE T1,[ [ASCIZ/all/]
[ASCIZ/WTO/]
[ASCIZ/none/] ](T1)
PJRST .TSTRG##
SUBTTL Format print routines -- TOPR - Type OPR privs
TGOP:: MOVE T1,[ [ASCIZ/none/]
[ASCIZ/system/]
[ASCIZ/host/]
[ASCIZ/remote/] ](T1)
PJRST .TSTRG##
SUBTTL Format print routines -- TBSN - Type batch stream number
TBSN: PJMPGE T1,.TDECW##
MOVEI T1,[ASCIZ/no/]
PJRST .TSTRG##
TRMT: MOVE T1,[EXP "L","R"](T1)
PJRST .TCHAR##
TAPC: MOVE T1,[EXP "?","H","D","T","G","A","M","N","?","?"](T1)
PJRST .TCHAR##
TDSC: JUMPE T1,.POPJ##
PUSHJ P,LB$APC##
CAIN T1,1 ;HARDWIRED?
SKIPA T1,["P"] ;YES--POWERED ON
MOVEI T1,"C" ;NO--CARRIER
PJRST .TCHAR##
TSLV: MOVE T1,[EXP " ","S"](T1)
PJRST .TCHAR##
TMCL: MOVE T1,[EXP " ","M"](T1)
PJRST .TCHAR##
TTAC: MOVE T1,[EXP " ","A"](T1)
PJRST .TCHAR##
TTAP: MOVE T1,[EXP " ","I"](T1)
PJRST .TCHAR##
TTCJ: MOVE T1,[EXP " ","U"](T1)
PJRST .TCHAR##
TJOB: JUMPE T1,.POPJ##
PUSH P,T1
MOVEI T1,[ASCIZ/job/]
PUSHJ P,.TSTRG##
POP P,T1
MOVEI T3,^D3
PJRST .TDECJ##
IFN FTLGNQ,<
TLQP: JUMPE T1,.POPJ##
JUMPL T1,[MOVEI T1,"P"
PJRST .TCHAR##]
PUSH P,T1
MOVEI T1,[ASCIZ/Q#/]
PUSHJ P,.TSTRG##
POP P,T1
PJRST .TDECW##
> ;END IFN FTLGNQ
IFE FTIPC,<TCOMMA==.TCOMA##>
IFN FTIPC,<
TCOMMA: PUSHJ P,JB$PPN## ;GET PPN
PUSH P,T1 ;SAVE
PUSHJ P,JB$LPN## ;GET LOGGED IN PPN
POP P,T2 ;RESTORE PPN
CAME T1,T2 ;MATCH?
PJRST .TDASH## ;NO--DELIMIT "-"
PJRST .TCOMA## ;YES--DELIMIT ","
>;END IFN FTIPC
TOBJS: PUSHJ P,.SAVE1## ;SAVE P1
MOVN P1,OBJ.MX## ;GET -OBJECT COUNT
HRLZS P1 ;PUT IN LH
HRR P1,T1 ;POINT TO THE RETURNED BLOCK
OBJS.1: SKIPN T1,(P1) ;GET A WORD
JRST OBJS.2 ;NULL ENTRY
HLRZS T1 ;GET THE NCL OBJECT TYPE
ADD T1,OBJTAB## ;INDEX INTO THE ANF-10 OBJECT TABLE
HRLZ T1,(T1) ;GET THE SIXBIT OBJECT NAME
PUSHJ P,.TSIXN## ;OUTPUT IT
PUSHJ P,.TLBRK## ;OUTPUT A BRACKET
HRRZ T1,(P1) ;GET THE NUMBER OF DEVICES
PUSHJ P,.TDECW## ;OUTPUT IT
PUSHJ P,.TRBRK## ;OUTPUT A BRACKET
PUSHJ P,.TSPAC## ;AND A SPACE
OBJS.2: AOBJN P1,OBJS.1 ;LOOP
POPJ P, ;DONE
; Operator TTY number
TOOPR: JUMPGE T1,.TOCTW## ;OUTPUT TTY NUMBER IN OCTAL UNLESS
PJRST .TSPAC## ; NO OPR LINE CONNECTED AT THIS STATION
; Topology/cost output
TOTOP: PUSHJ P,.SAVE2## ;SAVE P1 AND P2
MOVE P1,T1 ;POINT TO BLOCK (WORKING COPY)
MOVE P2,P1 ;REMEMBER THE ORIGINAL
TOTO.1: SKIPN T1,(P1) ;END OF LIST?
JRST TOTO.2 ;YES
PUSHJ P,TONODE ;OUTPUT (NNN)
MOVEI T1,"/" ;GET A SLASH
PUSHJ P,.TCHAR## ;OUTPUT IT
HLRZ T1,(P1) ;GET COST
PUSHJ P,.TDECW## ;OUTPUT IT
HLRZ T2,(P1) ;GET COST AGAIN
MOVEI T1,2 ;NUMBER OF SPACES TO NEXT FIELD
CAIGE T1,^D9 ;PAD COST OUT
ADDI T1,1 ; TO 2 COLUMNS
PUSHJ P,.TSPAN## ;OUTPUT N SPACES
AOJA P1,TOTO.1 ;LOOP
TOTO.2: CAME P1,P2 ;DECNET COMPAT PORT MAYBE?
POPJ P, ;NO
MOVEI T1,[ASCIZ |None|] ;MAKE IT LOOK LIKE THE NETWORK PROGRAM
PJRST .TSTRG## ;OUTPUT TEXT AND RETURN
; Type node neighbors
TONEI: PUSHJ P,.SAVE1## ;SAVE P1
MOVE P1,T1 ;POINT TO LIST
TONE.1: SKIPN T1,(P1) ;GET A NODE
POPJ P, ;DONE IF END OF LIST
PUSHJ P,TONODE ;TYPE IT
MOVEI T1,2 ;COLUMNS TO THE NEXT FIELD
PUSHJ P,.TSPAN## ;OUTPUT SPACE
AOJA P1,TONE.1 ;AND LOOP
; Type a node number as (nnn) with leading spaces so columns line up
; Call: MOVE T1, node number
; PUSHJ P,TONODE
;
TONODE: HRRZS T3,T1 ;SAVE NODE NUMBER
LSH T1,33 ;LEFT JUSTIFY
JFFO T1,.+1 ;COUNT LEADING ZEROS
MOVE T1,T2 ;GET COUNT
IDIVI T1,3 ;3 BITS PER DIGIT
SKIPE T1,[EXP 0,1,2](T1) ;GET NUMBER OF LEADING SPACES
PUSHJ P,.TSPAN## ;OUTPUT THEM
PUSHJ P,.TLPAR## ;OUTPUT "("
MOVE T1,T3 ;GET NODE NUMBER
PUSHJ P,.TOCTW## ;OUTPUT IT
PJRST .TRPAR## ;OUTPUT ")" AND RETURN
; Type a YES or NO
; Call: MOVE T1, 0 or 1
; PUSHJ P,TYESNO
;
TYESNO::MOVEI T1,[[ASCIZ |No|]
[ASCIZ |Yes|]](T1)
PJRST .TSTRG## ;TYPE YES OR NO AND RETURN
SUBTTL Storage
$LOW
END