administrative routine 16 july 1971 dd2=163 /origin of core 7 C-lists cc=303 bc=307 uc=313 dc=317 fdf=327 udf=330 rds=331 ubs=332 frp=333 cpp=334 qqt=336 c7=40000 /core 7 nuf>>40<<=20 /size of core 7 C-list nqu>>40<<=44 /number of queues and enters /process words di1=6 /dia word prn=7 /process ring prq=11 /process queue prs=13 /scheduling word cms=6630 /origin of computation blocks ffs=105 /file capability offset dimension cmp(1),prc(1) dimension ac(3) io=ac+1 w=ac+2 dimension cpd(1),pdl(40) pde=pdl+40 dimension t(1),t0(1),t1(1),t2(1),t3(1),t4(1),t5(1),t6(1),t7(1),t8(3) /C-list indices used>>40<<. / 0-17 - entered process capabilities /20-37 - disowned objects /40-44 - ID sphere for consoles 2-6, if logged in /62-66 - top level typewriters, consoles 2-6 /73 - scratch for fcl /74 - console switches /75 - scratch for login (call button) /76 - scratch for garbage collector /77 - queue /cores used>>40<<. /0 - program /1 - attachment to own core 0 (for bashing C-list) /2 - attachment to other cores 0 (ditto, set up by fcl) /3 - attachment to ID (for login) /4 - attachment to core 7 /flag 4 used for grant /flags 5,6 used by rmv >>13<>13<<5 /initial C-list 0/ repeat 62,0 /typewriters 62, .z=740502 repeat 5,.z .z>>40<<=.z+101 repeat 5,0 74, 740002 /console switches 0 0 77, 340000+qqt+2-prq /queue 100, stf 1 /ivk 101, jmp atm /meta instruction 102, jmp . /ill inst in adm rt 103, ivk 74 /wait for login/logout job jmp lgl-3 105, frd1, sd1+10 /free drum1 field list nfd1, 0 /no. of drum fields on drum 1 ncd1, 0 /no. of core fields on drum 1 frd2, sd2 nfd2, 0 ncd2, 0 113, sd1, repeat 10,add 1 /locked fields repeat 10,.+1 sd1+23 sd1+21, add 1 add 1 .+1 .+2 sd1+25, add 1 repeat 51,.+1 0 213,sd2, repeat 77,.+1 0 >>13<>06<>06<>13<<, on, lac vv1 lxr (ivk 44 ide XMAI /entry address mta 302 /create ID jmp noc lio (030000 law 52 vv1, ivk /attach it die mta 1 cla lio (250000 mta 104 /read a copy of ID jmp .-1 law 412 /create a process for ID xct vv1 jmp noc law idp /initialize process state mta law 132 lio (1 xct vv1 die lac (403572 /turn on PRL for ID xct vv1 lac vv1 sub (ivk 35 ior (740000 aam dac (i 75 /create call button lio (7577 law 632 xct vv1 /share it to ID die lac vv1 sub (ivk 40-2 ral 6s /console no. ior (50000 mta lac (306572 xct vv1 /create twr jmp noc /too bad sza die lac vv1 sub (ivk-i TAX law 7777 and i 0 ior (c7 TAX lac t99 dap i con /give ID a core 7 C-list dip i aw1 lio (100 law 14 mta lac (302572 xct vv1 /create user for ID >>13<<>>34<< jmp noc law 7777 A>>06<>13<>13<<( /queue and enter list frq, qqf+15. qqf, 1 /microtape controller queue 1 /adm rt queue 1 /microtape enter 1 /adm rt enter 1 /ditto repeat 5,2 /typewriters repeat 5,1 /ditto qqf+15., repeat nqu-16.,.+1 0 /file list frf, fff /free files fff, repeat 0,.+1 0 /sphere list frc, ccf+2 ccf, 1 /adm rt 1 /tape controller repeat 14,.+1 0 /hardware device table iif, 0 1 /drum A 1 /drum B repeat 15,0 iif+20, 1 /microtape unit control 1 /microtape data control repeat 55,0 iif+77, 1 /microtape motion control /microtape table mtu, repeat 4,0 rdr, 0 /reader pch, 0 /punch /tables to rotate translation word r1, ril 3s ril 6s ril 9s rir 6s rir 3s r2, nop >>13<P cmi law flexo q A~II law i 7 A>>06<>06<>06<>13<< -flexo x -flexo q cde, jmp pax jmp sax jmp max jmp mq cdm, >>13<>06<>05<>20<< sphere law i 200 and i aw1 sad i aw1 jmp drx dac i aw1 law i 1 adm xrw sad (400000 dzm xrw drx, jmp . xrw, 0 /ext. reg. word /-q mq, law no dxe, dap dxx /dismiss external eq., XR >>20<< sphere lac i aw1 xor xaw dac xaw law i 177 and i aw1 dac i aw1 dxx, jmp . xaw, 0 /external assignment word >>13<<>>76<< /create capability cra, 0 dac t8 lio io dio t8+1 jdp chc lac i 0 TAIP| jmp ca2 sas t2 /not free jmp cay SXX /asked for zero idx t2 sad cls jmp cay /full lac i 0 TAIP jmp .-6 ca2, lac t2 dac ac adm clp jmp i cra rtz, cli cay, dio io jmp rtm /find capability in low 6 bits of AC /of sphere in cmp /return pointer in AIX chc, 0 and (77 dac t2 law 7777 and cmp jdp fcl sub t2 TA> jmp ill /index exceeds C-list size lac t2 add clp TAAIX jmp i chc >>13<<3 /meta instructions and ivks /transmitted word = 0 for arq, 1 for arq i, /20>>40<<>40<<<77 for meta /T = capability index for ivks atm, iam eem TAX isp f ivk 177 /enter queue TXA dio t0 dap enp /entered process capability ior (10000 TAX law 7777 and i 0 ior (c7 dac prc /7pointer to process TAX sad i prn+1 jmp ill /process has been abandoned lac i 5 dac cmr /0pointer to sphere ior (c7 dac cmp /7pointer to sphere TAX lio i con law 51 spi jmp enp /sphere is stopped, have process continue lio (ac law 11 xct enp /read live registers law 77 and t0 szf 1 jmp iv2 /ivk sas (1 sza i jmp aqr /arq mtb, law i 20 /meta add t0 TAAX>P jmp ill sub (mte-mtl sma jmp ill /illegal number lac i mtl dac mtc lxr cmp lac ac mtc, 0 rta, dac ac rtm, lio (ac /return, no skip law 31 xct enp law 71 >>13<<>>32<< enp, ivk law i 1 adm f SA>>40<<> ivk 277 /release queue qit ill, law 111 /cause illegal instruction jmp enp f, add-2 >>13<<>>76<< mtl, lac i ilr /read ill inst ret dac i ilr /set ill inst ret lac i imr /read ill mem ref ret dac i imr /set ill mem ref ret jmp m24 jmp m25 jmp m26 jmp m27 jmp m30 jmp ill jmp m32 jmp m33 jmp m34 jmp m35 jmp m36 jmp m37 jmp m40 jmp m41 jmp m42 jmp m43 jmp m44 jmp m45 jmp m46 jmp m47 jmp m50 jmp m51 jmp m52 mte, >>13<<0 /mta 204 - release capability m24, jdp chc lac i 0 dzm i 0 sza jdp rmv jmp rtm /mta 205 - detach m25, and (070000 ral 6s sza i lac ac and (7 dac t4 sub (6 sma jmp rts /if illegal, ok lac cmp dac t0 add t4 dac t2 TAX law i 3777 and i 1 sza jmp rtm /is a real core, fail jsp exm jdp dtc rtl, jsp lxm rts, lio (ac /return, skip law 31 xct enp law 131 jmp enp >>13<>06<>13<<>>60<< /mta 300 - create drum field m30, jdp cra lac t8 spa jmp 30b lac nfd1 sub nfd2 jdp gaf idx i nfd1 lai add (050000-sd1 cap, jda gcp /put capability in AC into io and C-list jmp .+6 /and bump count law 377 and i 0 /ref count sad (377 jmp rtz /too big idx i 0 lac gcp dac io aam dac clp szf i 4 jmp rts jdp xch /finish up grant lac t8+1 rar 6s jdp chc lac i 0 dzm i 0 jdp rmv jmp rts /get an absolute field, read-only 30b, rar 6s and (177 add (040000 jmp cap >>13<>40<<< 0, try to use drum 1 /return pointer in I gaf, 0 TA>>40<<< law frd2-frd1 /try drum 2 TAX lac i frd1 TAP| law frd2-frd1 /full, try the other drum A~XX lac i frd1 TAIP| jmp rtz /too bad aam lac i frd1 aam dzm i frd1 dac i frd1 jmp i gaf >>13<<>>32<< /mta 302 - create sphere m32, jdp cra lac cmr dac cmq lac frc sza i jmp rtz /can't mul (30>2 lai add (cms-ccfx30 dac cmr dac cmr+1 lxr (c7 A>>05<>13<<- iss+prh, 0 -30 /hack >>13<<1 /mta 303 - create queue m33, jdp cra jdp crq add (340000 dac io sub (340000 dac i prq+1 /initialize it lio t8+1 TII< CII= lai dac i prq lac io jmp cap /create queue,twr,enter /object index in IO, object 0pointer-prq in AC /7pointer-prq in XR crq, 0 lac frq TAIXP| jmp rtz /can't get one lac i 0 dzm i 0 dac frq law i qqf A+IAI sal 1s add (qqt-prq lxr (c7 X>>05<>13<>40<<> /skip if bad unit lac i mtu X>>20<>20<>40<<> 7 lxr (-2 A+XIX>P jmp rtz /<2 law 377 and i qqf+10. sas (1 >>13<<8 jmp rtz /in use already lai mul (101 scr 1s lai add (701202 jmp cap 36b, TAAX lio i iif sni i jmp rtz /not available ior (600000 jmp cap /mta 307 - create entry m37, jdp cra jdp crq lac cmr dac i prq lac t8+1 and (077777 dac i prq+1 law 7500 A>>05<>13<>13<<>>34<< /mta 402 - turn PRL off m42, lxr cmp lac (200000 adm i con ral 2s sma jmp 42d /already off lac cmr jdp fcl /set up c0 C-list jdp fud lac cmr /clear C-list ior (240000 jda gcp die dio t8 dzm t8+1 jmp .+3 lac gcp jdp rmv stf 5 lxr (t8 jdp ssr /uses t8+2 jmp .-5 /delete capability /cmr is now clobbered lxr cmp lac (-100000 adm i con 42b, law 7777 /clear prl bit from all processes and i prn ior (c7 sad cmp jmp 42d TAX lac (-010000 and i 4 dac i 4 jmp 42b 42d, lxr cmp lac (-200000 adm i con law clw-prq add cmr mta 101 jmp rtm >>13<>13<<9 /mta 403 - turn on PRL m43, lxr cmp lac (200000 adm i con ral 2s spa jmp 42d /already on jsp exm lxr cmp lac (100000 adm i con 43b, law 7777 /turn on PRL for each process and i prn sad cmr jmp 43c ior (c7 TAX lac (010000 ior i 4 dac i 4 jmp 43b 43c, law 43f dac ct1 lac cmr dac t lxr cmp lio i 1 xor i 1 and (3777 xor i 1 dac i 1 law 3777 A>>06<>13<>13< jmp n46 ZI SII ior (c7 TAX lac i 0 sza jmp .-5 n46, lac cmr dac cmq jmp c45+5 /mta 407 - set hoard m47, law i 2 dac t0 jmp m46+1 n47, lac ac spa law 0 /minimum hoard lxr cmp AMII>>40<<< jmp p47 q47, SII>>40<<< jmp rtl lac i prh spq jmp r47 dac t0 /decrease hoard ior (c7 dac t1 aam lac t1 dac i prh aam lac (c7 frp aam dac t1 lac t0 aam dac (c7 frp jmp q47 r47, law i 1 /increase debt A+IA adm i prh jmp rtl p47, lac i prh sma law 0 A+IA>>40<<< jmp .+3 >>13<>13<>13<>06<>06<>06<>13<>06<>13<< lac cmr ior (c7 dac cmp jmp mtb >>13<<>>15<< xch, 0 /sigh lac cmr lio cmp dac cmp dio cmr jmp i xch c67, stf 4 c63, jdp xch jmp c61 c65, stf 4 c61, lac io jdp cra /check receiver jdp xch lac io rar 6s jdp chc lac i 0 dac gcp /capability to be moved TAIP| jmp rtz /nothing there rcl 4s sas (17 /entry sad (5 /sphere jmp c6e sas (3 jmp c6x szf i 4 /entered process capability jmp rtz /can't share e.p.c. dzm i 0 /delete old copy explicitly clf 4 /because rmv would restart ent. proc c6x, jdp xch lac ac /index in receiver jdp cra lac gcp jmp cap c6e, lac (-i /remove master bit and gcp dac gcp jmp c6x >>13<>20<>13<<>>37<< /type 7 ivk ift, aam lio clp dio t7 /capability word ril 3s lac ac TI>P jmp ifi /entry and (3400 /typewriter rar 8s lio t0 sir 6s /variant A>>20<>05<>13<<>>16<< /translate capability word in AC into object pointer /if object pointer exists, return it in IO, XR, tt0, and skip /F5 is on if capability is being deleted gcp, 0 dap gpx cli lac gcp rcl 3s law 7777 and gcp TIIX /type of capability rir 3s dio >>56<>05<>05<>13<>06<>20< jmp gpx /buttons, call button, clock law rdr-11 /reader or punch A+IA ssy, adm tt0 TAXI idx gpx gpx, jmp . >>13< (top of stack) has object pointer, / has index of sub-object, initially 0, gets advanced to /next one, skips if sub-object not available, pushes sub-object /F5 >>20<< remove it ssr, 0 TXXA dac >>56<>20<>13<2 lai add (cms-ccfx30 jdp fcl sbb, lxr xrs lac i 1 sub cls sma jmp ssx idx i 1 sub (1 add clp TAX lac i 0 sza i jmp sbb szf 5 /sub-object in AC dzm i 0 jda gcp jmp sbb sb8, law 2 add xrs sad (pde die /stack overflow TAX dio i 0 /sub-object pointer jmp i ssr >>13<>13<<>>13<< /set P for every descendent of an external reference /F6 >>20<< this is a descendent of an ext ref gg1, aam /check B lio i 0 TIA>P jmp gg9 /P[B] already on, return and (177777 rcr 8s ril 8s /mark in AC, count in IO AMII>>40<<< die /mark > count szf 6 jmp gg2 /must turn on P sza i jmp gg9 /checked already, return spi stf 6 /this has ext ref gg2, aam lac i 0 szf 6 ior (400000 /turn on P and (-177400 /clear mark field aam dac i 0 dzm i 1 /sub-object index gg5, jdp ssr /get sub-object jmp gg1 /recurse gg9, law pdl /pop X~AP| jmp gg6 /finished law i 2 A+XX aam lac i 0 clf 6 spa stf 6 /restore jmp gg5 >>13<>13<>13<>13<>40<<> jmp gkd /drum field lac frq /twr dac i 0 dio frq law 2400 ivk 76 /disable (to unhang procs) jmp gk9 gkd, law i sd2 A+I< jmp gkd2 /drum 2 law i 1 adm nfd1 lac frd1 dio frd1 jmp gkk gkd2, law i 1 adm nfd2 lac frd2 dio frd2 jmp gkk gk7, TAAIX sub (mtu sma jmp gk9 /utape, reader, punch lac frq /entry dio frq gkk, dac i 0 gk6, /hardware device gk9, lxr cpd /restore XR gk9+1, law i 2 A+XAX sas (pdl-2 jmp gk0 jmp i rmv gzz, 100 0 30 2 0 0 0 0 gyy, -qqfx100+710000 0 cms-ccfx30+240000 qqt-prq-qqfx2+340000 0 0 0 0 >>13<>06<>06<>13<>20<>20<>13<<8 /create core fields scc, 0 isp t2 jmp i scc /can get enough fields jsp exm lac cmr ior (c7 dac t0 sm4, lac t3 /core number dac t4 add t0 dac t2 /comp + core (7) jdp dtc /remove attachment, if any lac ncd1 sub ncd2 jdp gaf idx i ncd1 law i sd1 A+II rir 7s lxr (c7 cr1, lac i cc sma lac i uc sza i jmp onc SXXA sas (c7 4 jmp cr1 on2, lxr t2 law 3777 A>>06<>05<>06<>13<>13<>06<>13<<>>75<< /remove all attachments to core+comp in t /EXECUTIVE MODE ct1, 0 lac t dac t0 and (7770 TAAX ior (c7 dac t2 aam lio t2 lac t0 X~AX xct i r1 law 6 rcr 3s CXX xct i r2 aam dio t2 lac t0 ior (c7 TAX law 3777 and i 1 dzm i 1 ct2, ior (4000 /enter here from mta 403 sas t jmp ct1+2 jmp i ct1 >>13<<4 /create a process for computation in cmq, skip if win. crp, 0 jsp exm law 7777 and cmq ior (c7 TAX lac i con sma jmp cpn /not stopped lio i prh TII>>40<<< jmp .+10 /hoard is not empty aam lio (c7 frp /check pool sni jmp cpn /too bad law i 1 adm i prh /increase debt lxr (c7 frp-prh lai ior (c7 X>>20<>20<>20<>20<>20<>13<>13<<>>40<< /delete process whose number is in t4 from computation in cmr(0) /skip if win dlp, 0 jsp exm lio t4 cmi lac cmr ior (c7 TAX lac i con sma jmp dlz /not stopped dl7, law 7777 and i prn sad cmr jmp dlz /process doesn't exist ior (c7 TAAX SIIP jmp dl7 jdp ddp idx dlp dlz, jsp lxm jmp i dlp >>13<<>>37<< /delete process /7pointer in AC /EXECUTIVE MODE ddp, 0 TAAIX law 7777 and i prn+1 ior (c7 dzm i prn+1 lxr i prn /remove from ring X>>20<>20<>20<>13<<>>16<< /find C-list of computation in AC(0) /returns pointer to origin in clp /returns size (0,20,or 100) in cls, AC fcl, 0 ior (240000 aam dac (010073 xor (240000~c7 TAX lac i con ral 2s spa jmp fl3 /core 0 C-list dzm cls law 7777 and i con sza i jmp fl4 /no C-list ior (c7 /core 7 C-list dac clp law nuf fl4, dac cls jmp i fcl fl3, lio (020000 /core 0 C-list dio clp law 52 ivk 73 /attach die law 100 jmp fl4 dimension cls(1),clp(1) >>13<>56<>56<>56<>13<<9