1
0
mirror of https://github.com/PDP-10/its.git synced 2026-02-24 16:17:26 +00:00
Files
PDP-10.its/src/inquir/lookup.4
Eric Swenson 947d786951 Added LOOKUP to look up INQUIR entries.
Added INQUPD to process INQUIR database updates.
Added DMUNCH to produce INQUIR;DIRS BIN file.
2016-12-03 15:09:51 -08:00

275 lines
6.1 KiB
Groff
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.
;-*- Mode: Midas -*-
TITLE LOOKUP an Inquire entry
;CStacy, 4/26/83
SUBTTL Basic definitions
;;; Registers.
X=0 ;Super temporary register.
A=1 ;General registers.
B=2
C=3
D=4
E=5
BP=6 ;Byte pointer.
CHAR=7 ;Character being manipulated.
T=10 ;Temporary
TT=11 ;Temporary+1.
OC==12 ;OUT register.
U1==13 ;4 UUO Registers.
U2==14
U3==15
U4==16
P=17 ;Stack pointer.
;;; I/O Channels
DSKI=14 ;Disk input.
TTYO=15 ;TTY typeout.
TTYI=16 ;TTY typein.
;;; Macros and output routines.
$$OUT==1
.INSRT KSC;MACROS >
.INSRT KSC;IVORY >
.INSRT KSC;OUT >
;;; LSR1 database routines.
$$OVLY==1
.INSRT LSRTNS >
SUBTTL Interrupt Handler and various returns
POPJ1: AOS (P) ;Skip
CPOPJ: RET ;Return
SYSLOS::
AUTPSY: 0 ;Fatal error JSR here.
DEATH: SKIPE DEBUG ;Come here to log out.
.VALUE [0]
.LOGOUT 1,
TMPLOC 42,{-TSINTL,,TSINT} ;New style interrupts.
INTACS==T_6+7 ;T,TT, and OUT registers preserved.
TSINT: INTACS,,P
0 ? 1_TTYI ? 0 ? <1_TTYO>\<1_TTYI> ? CHRINT
0 ? 1_TTYO ? 0 ? 0 ? MORINT
TSINTL==:.-TSINT
;;; Interrupt dismissal
INTRET: SYSCAL DISMIS,[%CLBIT,,INTACS ? P]
JSR SYSLOS
;;; Console interrupts.
CHRINT: MOVEI T,TTYI ;INTERRUPT CHAR.
.ITYIC T,
JRST INTRET
CAIE T,^S
CAIN T,^G
JRST [.RESET TTYO,
SYSCAL TTYFLS,[ %CLBIT,,1 ? %CLIMM,,TTYI]
.LOSE %LSSYS
JRST FLSIT1]
JRST INTRET
MORINT: OUT(TTYO,("--More--")) ;MORE BREAK.
SYSCAL IOT,[%CLBIT,,%TIPEK ? %CLIMM,,TTYI ? %CLOUT,,T]
.LOSE %LSFIL
CAIE T,40
CAIN T,177
.IOT TTYI,T
CAIE T,40
JRST FLSIT
OUT(TTYO,("A"))
JRST INTRET
FLSIT: OUT(TTYO,("Flushed"))
FLSIT1: JRST DEATH ;means we are done.
SUBTTL Main program
GO: MOVE P,[-PDLLEN,,PDL] ;Init the stack.
SYSCAL OPEN,[%CLBIT,,<.UAO\%TJDIS> ? %CLIMM,,TTYO ? [SIXBIT /TTY/]]
.LOSE %LSFIL
SYSCAL OPEN,[%CLBIT,,.UAI ? %CLIMM,,TTYI ? [SIXBIT /TTY/]]
.LOSE %LSFIL
SYSCAL CNSGET,[%CLIMM,,TTYO ? %CLOUT,,X ? %CLOUT,,TCMXH]
.LOSE %LSFIL
SYSCAL TTYSET,[%CLIMM,,TTYI ? [222222,,222222] ? [230222,,220222]]
.LOSE %LSFIL
.SUSET [.ROPTION,,A] ;Read job option bits.
TLO A,%OPINT\%OPOPC ;Turn on winning-PC and new interrupts.
.SUSET [.SOPTION,,A] ;Set option bits.
.SUSET [.SMSK2,,[<1_TTYI>\<1_TTYO>]] ;Enable TTY interrupts.
OUT(TTYO,OPEN(UC$IOT))
OUT(,CH(TTYO)) ;Open typeout display as default device.
TLNN A,OPTCMD ;If user forgot JCL
JRST [ SKIPN DEBUG ; and we are not debugging
JRST NOJCL ; we can't do much.
MOVE A,[SIXBIT /TEST/]
MOVEM A,UNAME ; Use TEST name for debugging.
JRST MAPLSR ]
.BREAK 12,[..RJCL,,JCLBUF] ;Read JCL into buffer.
MOVE BP,[440700,,JCLBUF]
MOVE B,[440600,,UNAME]
MOVEI C,6
GETJCL: ILDB CHAR,BP
JUMPE CHAR, ENDJCL ;A ^@ ends JCL.
CAIN CHAR,^M ;So does a ^M.
JRST ENDJCL
CAIN CHAR,37 ;So does a ^_.
JRST ENDJCL
CAIN CHAR,3 ;So does a ^C.
JRST ENDJCL
CAIGE CHAR,140 ;Convert to Sixbit.
SUBI CHAR,40
IDPB CHAR,B ;Store as uname.
SOJN C,GETJCL
ENDJCL: CAIE C,6
JRST MAPLSR
NOJCL: OUT(,("AUsage is :LOOKUP <user>"))
JRST DEATH
MAPLSR: MOVEI A,DSKI ;Try to map in Inquire database.
MOVE B,[-LSRPGS,,LSRPAG]
CALL LSRTNS"LSRMAP
JRST [ OUT(,("AUnable to map Inquire database."),CRLF)
JRST DEATH ]
GETLSR: MOVEI A,DSKI
MOVE B,UNAME ;Look up luser in database.
CALL LSRTNS"LSRUNM ;Get core addr of entry in B.
JRST [ OUT(,("ANot found"),CRLF)
JRST DEATH ]
SHOWIT:
SKIPN DEBUG
OUTCAL(,("C")) ;Clear screen.
MOVSI D,-NITMS ;AOBJN pointer to Items.
GETITM: HRRZ A,LSTTAB(D) ;Get next item description string.
HRLI A,440700 ;Make Bp to it.
OUT(,TZ$(A),(" "),LPAR) ;Print long name of item.
HLRZ E,LSTTAB(D) ;Get item number.
CALL NAMOUT ;Print short name of item.
OUT(,RPAR,(":"),CALL(PTAB))
MOVE A,E ;Get item number.
CALL LSRTNS"LSRITM ;Look up item in database.
JRST [ OUT(,CRLF) ; If not there skip it.
JRST NXTITM ]
CALL ITMOUT ;Type out the item's value.
NXTITM: AOBJN D,GETITM ;Get another item.
JRST DEATH ;All done.
SUBTTL Additional Output routines
;;; CLEOL and move to column #o50.
PTAB: MOVE T,[ASCIZ /LH(/]
OUT(,TZ(T))
RET
;;; ITMOUT types out the Inquire item pointed at by the Bp in A.
;;; Newlines get handled properly. The Bp is updated.
ITMOUT: ILDB CHAR,A
CAIN CHAR,^M ;If this is a CR
JRST [ ILDB CHAR,A ; Gobble the LF.
OUT(,CRLF,CALL(PTAB)) ; Do a prettier CRLF.
JRST ITMOUT ] ; Continue.
SKIPN CHAR
JRST [ OUT(,CRLF)
RET ]
.IOT TTYO,CHAR
JRST ITMOUT
;;; NAMOUT takes a LSR1 item number in E, and types out its name.
NAMOUT: HRRZI T,ITMNAM+1(E) ;Get addr of item short name.
HRLI T,440700 ;Make Bp to it.
MOVEI TT,5. ;Max five chars.
NAMOU1: ILDB CHAR,T ;Get character.
JUMPE CHAR,NAMOU2 ;If zero, done.
.IOT TTYO,CHAR ;Type it.
SOJN TT,NAMOU1 ;Go back for more characters.
NAMOU2: RET ;Done.
SUBTTL Storage
;;; Macro to create a table of item descriptions.
NITMS==0
DEFINE ITEM NUM,&DESC
NITMS==NITMS+1
NUM,,[ASCIZ DESC]
TERMIN
;;; This table is in the order we want the items listed.
LSTTAB: ITEM LSRTNS"I$UNAM,"User-name"
ITEM LSRTNS"I$AUTH,"Authorization"
ITEM LSRTNS"I$NAME,"Name"
ITEM LSRTNS"I$NICK,"Nick-name"
ITEM LSRTNS"I$GRP,"Group"
ITEM LSRTNS"I$REL,"Relation"
ITEM LSRTNS"I$MITA,"MIT address"
ITEM LSRTNS"I$MITT,"MIT phone"
ITEM LSRTNS"I$HOMA,"Home address"
ITEM LSRTNS"I$HOMT,"Home phone"
ITEM LSRTNS"I$NETA,"Network mailbox"
ITEM LSRTNS"I$BRTH,"Birthday"
ITEM LSRTNS"I$PROJ,"Project"
ITEM LSRTNS"I$SUPR,"Supervisor"
ITEM LSRTNS"I$REM,"Remarks"
ITEM LSRTNS"I$DIR,"File directories"
ITEM LSRTNS"I$LOCL,"Local fields"
ITEM LSRTNS"I$MACH,"Machines"
ITEM LSRTNS"I$ALTR,"Last Alteration"
;ITEMN+N has name of n'th item, as 5 chars of ascii.
ITMNAM: LSRTNS"ITMIRP [.1STWD ASCII/ITEM/]
PDLLEN==64. ;Stack length.
LSRPGS==220. ;Number of pages reserved for LSR1.
JCLBFL==10. ;Number of words for JCL buffer.
PDL: BLOCK PDLLEN ;The stack.
DEBUG: 0 ;-1 iff debugging.
JCLBUF: BLOCK JCLBFL ;JCL buffer.
TCMXH: 0 ;Console parameters.
UNAME: 0 ;UNAME of loser to look up.
CONSTANTS
VARIABLES
VARCHK
LSRPAG==<.+1777>/2000 ;Starting page of Inquire database.
LSR1=LSRPAG*2000 ;Address of database header.
END GO