1
0
mirror of https://github.com/PDP-10/its.git synced 2026-03-22 17:08:15 +00:00
This commit is contained in:
Lars Brinkhoff
2017-03-02 14:11:17 +01:00
parent ee135ab2ec
commit 85a80f007d
2 changed files with 236 additions and 48 deletions

View File

@@ -21,15 +21,20 @@ TITLE DRAGON -- top-level daemon
;;; expected of ITS developers! -- EJS@MIT-MC (today: eric@swenson.org)
;;;
a=1
b=2
c=3
dirchn=4
filchn=5
jobchn=6
.insrt system; fsdefs
dirbsz=2000
nop=255000000000
nop=jfcl
taraka=sixbit/TARAKA/
taraka=sixbit /TARAKA/
channa=sixbit /CHANNA/
rakash=sixbit /RAKASH/
@@ -37,68 +42,64 @@ lpdl==:100.
.vector pdl(lpdl)
go: .call [setz ;; login as TARAKA
sixbit/LOGIN /
sixbit/LOGIN/
[ taraka ]
setzi 0]
nop ;; ignore errors logging in
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
.open dirchn, [.bii,,'DSK ? sixbit/.FILE./ ? sixbit /(DIR)/]
jsr die
.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 /
move a, dirblk+1 ;; get offset to name area into R1
addi a, dirblk ;; convert to address of name area
filoop: cail a, [ taraka ] ;; have we reached end of buffer?
jsr die ;; yes, abort
move b, ufn1(a) ;; get FN1 into R2
camn b, [ 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
[ sixbit /DSK/ ] ;; DSK: device
[ rakash ] ;; FN1
ufn2(a) ;; FN2 (from dirblk in R1 + 1)
setz [ 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
SIXBIT/OPEN/
[ .uao,,jobchn ]
[ sixbit /USR/ ] ;; USR: device
%climm,,0 ;; use uname of TARAKA
setz ufn2(a)] ;; 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
sixbit/LOAD/
%climm,,jobchn ;; specify job channel
setzi filchn] ;; specify file channel
jrst nextjb ;; on error, clean up job and process next file
move b, ufn2(a) ;; get FN2/Job name in R2
.uset jobchn, [.ssnam,,b] ;; set SNAME of job
.iot filchn, b ;; get starting address?
hrrzs b ;; zero out instruction opcode?
.uset jobchn, [.supc,,b] ;; 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
movei jobchn ;; channel to job
movsi 5 ((setz))] ;; control bits
.value ;; kill ourselves on error?
caia
nextjb: .uclose jobchn, ;; kill job
nextfl: .close filchn, ;; close file
.close jobchn, ;; close job
addi 1, 5 ;; compute address of next file
addi a, lunblk ;; compute address of next file
jrst filoop ;; and loop
done: 0
.logout 0,
.value 0
die: 0
.logout
.value
dirblk: 0
0
bufsize==1632
loc .+bufsiz
ufd: block 2000
end go

187
taraka.mid Normal file
View File

