diff --git a/a.out b/a.out index eb40f93..3e09824 100644 --- a/a.out +++ b/a.out @@ -1,282 +1,385 @@ -010000: 600000 jmp start -010001: 110003 jms initio -010002: 630003 jmp .+1 i -010003: 000000 initio: 0 -010004: 210007 lac inter-1 -010005: 040000 dac fetch -010006: 610001 jmp rinit -010007: 110010 jms inter -010010: 000000 inter: 0 -010011: 750004 las -010012: 510311 and o17 -010013: 740200 sza -010014: 110047 jms trace -010015: 220000 lac pc i -010016: 050305 dac instr -010017: 200000 lac pc -010020: 510314 and o10000 -010021: 741200 sna -010022: 610342 jmp badpc -010023: 200000 lac sp -010024: 510325 and o17700 -010025: 550325 sad o17700 -010026: 610350 jmp badsp -010027: 510314 and o10000 -010030: 741200 sna -010031: 610350 jmp badsp -010032: 210305 lac instr -010033: 550310 sad insasg -010034: 741000 skp -010035: 630010 jmp inter i -010036: 777774 -4 -010037: 340000 tad sp -010040: 040000 dac t1 -010041: 220000 lac t1 i -010042: 510314 and o10000 -010043: 741200 sna -010044: 610356 jmp badasgn -010045: 210305 lac instr -010046: 630010 jmp inter i -010047: 000000 trace: 0 -010050: 500000 and d1 -010051: 740200 sza -010052: 110070 jms dtrace -010053: 750004 las -010054: 510326 and d2 -010055: 740200 sza -010056: 110133 jms ddisp -010057: 750004 las -010060: 500000 and d4 -010061: 740200 sza -010062: 110246 jms histog -010063: 750004 las -010064: 510312 and d8 -010065: 740200 sza -010066: 600000 jmp stop -010067: 630047 jmp trace i -010070: 000000 dtrace: 0 -010071: 200000 lac pc -010072: 040010 dac 8 -010073: 220010 lac 8 i -010074: 050305 dac instr -010075: 200010 lac 8 -010076: 110375 jms octal; -4 -010077: 777774 -010100: 760040 law 040 -010101: 100000 jms putc -010102: 210305 lac instr -010103: 744000 cll; lrs 14 -010104: 640516 -010105: 350327 tad lacop -010106: 050107 dac .+1 -010107: 210000 lac .. -010110: 100000 jms putc -010111: 760040 law 040 -010112: 100000 jms putc -010113: 210305 lac instr -010114: 110375 jms octal; -4 -010115: 777774 -010116: 210305 lac instr -010117: 550307 sad inslitr -010120: 741000 skp -010121: 610127 jmp 1f -010122: 760040 law 040 -010123: 100000 jms putc -010124: 220010 lac 8 i -010125: 110375 jms octal; -6 -010126: 777772 -010127: 760012 law 012 -010130: 100000 jms putc -010131: 100000 jms flush -010132: 630070 jmp dtrace i -010133: 000000 ddisp: 0 -010134: 110224 jms dspinit -010135: 210304 lac dspbp -010136: 040010 dac 8 -010137: 200000 lac dp -010140: 550302 sad olddp -010141: 741000 skp -010142: 110157 jms dspblk -010143: 200000 lac pc -010144: 110214 jms dspnt -010145: 200000 lac sp -010146: 110214 jms dspnt -010147: 200000 lac lastv -010150: 110214 jms dspnt -010151: 777777 -1 -010152: 060000 dac B i -010153: 220000 lac pbs i -010154: 740200 sza -010155: 610153 jmp .-2 -010156: 630133 jmp ddisp i -010157: 000000 dspblk: 0 -010160: 210303 lac dspbuf -010161: 040010 dac 8 -010162: 200000 lac dp -010163: 040000 dac t1 -010164: 140000 dzm t2 -010165: 200000 lac t1 -010166: 741200 sna -010167: 610205 jmp 1f -010170: 210320 lac o216000 " dx -20 -010171: 060010 dac 8 i -010172: 200000 lac t2 -010173: 350322 tad o20 -010174: 040000 dac t2 -010175: 200000 lac t1 -010176: 340000 tad d1 -010177: 040000 dac t3 -010200: 220000 lac t3 i -010201: 110214 jms dspnt -010202: 220000 lac t1 i -010203: 040000 dac t1 -010204: 610165 jmp 1b -010205: 210321 lac o160020 " sx 20 -010206: 340000 tad t2 -010207: 070303 dac dspbuf i -010210: 060010 dac 8 i -010211: 200010 lac 8 -010212: 050304 dac dspbp -010213: 630157 jmp dspblk i -010214: 000000 dspnt: 0 -010215: 510317 and o7777 -010216: 660502 lrss 2 -010217: 250323 xor o164000 " sy 0 -010220: 060010 dac 8 i -010221: 210324 lac o17010 -010222: 060010 dac 8 i -010223: 630214 jmp dspnt i -010224: 000000 dspinit: 0 -010225: 777777 -1 -010226: 350224 tad dspinit -010227: 050224 dac dspinit -010230: 777324 -300 -010231: 340000 tad lastv -010232: 040000 dac lastv -010233: 050303 dac dspbuf -010234: 777777 -1 -010235: 070224 dac dspinit i -010236: 070303 dac dspbuf i -010237: 150302 dzm olddp -010240: 210303 lac dspbuf -010241: 020027 sys capt -010242: 760015 law 13 -010243: 020025 sys sysloc -010244: 040000 dac pbs -010245: 630224 jmp dspinit i -010246: 000000 histog: 0 -010247: 110260 jms hisinit -010250: 200000 lac pc -010251: 640506 lrs 6 -010252: 510313 and o77 -010253: 350301 tad histbuf -010254: 040000 dac t1 -010255: 460000 isz t1 i -010256: 630246 jmp histog i -010257: 610257 jmp . -010260: 000000 hisinit: 0 -010261: 777777 -1 -010262: 350260 tad hisinit -010263: 050260 dac hisinit -010264: 777777 -1 -010265: 070260 dac hisinit i -010266: 777700 -64 -010267: 040000 dac t1 -010270: 340000 tad lastv -010271: 040000 dac lastv -010272: 050301 dac histbuf -010273: 340000 tad dm1 -010274: 040010 dac 8 -010275: 020010 dsm 8 i -010276: 440000 isz t1 -010277: 610275 jmp 1b -010300: 630260 jmp hisinit i -010301: 000000 histbuf: 0 -010302: 000000 olddp: 0 -010303: 000000 dspbuf: 0 -010304: 000000 dspbp: 0 -010305: 000000 instr: 0 -010306: 000000 obs: 0 -010307: 000005 inslitr: n 5 -010310: 000001 insasg: b 1 -010311: 000017 o17: 017 -010312: 000010 d8: 8 -010313: 000077 o77: 077 -010314: 010000 o10000: 010000 -010315: 000005 d5: 5 -010316: 000060 o60: 060 -010317: 007777 o7777: 07777 -010320: 216000 o216000: 0216000 -010321: 160020 o160020: 0160020 -010322: 000020 o20: 020 -010323: 164000 o164000: 0164000 -010324: 017010 o17010: 017010 -010325: 017700 o17700: 017700 -010326: 000002 d2: 2 -010327: 210327 lacop: lac . -010330: 000141 a>;b>;c>;f>;n>;s>;t>;u>;x>;y> -010331: 000142 -010332: 000143 -010333: 000146 -010334: 000156 -010335: 000163 -010336: 000164 -010337: 000165 -010340: 000170 -010341: 000171 -010342: 100000 jms flush -010343: 200000 lac d1 -010344: 020005 sys write; mpc; mpcs -010345: 010364 -010346: 000003 -010347: 600000 jmp stop -010350: 100000 jms flush -010351: 200000 lac d1 -010352: 020005 sys write; msp; msps -010353: 010367 -010354: 000003 -010355: 600000 jmp stop -010356: 100000 jms flush -010357: 200000 lac d1 -010360: 020005 sys write; mas; mass -010361: 010372 -010362: 000003 -010363: 600000 jmp stop -010364: 000012 012;;012 -010365: 160143 -010366: 000012 -010367: 000012 012;;012 -010370: 163160 -010371: 000012 -010372: 000012 012;;012 -010373: 141163 -010374: 000012 -010375: 000000 octal: 0 -010376: 652000 lmq -010377: 210315 lac d5 -010400: 370375 tad octal i -010401: 740001 cma -010402: 050430 dac 2f -010403: 741200 sna -010404: 610410 jmp 3f -010405: 660603 llss 3 -010406: 450430 isz 2f -010407: 610405 jmp 1b -010410: 230375 lac octal i -010411: 050430 dac 2f -010412: 641002 lacq -010413: 050431 dac 2f+1 -010414: 210431 lac 2f+1 +010000: 610013 jmp shell +010001: 160010 dzm i 8 +010002: 450000 isz clear +010003: 110001 jms 1b +010004: 641002 lacq +010005: 617771 jmp 017771 +010006: 010005 zerop: .-1 +010007: 210532 lac d1 +010010: 020005 sys write; errmes; 1 +010011: 010565 +010012: 000001 +010013: 210532 lac d1 +010014: 020005 sys write; ready; 1 +010015: 010567 +010016: 000001 +010017: 210570 lac delim +010020: 550553 sad newln +010021: 110421 jms rline +010022: 110217 jms getcom +010023: 211104 lac narg +010024: 741200 sna +010025: 610051 jmp comretrn +010026: 211105 lac args +010027: 550566 sad chcom +010030: 741000 skp +010031: 610035 jmp 3f +010032: 211106 lac args+1 +010033: 550574 sad spsp +010034: 610475 jmp doch +010035: 020035 sys fork +010036: 741000 skp +010037: 610055 jmp loadcom +010040: 741100 spa +010041: 610007 jmp comerr +010042: 652000 lmq +010043: 210570 lac delim +010044: 550546 sad amper +010045: 610017 jmp shell1 +010046: 641002 lacq " hand written +010047: 650000 clq " send mesg to child +010050: 020033 sys smes +010051: 210570 lac delim +010052: 550553 sad newln +010053: 610013 jmp shell +010054: 610017 jmp shell1 +010055: 020003 sys open; args; 0 +010056: 011105 +010057: 000000 +010060: 740100 sma +010061: 610111 jmp 1f +010062: 020012 sys link; system; args; args +010063: 010571 +010064: 011105 +010065: 011105 +010066: 741100 spa +010067: 610073 jmp 2f +010070: 777777 -1 +010071: 051103 dac lnkflg +010072: 610055 jmp loadcom +010073: 211103 lac lnkflg +010074: 741200 sna +010075: 610100 jmp 3f +010076: 020013 sys unlink; args +010077: 011105 +010100: 210532 lac d1 +010101: 020005 sys write; args; 4 +010102: 011105 +010103: 000004 +010104: 210532 lac d1 +010105: 020005 sys write; errmes; 1 +010106: 010565 +010107: 000001 +010110: 020016 sys exit +010111: 211103 lac lnkflg +010112: 741200 sna +010113: 610116 jmp 1f +010114: 020013 sys unlink; args +010115: 011105 +010116: 210555 lac in +010117: 741200 sna +010120: 610140 jmp 2f +010121: 750000 cla +010122: 020011 sys close +010123: 020003 sys open; in; 0 +010124: 010555 +010125: 000000 +010126: 740100 sma +010127: 610140 jmp 2f +010130: 210532 lac d1 +010131: 020005 sys write; in; 4 +010132: 010555 +010133: 000004 +010134: 020005 sys write; errmes; 1 +010135: 010565 +010136: 000001 +010137: 020016 sys exit +010140: 210561 lac out +010141: 741200 sna +010142: 610152 jmp 1f +010143: 210532 lac d1 +010144: 020011 sys close +010145: 210540 lac o17 +010146: 020006 sys creat; out +010147: 010561 +010150: 741100 spa +010151: 020016 sys exit +010152: 211104 lac narg +010153: 740001 cma +010154: 051102 dac t1 +010155: 350541 tad o17771 +010156: 057777 dac 017777 +010157: 350533 tad dm1 +010160: 040010 dac 8 +010161: 510542 and o7777 +010162: 050213 dac boot+2 +010163: 740001 cma +010164: 350537 tad d7 +010165: 040011 dac close +010166: 210575 lac nargp +010167: 040011 dac 9 +010170: 220011 lac i 9 +010171: 060010 dac i 8 +010172: 451102 isz t1 +010173: 610170 jmp 2b +010174: 210576 lac bootp +010175: 040011 dac 9 +010176: 777772 -6 +010177: 051102 dac t1 +010200: 220011 lac i 9 +010201: 060010 dac i 8 +010202: 451102 isz t1 +010203: 610200 jmp 2b +010204: 210536 lac d2 +010205: 652000 lmq +010206: 210006 lac zerop +010207: 040010 dac 8 +010210: 610001 jmp clear+1 +010211: 020004 sys read; 4096; .. +010212: 010000 +010213: 010000 +010214: 641002 lacq +010215: 020011 sys close +010216: 610000 jmp 4096 +010217: 000000 getcom: 0 +010220: 771104 law args-1 +010221: 040012 dac 10 +010222: 150555 dzm in +010223: 150561 dzm out +010224: 151104 dzm narg +010225: 151103 dzm lnkflg +010226: 110400 jms get +010227: 550544 sad gr +010230: 610261 jmp cgr +010231: 550545 sad ls +010232: 610254 jmp cls +010233: 550546 sad amper +010234: 610252 jmp endcom +010235: 550547 sad semic +010236: 610252 jmp endcom +010237: 550553 sad newln +010240: 610252 jmp endcom +010241: 550550 sad space +010242: 610226 jmp nparm-1 +010243: 652000 lmq +010244: 211104 lac narg +010245: 350534 tad d4 +010246: 051104 dac narg +010247: 641002 lacq +010250: 110304 jms getparm +010251: 610227 jmp nparm +010252: 050570 dac delim +010253: 630217 jmp getcom i +010254: 110400 jms get +010255: 110304 jms getparm +010256: 051102 dac t1 +010257: 770554 law in-1 +010260: 610265 jmp cpio +010261: 110400 jms get +010262: 110304 jms getparm +010263: 051102 dac t1 +010264: 770560 law out-1 +010265: 040013 dac 11 +010266: 200012 lac 10 +010267: 350535 tad dm4 +010270: 040012 dac 10 +010271: 652000 lmq +010272: 777774 -4 +010273: 051101 dac c1 +010274: 220012 lac i 10 +010275: 060013 dac i 11 +010276: 451101 isz c1 +010277: 610274 jmp 1b +010300: 641002 lacq +010301: 040012 dac 10 +010302: 211102 lac t1 +010303: 610227 jmp nparm +010304: 000000 getparm:0 +010305: 652000 lmq +010306: 777770 -8 +010307: 051101 dac c1 +010310: 641002 lacq +010311: 741000 skp +010312: 110400 jms get +010313: 550550 sad space +010314: 610312 jmp 1b +010315: 110365 jms checkdlm +010316: 610007 jmp comerr +010317: 610323 jmp 2f +010320: 610400 jmp get +010321: 110365 jms checkdlm +010322: 610350 jmp fill1 +010323: 660711 alss 9 +010324: 451101 isz c1 +010325: 652000 lmq +010326: 110400 jms get +010327: 110365 jms checkdlm +010330: 610341 jmp fill +010331: 640002 omq +010332: 060012 dac i 10 +010333: 451101 isz c1 +010334: 610320 jmp 1b +010335: 110400 jms get +010336: 110365 jms checkdlm +010337: 630304 jmp i getparm +010340: 610335 jmp 1b +010341: 051102 dac t1 +010342: 210550 lac space +010343: 640002 omq +010344: 060012 dac i 10 +010345: 451101 isz c1 +010346: 740000 nop +010347: 211102 lac t1 +010350: 652000 lmq +010351: 211101 lac c1 +010352: 741100 spa +010353: 610356 jmp 1f +010354: 641002 lacq +010355: 630304 jmp i getparm +010356: 210574 lac spsp +010357: 060012 dac i 10 +010360: 451101 isz c1 +010361: 451101 isz c1 +010362: 610356 jmp 1b +010363: 641002 lacq +010364: 630304 jmp i getparm +010365: 000000 checkdlm: 0 +010366: 550550 sad space +010367: 630365 jmp i checkdlm +010370: 550553 sad newln +010371: 630365 jmp i checkdlm +010372: 550546 sad amper +010373: 630365 jmp i checkdlm +010374: 550547 sad semic +010375: 630365 jmp i checkdlm +010376: 450365 isz checkdlm +010377: 630365 jmp i checkdlm +010400: 000000 get: 0 +010401: 220010 lac i 8 +010402: 550554 sad slash +010403: 741000 skp +010404: 630400 jmp i get +010405: 220010 lac i 8 +010406: 550553 sad newln +010407: 741000 skp +010410: 610007 jmp comerr +010411: 641002 lacq +010412: 050420 dac 1f +010413: 110421 jms rline +010414: 210420 lac 1f 010415: 652000 lmq -010416: 660603 ecla llss 3 -010417: 350316 tad o60 -010420: 100000 jms putc -010421: 210431 lac 2f+1 -010422: 660703 alss 3 -010423: 050431 dac 2f+1 -010424: 450430 isz 2f -010425: 610414 jmp 1b -010426: 450375 isz octal -010427: 630375 jmp octal i -010430: 000000 2: 0;0 -010431: 000000 +010416: 210550 lac space +010417: 630400 jmp i get +010420: 000000 1: 0 +010421: 000000 rline:0 +010422: 770600 law lineb-1 +010423: 040017 dac 15 +010424: 040010 dac 8 +010425: 110445 jms getcha +010426: 060017 dac i 15 +010427: 550553 sad newln +010430: 630421 jmp i rline +010431: 550551 sad sharp +010432: 610436 jmp psharp +010433: 550552 sad atsign +010434: 610422 jmp 2b +010435: 610425 jmp 1b +010436: 777777 -1 +010437: 340017 tad 15 +010440: 550422 sad 2b +010441: 610422 jmp 2b +010442: 350533 tad dm1 +010443: 040017 dac 15 +010444: 610425 jmp 1b +010445: 000000 getcha: 0 +010446: 210577 lac char +010447: 150577 dzm char +010450: 740200 sza +010451: 630445 jmp i getcha +010452: 450600 isz nread +010453: 610467 jmp 1f +010454: 750000 cla +010455: 020004 sys read; inbuf; 64 +010456: 011001 +010457: 000100 +010460: 741300 spa sna +010461: 610526 jmp lgout +010462: 740001 cma +010463: 350532 tad d1 +010464: 050600 dac nread +010465: 771000 law inbuf-1 +010466: 040016 dac 14 +010467: 220016 lac i 14 +010470: 652000 lmq +010471: 510543 and o777 +010472: 050577 dac char +010473: 661611 ecla llss 9 +010474: 630445 jmp i getcha +010475: 211104 lac narg +010476: 660502 lrss 2 +010477: 740001 cma +010500: 350532 tad d1 +010501: 051104 dac narg +010502: 771111 law args+4 +010503: 050510 dac 1f +010504: 451104 isz narg +010505: 741000 skp +010506: 610051 jmp comretrn +010507: 020021 sys chdir; 1:0 +010510: 000000 +010511: 741100 spa +010512: 610517 jmp cherr +010513: 210510 lac 1b +010514: 350534 tad d4 +010515: 050510 dac 1b +010516: 610504 jmp 2b +010517: 210510 lac 1b +010520: 050523 dac .+3 +010521: 210532 lac d1 +010522: 020005 sys write; ..; 4 +010523: 010000 +010524: 000004 +010525: 610007 jmp comerr +010526: 650000 clq +010527: 210532 lac d1 +010530: 020033 sys smes +010531: 020016 sys exit +010532: 000001 d1: 1 +010533: 777777 dm1: -1 +010534: 000004 d4: 4 +010535: 777773 dm4: -5 +010536: 000002 d2: 2 +010537: 000007 d7: 7 +010540: 000017 o17: 017 +010541: 017771 o17771: 017771 +010542: 007777 o7777: 07777 +010543: 000777 o777: 0777 +010544: 000076 gr: 076 +010545: 000074 ls: 074 +010546: 000046 amper: &> +010547: 000073 semic: 073 +010550: 000040 space: 040 +010551: 000043 sharp: 043 +010552: 000100 atsign: 0100 +010553: 000012 newln: 012 +010554: 000057 slash: 057 +010555: 000000 in: 0;0;0;0 +010556: 000000 +010557: 000000 +010560: 000000 +010561: 000000 out: 0;0;0;0 +010562: 000000 +010563: 000000 +010564: 000000 +010565: 077012 errmes: 077012 +010566: 143150 chcom: +010567: 100040 ready: 0100040 +010570: 000012 delim: 012 +010571: 163171 system: ; ; ; spsp: 040040 +010572: 163164 +010573: 145155 +010574: 040040 +010575: 011103 nargp: narg-1 +010576: 010210 bootp: boot-1 +010577: 000000 char: 0 +010600: 777777 nread: -1 diff --git a/build/Makefile b/build/Makefile index da7aa76..9298cc8 100644 --- a/build/Makefile +++ b/build/Makefile @@ -85,7 +85,7 @@ alt/image.fs: altcmd altothers clean: rm -f boot.rim image.fs a.lst n.out a.out rm -f alt/image.fs alt/a.out alt/a.lst - rm -rf $(BINDIR) $(TESTDIR) + rm -rf $(BINDIR) $(TESTDIR) rm -rf $(BINARIES) dirs: @@ -95,7 +95,7 @@ dirs: cmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \ $(BINDIR)/chown $(BINDIR)/chrm $(BINDIR)/cp $(BINDIR)/ds \ $(BINDIR)/dskres $(BINDIR)/dsksav $(BINDIR)/ed $(BINDIR)/init \ - $(BINDIR)/db $(BINDIR)/stat $(BINDIR)/tm #$(BINDIR)/dmabs #$(BINDIR)/st + $(BINDIR)/db $(BINDIR)/stat $(BINDIR)/tm $(BINDIR)/dsw # Alternate commands: no dd, but . and .. altcmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \ @@ -162,7 +162,6 @@ $(BINDIR)/st: $(GAMESRC)/st/st1.s $(GAMESRC)/st/st2.s $(GAMESRC)/st/st3.s $(GA $(BINDIR)/bc: $(CMDSRC)/bc/bc.s $(AS) $(ASARGS) -o $(BINDIR)/bc $(CMDSRC)/bc/bc.s -# -- compile errors $(BINDIR)/dsw: $(CMDSRC)/dsw/dsw.s $(AS) $(ASARGS) -o $(BINDIR)/dsw $(CMDSRC)/dsw/dsw.s @@ -174,6 +173,9 @@ $(BINDIR)/apr: $(CMDSRC)/apr/apr.s $(BINDIR)/adm: $(CMDSRC)/adm/adm.s $(AS) $(ASARGS) -o $(BINDIR)/adm $(CMDSRC)/adm/adm.s +$(BINDIR)/sh: $(CMDSRC)/sh/sh.s + $(AS) $(ASARGS) -o $(BINDIR)/sh $(CMDSRC)/sh/sh.s + # Alternative init: no dd directory $(BINDIR)/altinit: $(ALTSRC)/init/init.s $(AS) $(ASARGS) -o $(BINDIR)/altinit $(ALTSRC)/init/init.s diff --git a/scans/dsw.s b/scans/dsw.s index 03f8ff2..f1f25ac 100644 --- a/scans/dsw.s +++ b/scans/dsw.s @@ -24,7 +24,7 @@ wr: lac d1 sys write; o12; 1 sys save -io: +do: sys unlink; dir+1 sys exit diff --git a/src/cmd/dsw/dsw.s b/src/cmd/dsw/dsw.s index a197aca..1a17271 100644 --- a/src/cmd/dsw/dsw.s +++ b/src/cmd/dsw/dsw.s @@ -24,7 +24,7 @@ wr: lac d1 sys write; o12; 1 sys save -io: +do: sys unlink; dir+1 sys exit diff --git a/src/cmd/sh/sh.s b/src/cmd/sh/sh.s new file mode 100644 index 0000000..5fbd9cc --- /dev/null +++ b/src/cmd/sh/sh.s @@ -0,0 +1,430 @@ +" ** 11-45-91.pdf page 30 +" sh + +clear: + jmp shell + +1: + dzm i 8 + isz clear + jms 1b + lacq + jmp 017771 +zerop: .-1 + +comerr: + lac d1 + sys write; errmes; 1 + +shell: + lac d1 + sys write; ready; 1 +shell1: + lac delim + sad newln + jms rline + jms getcom + lac narg + sna + jmp comretrn + lac args + sad chcom + skp + jmp 3f + lac args+1 + sad spsp + jmp doch +3: + sys fork + skp + jmp loadcom + spa + jmp comerr + lmq + lac delim + sad amper + jmp shell1 + lacq " hand written + clq " send mesg to child + sys smes +comretrn: + lac delim + sad newln + jmp shell + jmp shell1 + +loadcom: + sys open; args; 0 + sma + jmp 1f + sys link; system; args; args + spa + +" ** 11-45-91.pdf page 30 + + jmp 2f + -1 + dac lnkflg + jmp loadcom + +2: + lac lnkflg + sna + jmp 3f + sys unlink; args +3: + lac d1 + sys write; args; 4 + lac d1 + sys write; errmes; 1 + sys exit + +1: + lac lnkflg + sna + jmp 1f + sys unlink; args +1: + lac in + sna + jmp 2f + cla + sys close + sys open; in; 0 + sma + jmp 2f + lac d1 + sys write; in; 4 + sys write; errmes; 1 + sys exit +2: + lac out + sna + jmp 1f + lac d1 + sys close + lac o17 + sys creat; out + spa + sys exit +1: + lac narg + cma + dac t1 + tad o17771 + dac 017777 + tad dm1 + dac 8 + and o7777 + dac boot+2 + cma + tad d7 + dac close + lac nargp + dac 9 + +" ** 11-45-91.pdf page 32 + +2: + lac i 9 + dac i 8 + isz t1 + jmp 2b + lac bootp + dac 9 + -6 + dac t1 +2: + lac i 9 + dac i 8 + isz t1 + jmp 2b + lac d2 + lmq + lac zerop + dac 8 + jmp clear+1 + +boot: + sys read; 4096; .. + lacq + sys close + jmp 4096 + +getcom: 0 + law args-1 + dac 10 + dzm in + dzm out + dzm narg + dzm lnkflg + + jms get +nparm: + sad gr + jmp cgr + sad ls + jmp cls + sad amper + jmp endcom + sad semic + jmp endcom + sad newln + jmp endcom + sad space + jmp nparm-1 + lmq + lac narg + tad d4 + dac narg + lacq + jms getparm + jmp nparm + +endcom: + dac delim + jmp getcom i + +cls: + +" ** 11-45-91.pdf page 33 + + jms get + jms getparm + dac t1 + law in-1 + jmp cpio +cgr: + jms get + jms getparm + dac t1 + law out-1 +cpio: + dac 11 + lac 10 + tad dm4 + dac 10 + lmq + -4 + dac c1 +1: + lac i 10 + dac i 11 + isz c1 + jmp 1b + lacq + dac 10 + lac t1 + jmp nparm + +getparm:0 + lmq + -8 + dac c1 + lacq + skp +1: + jms get + sad space + jmp 1b + jms checkdlm + jmp comerr + jmp 2f +1: + jmp get + jms checkdlm + jmp fill1 +2: + alss 9 + isz c1 + lmq + jms get + jms checkdlm + jmp fill + omq + dac i 10 + isz c1 + jmp 1b +1: + jms get + jms checkdlm + jmp i getparm + jmp 1b + +" ** 11-45-91.pdf page 34 + +fill: + dac t1 + lac space + omq + dac i 10 + isz c1 + nop + lac t1 +fill1: + lmq + lac c1 + spa + jmp 1f + lacq + jmp i getparm +1: + lac spsp + dac i 10 + isz c1 + isz c1 + jmp 1b + lacq + jmp i getparm + +checkdlm: 0 + sad space + jmp i checkdlm + sad newln + jmp i checkdlm + sad amper + jmp i checkdlm + sad semic + jmp i checkdlm + isz checkdlm + jmp i checkdlm + +get: 0 + lac i 8 + sad slash + skp + jmp i get + lac i 8 + sad newln + skp + jmp comerr + lacq + dac 1f + jms rline + lac 1f + lmq + lac space + jmp i get + +1: 0 +rline:0 +2: + law lineb-1 + dac 15 + dac 8 +1: + jms getcha + +" ** 11-45-91.pdf page 35 + dac i 15 + sad newln + jmp i rline + sad sharp + jmp psharp + sad atsign + jmp 2b + jmp 1b +psharp: + -1 + tad 15 + sad 2b + jmp 2b + tad dm1 + dac 15 + jmp 1b + +getcha: 0 + lac char + dzm char + sza + jmp i getcha + isz nread + jmp 1f + cla + sys read; inbuf; 64 + spa sna + jmp lgout + cma + tad d1 + dac nread + law inbuf-1 + dac 14 +1: + lac i 14 + lmq + and o777 + dac char + ecla llss 9 + jmp i getcha + +doch: + lac narg + lrss 2 + cma + tad d1 + dac narg + law args+4 + dac 1f +2: + isz narg + skp + jmp comretrn + sys chdir; 1:0 + spa + jmp cherr + lac 1b + tad d4 + dac 1b + jmp 2b +cherr: + +" ** 11-45-91.pdf page 36 + lac 1b + dac .+3 + lac d1 + sys write; ..; 4 + jmp comerr + +lgout: + clq + lac d1 + sys smes + sys exit + +d1: 1 +dm1: -1 +d4: 4 +dm4: -5 +d2: 2 +d7: 7 +o17: 017 +o17771: 017771 +o7777: 07777 +o777: 0777 +gr: 076 +ls: 074 +amper: &> +semic: 073 +space: 040 +sharp: 043 +atsign: 0100 +newln: 012 +slash: 057 +in: 0;0;0;0 +out: 0;0;0;0 +errmes: 077012 +chcom: +ready: 0100040 +delim: 012 +system: ; ; ; spsp: 040040 +nargp: narg-1 +bootp: boot-1 +char: 0 +nread: -1 +lineb: .=.+128 +inbuf: .=.+64 +c1: .=.+1 +t1: .=.+1 +lnkflg: .=.+1 +narg: .=.+1 +args: