diff --git a/src/syseng/dragon.206 b/src/syseng/dragon.206 index 0c76b14a..ef799d0c 100644 --- a/src/syseng/dragon.206 +++ b/src/syseng/dragon.206 @@ -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 diff --git a/taraka.mid b/taraka.mid new file mode 100644 index 00000000..416a06c9 --- /dev/null +++ b/taraka.mid @@ -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 %"