1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-27 20:47:38 +00:00
Files
PDP-10.its/src/sysen2/syschk.38
Lars Brinkhoff fb9d299939 Add SYSCHK.
2016-12-18 12:47:10 -08:00

227 lines
4.1 KiB
Plaintext
Executable File
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.
title SYSCHK Check up on system job
subttl Variables and stuff
a=1
b=2
c=3
d=4
n=5
obp=6
p=17
clic=10
define utyi ac
camn obp,@toop
.hang
camn obp,@tobep
jrst [ move obp,@tobbp
jrst .-3]
ildb ac,obp
andi ac,377
termin
define syscal a,b
.call [setz ? sixbit \a\ ? b ((setz)) ]
termin
subttl Startup
loc 100
go: move p,[-lpdl,,pdl-1]
.suset [.runame,,winner] ; get name of winner using me
skipe runflg
jrst setdon
setom runflg
move a,[-nsyms,,syms]
symlp: move b,(a)
.eval b,
.value
movem b,(a)
aobjn a,symlp
move a,syscn
movei b,1
pushj p,makpag
move a,toip ;make sure we have the pages the buffer pointers are in
move b,nct
pushj p,makpag
move a,toop
pushj p,makpag
move a,tobep
pushj p,makpag
move a,tobbp
pushj p,makpag
.open [21,,'TTY]
.lose
setdon: syscal cnsget,[ 1000,, ? 2000,,vsz
2000,,hsz ? 2000,,ltctyp]
.lose
.close
setzm vpos
setzm hpos
skipge n,@syscn
.value [asciz/:Cannot find the SYS consoleKILL
/]
andi n,77
syscal cnsget,[1000,,400000(n)
2000,,a ? 2000,,a ? 2000,,a]
.value
movem a,ftctyp
cain a,%tntv
.value [asciz/:The SYS console is a TV???KILL
/]
.value [asciz/:vk /]
subttl Main SPYing routine
movsi a,n
iorm a,toip ;set up index field for indirection
iorm a,toop
iorm a,tobep
iorm a,tobbp
move a,@tobbp
move b,@tobep
sub b,a
pushj p,makpag ;make sure we have the page(s) the buffer itself is in
move obp,@toop ;have to start somewhere
camn obp,@tobep
move obp,@tobbp
ibp obp
bfrstp: setzm bytcnt
setzm msgbfr
move d,[msgbfr,,msgbfr+1]
blt d,msgbfr+37
move d,[440700,,msgbfr]
movei a,177 ;rubout means no "Message from ..." nonsense
idpb a,d
aos bytcnt
lpe: utyi a
trze a,%txdis
jrst typd ;display or cursor pos, dispatch
caile a,173
jrst lpe
typit: aos hpos
idpb a,d
aos bytcnt
jrst lpe
typd: cail a,typdmx
jrst lpe
jrst @typdtb(a)
typdtb: tymov ;move cursor
tymov1 ;dummy for above
LPE ;clear eof
lpe ;clear eol
LPE ;delete fwd
lpe ;terminet motor on
lpe ; " " off
tyecrl ;crlf to datapoints & imlacs
lpe ;"nop for superduper image mode"
LPE ;bs
LPE ;lf
tyecrl ;cr
lpe ;output reset
lpe ;quote
tyefs ;fwd space
tymov1 ;move cursor new style
LPE ;clear screen
typdmx==.-typdtb
tymov: utyi c ;old vpos
utyi b ;old hpos or 201
utyi a ;new vpos
utyi b ;new hpos
skipe ftctyp
jrst tymov0
sub a,c
exch a,b
idiv b,vsz
move b,c
exch a,b
tymov0: camn a,vpos
jrst tymov2 ;no change in vertical position
movem a,vpos
jrst tyecrl
tymov2: movei a,40
camge b,hpos
movem b,hpos ;oh gronk I don't know why this is
camn b,hpos
jrst lpe
idpb a,d
aos bytcnt
aos hpos
soja b,tymov2+1
tymov1: utyi a ;new vpos
utyi b ;new hpos
skipe ftctyp
jrst tymov0
exch a,b
idiv b,vsz
move b,c
exch a,b
jrst tymov0
tyefs: movei a,40
jrst typit
tyecrl: SETZM HPOS
syscal open,[[.uao,,clic] ? ['CLI,,] ? winner ? ['HACTRN] ? 3000,,a]
jrst [ movei a,30.*2.
.sleep a, ;RMS says this will be fixed soon...
jrst .-1]
move a,[440700,,msgbfr]
syscal siot,[movei clic ? a ? bytcnt]
.LOSE
.close clic,
jrst bfrstp
;get the same page the sys job has in its page whose address is in a, # words in b
makpag: andi a,-1
push p,a
ash a,-10.
movem a,cblk1 ;get first page
.call cblk
.value
pop p,a
addi a,-1(b) ;address of last word
ash a,-10.
camn a,cblk1
popj p,
movem a,cblk1
.call cblk ;crosses page boundary, get second page
.value
popj p,
subttl Data area
cblk: setz
sixbit \CORBLK\
1000,,210000 ;read access, fail if can't
[-1] ;put page in self
cblk1
setzi 400000 ;get from sys job
cblk1: 0 ;gets -#pages,,page # to start
bytcnt: 0 ;count of bytes
msgbfr: block 100 ;allow plenty of space for message
ltctyp: 0 ;local tctyp
ftctyp: 0 ;foreign tctyp
vsz: 0 ;local vertical screen size
hsz: 0 ; " horizontal " "
vpos: 0 ;current (hopefully) local vertical cursor pos
hpos: 0 ;current (hopefully) local horizontal cursor pos
runflg: 0 ;nonzero if setup done already
winner: 0 ;who is using me
syms:
irps x,,[NCT TOBEP TOBBP TOIP TOOP SYSCN]
x: squoze 0,x
termin
nsyms==.-syms
consta ? variab
lpdl==20
pdl: block lpdl
patch": block 100
end go