1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-13 23:36:30 +00:00

Added build of sys; atsign dragon (top-level daemon launcher started

by ITS sys job) from recreated sources. This daemon searches through
the CHANNA directory (also created by the bootstrap) for daemons to
launch. Currently, there are no such daemons in this build.
This commit is contained in:
Eric Swenson 2016-11-15 23:19:24 -08:00
parent 240775c9c1
commit f61c1f68d9
2 changed files with 109 additions and 0 deletions

View File

@ -190,6 +190,11 @@ respond "*" ":midas device;jobdev arc_syseng;arcdev\r"
expect ":KILL"
respond "*" ":link device;jobdev ar,device;jobdev arc\r"
respond "*" ":print channa;..new. (udir)\r"
respond "*" ":midas channa;atsign taraka_syseng; dragon\r"
expect ":KILL"
respond "*" ":link sys; atsign dragon,channa; atsign taraka\r"
respond "*" "\005"
respond "sim>" "at tu0 out/output.tape\r"
respond "sim>" "c\r"

104
src/syseng/dragon.206 Normal file
View File

@ -0,0 +1,104 @@
;;;-*-Midas-*-
TITLE DRAGON -- top-level daemon
;;; The ITS system job looks for the file DSK:SYS;ATSIGN DRAGON, and if it exists,
;;; launches this DRAGON daemon. When launched, DRAGON logs in as TARAKA and searches
;;; the CHANNA directory for files whose FN1 is RAKASH. Any that it finds, it launches
;;; as daemons.
;;;
;;; The source for DRAGON has been long lost. When ITS was active, the last time it
;;; was built was in 1977. This source was recreated from the binary by EJS on
;;; on 2016-11-15. When assembled, this version results in an identical binary
;;; to the one that was included in the PI/MX distribution, and therefore to the
;;; version in place on MC/AI at the time of the shutdown of those systems.
;;;
;;; Note: I'm sure some of the constants in this file should be replaced with
;;; symbolic constants. At this point, I haven't yet figured out what they should
;;; all be (it's been over 36 years since I last used ITS at MIT. As I and others
;;; see fit, we can update this source to be more in keeping with the standards
;;; expected of ITS developers! -- EJS@MIT-MC (today: eric@swenson.org)
;;;
dirchn=4
filchn=5
jobchn=6
dirbsz=2000
nop=255000000000
taraka=sixbit/TARAKA/
channa=sixbit /CHANNA/
rakash=sixbit /RAKASH/
lpdl==:100.
.vector pdl(lpdl)
go: .call [setz ;; login as TARAKA
sixbit/LOGIN /
[ taraka ]
setzi 0]
nop ;; ignore errors logging in
.suset [.ssnam,,[channa]] ;; set SNAME to CHANNA
;; open CHANNA UDIR
.open dirchn, [.bii,,'DSK ? sixbit/.FILE./ ? sixbit /(DIR) /]
jsr done
.iot dirchn, [-dirbsz,,dirblk] ;; read in UDIR
.close dirchn,
move 1, dirblk+1 ;; get offset to name area into R1
addi 1, dirblk ;; convert to address of name area
filoop: cail 1, [ taraka ] ;; have we reached end of buffer?
jsr done ;; yes, abort
move 2, (1) ;; get FN1 into R2
camn 2, [ rakash ] ;; is FN1 == RAKASH
.call [setz ;; yes, open the file
sixbit /OPEN /
[ .uii,,filchn ]
[ sixbit /DSK / ] ;; DSK: device
[ rakash ] ;; FN1
1,,1 ;; FN2 (from dirblk in R1 + 1)
400000,, [ channa ]]
jrst nextfl ;; try next file
.call [setz ;; start create daemon job
SIXBIT/OPEN /
[ 1,,jobchn ]
[ sixbit /USR / ] ;; USR: device
001000000000 ;; use uname of TARAKA
400001,,1] ;; use jname of FN2 of daemon
jrst nextfl ;; process next file on error
.reset jobchn,
.call [setz ;; load program into job
sixbit/LOAD /
001000,,jobchn ;; specify job channel
401000,,filchn] ;; specify file channel
jrst nextjb ;; on error, clean up job and process next file
move 2, 1(1) ;; get FN2/Job name in R2
.uset jobchn, [.ssnam,,2] ;; set SNAME of job
.iot filchn, 2 ;; get starting address?
hrrzs 0, 2 ;; zero out instruction opcode?
.uset jobchn, [.supc,,2] ;; set starting address of new job
.call [setz ;; disown job (doc doesn't seem to match
SIXBIT/DISOWN/ ;; this call from sysdoc; _calls 127
201000,,jobchn ;; don't know what these bits do
405000,,5] ;; don't see second argument documented???
.value 0 ;; kill ourselves on error?
caia 0, 0
nextjb: .uclose jobchn, ;; kill job
nextfl: .close filchn, ;; close file
.close jobchn, ;; close job
addi 1, 5 ;; compute address of next file
jrst filoop ;; and loop
done: 0
.logout 0,
.value 0
dirblk: 0
0
bufsize==1632
loc .+bufsiz
end go