@@ -0,0 +1,187 @@
SLBK format
Start instruction:
254000000100 jrst 100 ;"5@ ! "
Symbol table:
Header: global
Symbol daddnl = 410300000000 ( halfkilled local)
Symbol tutbp = 440300000000 ( halfkilled local)
Symbol unfn1 = 0 ( halfkilled local)
Symbol mdnum = 0 ( halfkilled local)
Symbol udescp = 0 ( halfkilled local)
Symbol mnunam = 0 ( halfkilled local)
Symbol unlink = 1 ( halfkilled local)
Symbol $$temp = 1 ( halfkilled local)
Symbol unfn2 = 1 ( halfkilled local)
Symbol mdnamp = 1 ( halfkilled local)
Symbol a = 1 ( local)
Symbol udnamp = 1 ( halfkilled local)
Symbol lmnblk = 2 ( halfkilled local)
Symbol b = 2 ( local)
Symbol mdyear = 2 ( halfkilled local)
Symbol unrndm = 2 ( halfkilled local)
Symbol udname = 2 ( halfkilled local)
Symbol unreap = 2 ( halfkilled local)
Symbol nxlbyt = 2 ( halfkilled local)
Symbol c = 3 ( local)
Symbol udblks = 3 ( halfkilled local)
Symbol undate = 3 ( halfkilled local)
Symbol tutbyt = 3 ( halfkilled local)
Symbol mpdoff = 3 ( halfkilled local)
Symbol mpdwdk = 4 ( halfkilled local)
Symbol unref = 4 ( halfkilled local)
Symbol diric = 4 ( halfkilled local)
Symbol udallo = 4 ( halfkilled local)
Symbol unwrit = 4 ( halfkilled local)
Symbol mdchk = 5 ( halfkilled local)
Symbol lunblk = 5 ( halfkilled local)
Symbol dskic = 5 ( halfkilled local)
Symbol tutmny = 6 ( halfkilled local)
Symbol usrch = 6 ( halfkilled local)
Symbol mdnuds = 6 ( halfkilled local)
Symbol ufdbyt = 6 ( halfkilled local)
Symbol ufdbpw = 6 ( halfkilled local)
Symbol tutlk = 7 ( halfkilled local)
Symbol lmiblk = 7 ( halfkilled local)
Symbol unmark = 10 ( halfkilled local)
Symbol uddesc = 13 ( halfkilled local)
Symbol tutepw = 14 ( halfkilled local)
Symbol udtkmx = 14 ( halfkilled local)
Symbol uncdel = 20 ( halfkilled local)
Symbol delbts = 20 ( halfkilled local)
Symbol udskmx = 22 ( halfkilled local)
Symbol unigfl = 24 ( halfkilled local)
Symbol udwph = 37 ( halfkilled local)
Symbol taraka = 100 ( local)
Symbol tarak0 = 100 ( local)
Symbol dr1 = 111 ( local)
Symbol nxc = 134 ( local)
Symbol nxt = 135 ( local)
Symbol die = 141 ( local)
Symbol ufd = 144 ( local)
Symbol dtmsk = 77777 ( halfkilled local)
Symbol undump = 400000 ( halfkilled local)
Symbol unbyte = 1100000000 ( halfkilled local)
Symbol $$tem1 = 1100000000 ( halfkilled local)
Symbol undscp = 1500000000 ( halfkilled local)
Symbol dadtnr = 1700000000 ( halfkilled local)
Symbol untim = 2200000000 ( halfkilled local)
Symbol unauth = 111100000000 ( halfkilled local)
Symbol unpkn = 150500000000 ( halfkilled local)
Symbol daddnr = 170300000000 ( halfkilled local)
Symbol versio = 212400000000 ( halfkilled local)
Symbol unlnkb = 220100000000 ( halfkilled local)
Symbol unday = 220500000000 ( halfkilled local)
Symbol dadtnl = 221700000000 ( halfkilled local)
Symbol unymd = 222000000000 ( halfkilled local)
Symbol unrefd = 222000000000 ( halfkilled local)
Symbol unmon = 270400000000 ( halfkilled local)
Symbol unwrdc = 301200000000 ( halfkilled local)
Symbol unyrb = 330700000000 ( halfkilled local)
Duplicate start instruction:
254000000100 jrst 100 ;"5@ ! "
Disassembly:
000100: 043000002145 .call [setz
SIXBIT/LOGIN /
000000002144
401000000000]
;"$8 1E"
000101: 255000000000 nop ;"5H " "+ \0\0\0"
000102: 043540002152 .suset 2152 ;"$=@ 1J"
000103: 041200002153 .open 4, 2153 ;"$* 1K"
000104: 264000000141 jsr 141 ;"6@ !A"
000105: 040200002156 .iot 4, 2156 ;"$" 1N"
000106: 042200000007 .close 4, ;"$2 '"
000107: 200040000145 move 1, 145 ;"0 @ !E"
000110: 271040000144 addi 1, 144 ;"7(@ !D"
000111: 301040002144 cail 1, 2144 ;"8(@ 1D"
000112: 264000000141 jsr 141 ;"6@ !A"
000113: 200101000000 move 2, (1) ;"0!! "
000114: 316100002157 camn 2, 2157 ;"9Q 1O"
000115: 043000002162 .call [setz
SIXBIT/OPEN /
000000002160
000000002161
000000002157
000001000001
400000002151]
;"$8 1R"
000116: 254000000135 jrst 135 ;"5@ !="
000117: 043000002173 .call [setz
SIXBIT/OPEN /
000000002171
000000002172
001000000000
400001000001]
;"$8 1["
000120: 254000000135 jrst 135 ;"5@ !="
000121: 042300000037 .reset 6, ;"$3 ?"
000122: 043000002201 .call [setz
SIXBIT/LOAD /
001000000006
401000000005]
;"$8 2!"
000123: 254000000134 jrst 134 ;"5@ !<"
000124: 200101000001 move 2, 1(1) ;"0!! !"
000125: 044300002205 .uset 6, 2205 ;"$C 2%"
000126: 040240000002 .iot 5, 2 ;"$"@ ""
000127: 553000000002 hrrzs 0, 2 ;"M8 ""
000130: 044300002206 .uset 6, 2206 ;"$C 2&"
000131: 043000002207 .call [setz
SIXBIT/DISOWN/
201000000006
405000000005]
;"$8 2'"
000132: 043200000000 .value 0 ;"$: "
000133: 304000000000 caia 0, 0 ;"8@ " "1\0\0\0\0"
000134: 042300000010 .uclose 6, ;"$3 ("
000135: 042240000007 .close 5, ;"$2@ '"
000136: 042300000007 .close 6, ;"$3 '"
000137: 271040000005 addi 1, 5 ;"7(@ %"
000140: 254000000111 jrst 111 ;"5@ !)"
000141: 000000000000 ;" "
000142: 042000000033 .logout 0, ;"$0 ;"
000143: 043200000000 .value 0 ;"$: "
002144: 644162415341 trca 3, @415341(2) ;"TARAKA"
002145: 400000000000 setz 0, ;"@ " "@\0\0\0\0"
002146: 545747515600 hlri 17, 515600(7) ;"LOGIN " "Y>=\033@"
002147: 000000002144 ;" 1D"
002150: 401000000000 setzi 0, ;"@( " "@ \0\0\0"
002151: 435041565641 ori 1, 565641(1) ;"CHANNA"
002152: 400016002151 setz 0, 2151(16) ;"@ . 1I"
002153: 000006446353 ;" &DSK"
002154: 164651544516 fmpr 15, 544516(11) ;".FILE."
002155: 104451621100 ;"(DIR) "
002156: 776000000144 blki 760, 144 ;"_P !D"
002157: 624153416350 trza 3, 416350(13) ;"RAKASH"
002160: 000004000005 ;" $ %"
002161: 446353000000 eqvm 7, (13) ;"DSK " "INX\0\0"
002162: 400000000000 setz 0, ;"@ " "@\0\0\0\0"
002163: 576045560000 hlrem 1, 560000(5) ;"OPEN " "_B-`\0"
002164: 000000002160 ;" 1P"
002165: 000000002161 ;" 1Q"
002166: 000000002157 ;" 1O"
002167: 000001000001 ;" ! !"
002170: 400000002151 setz 0, 2151 ;"@ 1I"
002171: 000001000006 ;" ! &"
002172: 656362000000 tdcn 7, @(2) ;"USR "
002173: 400000000000 setz 0, ;"@ " "@\0\0\0\0"
002174: 576045560000 hlrem 1, 560000(5) ;"OPEN " "_B-`\0"
002175: 000000002171 ;" 1Y"
002176: 000000002172 ;" 1Z"
002177: 001000000000 ;" ( "
002200: 400001000001 setz 0, 1(1) ;"@ ! !"
002201: 400000000000 setz 0, ;"@ " "@\0\0\0\0"
002202: 545741440000 hlri 17, 440000(1) ;"LOAD " "Y>\f@\0"
002203: 001000000006 ;" ( &"
002204: 401000000005 setzi 0, 5 ;"@( %"
002205: 400016000002 setz 0, 2(16) ;"@ . ""
002206: 400000000002 setz 0, 2 ;"@ ""
002207: 400000000000 setz 0, ;"@ " "@\0\0\0\0"
002210: 445163576756 eqvi 3, @576756(3) ;"DISOWN"
002211: 201000000006 movei 0, 6 ;"0( &"
002212: 405000000005 andi 0, 5 ;"@H %"