1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-28 12:59:20 +00:00

Added support for TTLOC.

This commit is contained in:
Eric Swenson
2016-11-26 13:09:35 -08:00
parent 77b59e1676
commit f97c1e6ae8
3 changed files with 298 additions and 0 deletions

294
src/sysen1/ttloc.170 Normal file
View File

@@ -0,0 +1,294 @@
; -*- MIDAS -*-
if1 Title TTLOC -- Tell where a terminal is located
a=1
b=2
c=3
d=4
e=5
dskc=10
p=17
define syscal op,args
.call [setz ? sixbit /op/ ? args ((setz))]
termin
argi=1000,,0
val=2000,,0
cnti=5000,,0
ttsize=21 ;80 characters + 1 word
datpag==2 ;page we use for the database
tabloc=datpag*2000 ;Start of the database
beg: move p,[-7,,pdl]
syscal OPEN,[ cnti .uii ? argi dskc ? [sixbit /DSK/]
[sixbit /TTLOC/] ? [sixbit /DATA/] ? [sixbit /SYSBIN/]]
jrst [ syscal OPEN,[ cnti .uio ? argi dskc ? [sixbit /DSK/]
[sixbit /TTLOC/] ? [sixbit /DATA/]
[sixbit /SYSBIN/]]
.lose %lsfil
move a,[-2,,datpag]
syscal CORBLK,[ argi %cbndw\%cbndr ? argi %jself
a ? argi %jsnew]
.lose %lsfil
move a,[444400,,<<datpag>*2000>]
movei b,4000
syscal SIOT,[ argi dskc ? a ? b]
.lose %lsfil
.close dskc,
jrst beg] ; retry!
move a,[-2,,datpag]
movsi b,-2 ;-2,,0
syscal CORBLK,[ argi %cbndw\%cbndr ? argi %jself ? a
argi dskc ? b]
.lose %lssys
.close dskc,
move c,[-3,,[ .rcnsl,,a ? .runame,,uname ? .rxjname,,b]]
.suset c
jumpl a,[.logout 1,] ;detached or something
and b,[770000,,0] ;check the frist char of our JNAME
camn b,[sixbit /S/] ;Is this a STYLOC?
jrst styloc ; yes, don't translate stys
syscal STYGET,[ argi %jsnum(a) ? val b] ;get UIND of sty owner
.lose %lssys
hrrzs b ;clear left half
jumpe b,styloc ;If it's zero, this isn't a STY
move c,[-4,,[ sixbit /CNSL/ ? movem b ? sixbit /UNAME/ ? movem d]]
syscal USRVAR,[ argi %jsnum(b) ? c] ;get that TTY# and his UNAME
.lose %lssys
jumpl b,styloc ;No TTY, don't do it!
jumpe d,styloc ;No uname??
movei a,(b) ;use this TTYLOC
movem d,uname ;and this uname
styloc: imuli a,ttsize ;compute offset of TTY in table
addi a,tabloc ;make it absolute
move b,uname ;include the UNAME to note change of users
movem b,(a) ;as the first word in the entry
aos a ;next word starts the text area
setzm (a) ;Must empty out the area for DDT to hack it
hrli b,(a) ;from this word
hrri b,1(a) ;to the next word
blt b,ttsize-2(a) ;clearing all the buffer
.break 12,[..rjcl,,jclbuf] ;get our JCL into the data area
skipn jclbuf ;If there's no JCL
jrst flush
ldb b,[350700,,jclbuf] ;Is the JCL null?
cain b,33 ;Magic escape?
jrst magesc ; Don't flush it!
caie b,^I ;Tab is space.
cail b,40 ; control char?
caia
jrst flush
magesc: setz b, ;a null
move c,[010700,,jclbuf+ttsize-2] ;mark the end of the string
dpb b,c
hrli a,440700 ;turn A into a Byte Pointer
move c,[440700,,jclbuf] ;and get a Byte Pointer to our data
move e,rooms ;get aobjn ptr to room definitions
roomck: hlrz d,(e) ;get asciz abbrev for room
hrli d,440700 ;make it a Byte Pointer
pushj p,streq ;equal?
caia
jrst [ hrrz c,(e) ; yes, we found it!
hrli c,440700 ; use the expansion instead of the JCL
jrst found]
aobjn e,roomck ;next room
found: pushj p,copy ;copy the string
.logout 1, ;bye-bye
copy: ildb b,c ;get a char
cain b,^I ;Don't let TAB's confuse NAME
movei b,40 ; use a space instead!
cain b,33 ;magic escape?
jrst copy1
cail b,40 ;And if it's a control-character,
cain b,177 ; or rubout?
popj p, ; that's the end
copy1: idpb b,a ;otherwise send it out
jrst copy ;and do another one
flush: setzm (a) ;clear out first word
setzm -1(a) ;clear out UNAME (overkill)
.logout 1,
streq: push p,a
push p,b
push p,c
streq1: ildb a,d ;get char of match string
ildb b,c ;get a char of string being tested
cain a,^I ;Tab?
movei a,40 ; That's a space here
cain b,^I ;Tab?
movei a,40 ; That's a space here!
jumpe a,[ caie b,177
caige b,40 ; End of the tested string?
aos -3(p) ; yes, it's a match
jrst strext] ; In any event, there's no more
caige b,40 ;If this is a terminating char
cain b,33 ;Magic escape is OK, goes in
caia
jrst strext ;if it's the end already can't be equal
cail b,"a ;uppercasify
caile b,"z
caia
subi b,40
cail a,"a
cail a,"z
caia
subi a,40
cain b,(a) ;are they the same?
jrst streq1 ; yes, try next
strext: pop p,c
pop p,b
pop p,a
popj p, ;no, fail return
uname: 0
pdl: block 10 ;very short pdl
jclbuf: block ttsize-1
-1 ;mark the end of the buffer
roomct==0
define room [name],-info
roomct==roomct+1
foo=[asciz énfoÝ
irp loc,,name
[asciz ìocÝ,,foo
termin
expunge foo
termin
rooms: -rmsize,,.+1
;; Secretary(-ies)
room [803,CYNTHI,Cynthia] ,803 Cynthia's Office, x5869
;; Mathlab Group
room [800F] ,800F Lisp Machines x6026
room [831,JM,MERMAN] ,831 Goodine x5891
room [833,RLB,CWH,SOLEY] ,833 Hoffman, Soley x5887
room [834,KMP,WGD,BIL,BILD],834 Dubuque x7834
room [839,CEL] ,839 Leiserson x5833
;; 7th floor
room [723,Alan,HQM] ,723 x8843 Alan, HQM
;; 5 floor people
room [540,JNC,Chiappa],540 Chiappa, x3-6018
room [537,Bisbee,Feingold,OAF],537 Bisbee,Feingold x3-6013
room [513,Reed,DPR],513 Reed
room [512,Fagin,Clark,DCLARK],512 Fagin,Clark x3-6002
room [510,Gramlich,Greenwald,Goldfarb],510 Gramlich,Greenwald,Goldfarb x3-6042
room [509,Sollins,Theriault,Frankel],509 Sollins,Theriault,Frankel x3-6006
room [508,Koile,Topolcic,Zhang],508 Koile,Topolcic,Zhang x3-6005
room [507,Svobodova,Lopez,Estrin],507 Svobodova,Lopez,Estrin
room [506,Webber],506 Webber x3-6023
room [505,Saltzer],505 Saltzer x3-6016
room [503,Ludwig,Baldwin],503 Ludwig, Baldwin x3-6020
room [502,Cooper,Plotnick,Allen,Patton],502 Cooper,Plotnick,Allen,Patton x3-6061
room [501,Martin,Thomas],501 Martin, Thomas
room [206,HP2640],206 HP2640 x3-1419
room [RTS,UNIX,4th],4th floor x3-6048
room [433,JAR,DAM],433 JAR, DAM x3-8581
;; cdmg
room [369,TAR] ,369 Russ x3533
room [304,CIA] ,No Such Room
room [368,WJL] ,368 Long x3508
room [372,CRE,BEN] ,372 Kuipers, Eliot x3510
room [365,PSZ] ,365 Szolovits x3476
room [366,ROSIE] ,366 Rosie's Office, x5860
room [367,RAMESH,Patil] ,367 Patil x3539
room [355,GSB] ,355 Burke, Randoms x3546
;; Random LCS
room [hell,hades] ,833 Hades x5887
room [800D,coke] ,800D Consoles
room [9th,9mc] ,9th Floor VT52 by MC x6765
room [9ai] ,9th Floor next to AI x6765
room [shit,barf,piss] ,Men's room, third stall
;; Delphi
room [delphi] ,Delphi (38-376) x4650
room [staff,6.031ta,6.031tas,6-031ta,6-031tas],Delphi (Staff) x2737
room [utas,6.030ta,6.030tas,6-030ta,6-030tas] ,Delphi (38-376) x1965
;; Personal options
room [CBF] ,CBF at home
room [KRNZ] ,835 Krnz' Office, x5217
room [LIZZY] ,Central NJ Cookoff 201-463-3109
room [PSZH] ,Melrose Hackers Home 662-8257
room [wer] ,WER's H19, 225-6242
room [WJLH] ,WJL in Waltham, 899-0180
room [AlanHome] ,Bear's House (492-7274)
room [BANDY] ,knocking 'em dead
room [Ellis] ,ELLIS.DEC.COM: Boston 423-3953
;; Impersonal Options
room [esg],ESG (x3-7787)
room [studc,library,studctr],Student Center (x5-9187)
room [random] ,Basement of Random Hall
room [srf] ,Atlantis
room [teco] ,Teco Madness
room [txi] ,Theta Xi (x3-3154)
room [prt,pritchet,pritch,prittchet,pritchett],Pritchett Lounge, Out to Lunch
room [lunch] ,Out to Lunch
room [lsc,movie] ,Gone to the LSC movie
room [rolm] ,Rolm Data Frobozz
;; SIPB
room [SIPB,orifice] ,SIPB, 11-205, x3-7788
;; Architecture Machine Group
room [9532,9-532,spg,amg] ,MIT-AMG, 9-532, x5156
room [9550,9-550] ,MIT-AMG, 9-550, x7920
;; Nonlocal sites
room [sdrc] ,SDRC: Ridgefield, CT
room [s1,amber] ,LLL: S1 Palace
room [lextip,lextac] ,LEXINGTON-TAC#259: 862-0921
room [lex] ,Lexiphage, 862-0921
room [hitech] ,High Tech 267-0191
room [sym] ,At home, having fun
room [crg,gluteus] ,LLL: Gluteus Vaximus
room [foggy,sf,berkeley] ,FOGBOUND: in the hills
room [cooler] ,in the cooler
rmsize==.-rooms-1
;; note that the "random" ! in the text of the PRINTX is necessary to break up
;; the define part so it's not thought to be part of a TERMIN
define roomsz size,#count
define szroom #foobar
printx |There are count rooms defi!ned, for a total of foobar abbreviations.
|
termin
if2 szroom size
termin
roomsz rmsize,roomct
end beg