From 63223cfa7c423c8a908b04ef634aa0adac50ee12 Mon Sep 17 00:00:00 2001 From: Warren Toomey Date: Mon, 29 Feb 2016 06:40:15 +1000 Subject: [PATCH] Now that the PDF files have been transcribed and scanned in, I've moved copies of them over into the src/ area so that we can add comments and make other changes, while keeping the original OCR'd ones intact. --- src/cmd/adm.s | 586 ++++++++++++++++++++++ src/cmd/apr.s | 683 ++++++++++++++++++++++++++ src/cmd/as.s | 980 +++++++++++++++++++++++++++++++++++++ src/cmd/bc.s | 288 +++++++++++ src/cmd/bi.s | 433 +++++++++++++++++ src/cmd/bl.s | 194 ++++++++ src/cmd/cas.s | 1059 ++++++++++++++++++++++++++++++++++++++++ src/cmd/check.s | 326 +++++++++++++ src/cmd/chmod.s | 77 +++ src/cmd/chown.s | 2 +- src/cmd/chrm.s | 41 ++ src/cmd/cp.s | 97 ++++ src/cmd/db.s | 1217 ++++++++++++++++++++++++++++++++++++++++++++++ src/cmd/dmabs.s | 256 ++++++++++ src/cmd/ds.s | 501 +++++++++++++++++++ src/cmd/dskio.s | 78 +++ src/cmd/dskres.s | 26 + src/cmd/dsksav.s | 26 + src/cmd/dsw.s | 37 ++ src/cmd/ed1.s | 771 +++++++++++++++++++++++++++++ src/cmd/ed2.s | 519 ++++++++++++++++++++ src/cmd/ind.b | 26 + src/cmd/init.s | 291 +++++++++++ src/cmd/lease.b | 20 + src/sys/s1.s | 195 ++++++++ src/sys/s2.s | 334 +++++++++++++ src/sys/s3.s | 354 ++++++++++++++ src/sys/s4.s | 347 +++++++++++++ src/sys/s5.s | 278 +++++++++++ src/sys/s6.s | 350 +++++++++++++ src/sys/s7.s | 367 ++++++++++++++ src/sys/s8.s | 214 ++++++++ src/sys/s9.s | 115 +++++ src/sys/sop.s | 97 ++++ src/sys/sysmap | 264 ++++++++++ 35 files changed, 11448 insertions(+), 1 deletion(-) create mode 100644 src/cmd/adm.s create mode 100644 src/cmd/apr.s create mode 100644 src/cmd/as.s create mode 100644 src/cmd/bc.s create mode 100644 src/cmd/bi.s create mode 100644 src/cmd/bl.s create mode 100644 src/cmd/cas.s create mode 100644 src/cmd/check.s create mode 100644 src/cmd/chmod.s create mode 100644 src/cmd/chrm.s create mode 100644 src/cmd/cp.s create mode 100644 src/cmd/db.s create mode 100644 src/cmd/dmabs.s create mode 100644 src/cmd/ds.s create mode 100644 src/cmd/dskio.s create mode 100644 src/cmd/dskres.s create mode 100644 src/cmd/dsksav.s create mode 100644 src/cmd/dsw.s create mode 100644 src/cmd/ed1.s create mode 100644 src/cmd/ed2.s create mode 100644 src/cmd/ind.b create mode 100644 src/cmd/init.s create mode 100644 src/cmd/lease.b create mode 100644 src/sys/s1.s create mode 100644 src/sys/s2.s create mode 100644 src/sys/s3.s create mode 100644 src/sys/s4.s create mode 100644 src/sys/s5.s create mode 100644 src/sys/s6.s create mode 100644 src/sys/s7.s create mode 100644 src/sys/s8.s create mode 100644 src/sys/s9.s create mode 100644 src/sys/sop.s create mode 100644 src/sys/sysmap diff --git a/src/cmd/adm.s b/src/cmd/adm.s new file mode 100644 index 0000000..f747395 --- /dev/null +++ b/src/cmd/adm.s @@ -0,0 +1,586 @@ +" adm + + lac 017777 i + sad d4 + jmp nofiles + lac 017777 + tad d1 + dac name + jms connect + sys time + llss 9 + ecla lls 3 + tad o60 + alss 9 + dac snumb + ecla llss 3 + tad o60 + alss 9 + dac snumb+1 + ecla llss 3 + tad o60 + alss 9 + dac snumb+2 + lac d1 + sys write; snumb; 3 + lac d1 + sys write; o12; 1 + jms gcard; <$;<*;<$;<7;;;;012 +m2s = .-m1 +m2: + ;;;;;;;;;;040;;040;;;;;;;;;;;;012 +m4s = .-m4 + +stop: + dpof + las + and o400000 + sna + sys save + sys exit + +carrier: 0100000 +ilock: 040000 +totime: 300 +disflg: 0 + +flush: 0 + lac noc + sna + jmp flush i + law 0104 + jms message; tbuf + law tbuf + dac opt + dzm noc + jmp flush i + +gcard: 0 + lac gcard i + isz gcard + sna + jmp 3f + lrss 9 + sad o45 + jmp 1f + jms putc + jmp gcard+1 +1: + -1 + tad gcard i + cma + dac 2f + isz gcard +1: + law 040 + jms putc + isz 2f + jmp 1b + jmp gcard+1 +2: 0 +3: + lac noc + sna + jmp gcard i + sad d80 + jmp gcard i + law 040 + jms putc + jmp 3b + +done: + jms gcard; <$;<%;6;;;;012 +m1s = .-m1 +m2: + ;;;;;;;;;;040;;040;;;;;;;;;;;;012 +m4s = .-m4 + +stop: + dpof + sys exit + +ipt: 0 +eipt: 0 +iipt: rbuf +fi: 0 +opt: tbuf +noc: 0 +carrier: 0100000 +ilock: 040000 +totime: 300 +disflg: 0 + +casetab: + 2;2;2;2;2;2;2;2 + 2;2;2;2;2;2;2;2 + 2;2;2;2;2;2;2;2 + 2;2;2;2;2;2;2;2 + 2;1;2;2;2;0;0;2 + 2;2;2;2;2;0;2;2 + 2;2;2;2;2;2;2;2 + 2;2;2;2;2;2;2;1 + 0;0;0;0;0;0;0;0 + 0;0;0;0;0;0;0;0 + 0;0;0;0;0;0;0;0 + 0;0;0;0;0;0;2;1 + 2;1;1;1;1;1;1;1 + 1;1;1;1;1;1;1;1 + 1;1;1;1;1;1;1;1 + 1;1;1;1;1;1;1;1 + +gcard: 0 + lac gcard i + isz gcard + sna + jmp gcard i + irss 9 + sad o45 + jmp 1f + jms putc + jmp gcard+1 +1: + -1 + tad gcard i + cma + dac 2f + isz gcard +1: + law 040 + jms putc + isz 2f + jmp 1b + jmp gcard+1 +2: 0 + +done: + lac noc + sna + jmp 1f + sad d72 + jmp 1f + law 040 + jms putc + jmp done +1: + jms gcard; <$;<%;6;> + dzm dot+1 + jmp assm1 + +assm3: + lac rand + sad d2 + jmp assm4 + sza + jmp assm6 + lac rator + sza + jmp assm6 + lac rand+1 + jms betwen; dm1; d10 + jmp assm6 + dac name + tad fbxp + dac lvrand + lac i lvrand + dac name+1 + isz i lvrand + lac o146 + dac name+2 + dzm name+3 + jms tlookup + -1 + dac fbflg +assm4: + lac rand+1 + tad d4 + dac lvrand + lac rator + sza + jmp assm5 + lac dot + dac r + lac dot+1 + dac r+1 + jmp 1f + +assm5: + jms gpair + jms expr +1: + lac r + dac i lvrand + isz lvrand + lac r+1 + dac i lvrand + lac fbflg + sna + jmp assm1 + dzm fbflg + dzm name+1 + lac o142 + dac name+2 + jms lookup + jmp assm4 + +assm6: + jms error; x> + jmp assm1 + +init1: 0 + lac d1 + sys write; 1f; 2f-1f + dzm passno + lac o56040 + dac dot-4 + lac o56056 + dac cmflx-4 + lac o40040 + dac dot-3 + dac dot-2 + dac dot-1 + dac cmflx-3 + dac cmflx-2 + dac cmflx-1 + dzm iof + jms init + jmp i init1 +1: + 0111012 +2: + +init2: 0 + lac d1 + dac passno + sys write; 1f; 2f-1f + jms init + lac o17 + sys creat; 2f + dac bfo + sys open; 2f; 0 + dac bfi + dzm bufadd + jms copyz; buf; 64 + jmp i init2 +1: + 0111111;012000 +2: + 0141056;0157165;0164040;040040 + +init: 0 + lac i 017777 + dac narg + lac 017777 + tad d1 + dac fname + -1 + dac eofflg + jms ioinit + dzm savchr + dzm comflg + lac d1 + dac dot + dzm dot+1 + dzm cmflx + lac d4096 + dac cmflx+1 + dzm fbflg + jms copyz; fbxp: fbx; 10 + jmp i init + +finis: + lac iof + sys close + jms bufwr + lac bfi + sys close + lac bfo + sys close + -1 + tad namsiz + cma + rcl + dac char + rcl + tad char + dac 1f + lac o17 + sys creat; n.out + dac bfi + sys write; namlst; 1: 0 + lac bfi + sys close + sys exit + +n.out: + 0156056;0157165;0164040;040040 + +process: 0 + lac dot+1 + dac lvrand + lac dot + sad d3 + jmp proc4 + sza + jmp proc1 + -1 + tad cmflx+1 + cma + tad lvrand + dac lvrand + +proc1: + lac lvrand + spa + jmp proc4 + and o17700 + sad bufadd + jmp proc2 + jms bufwr + jms copyz; buf; 64 + lac lyrand + and o17700 + dac bufadd + dac 1f + lac bfi + sys seek; 1: 0; 0 + spa + jmp proc2 + lac bfi + sys read; buf; 64 + +proc2: + lac lyrand + and o77 + jms betwen; dm1; maxsto + dac maxsto + tad bufp + dac lvrand + lac r + sna + jmp proc3 + sad d3 + jmp proc5 + lac cmflx+1 + tad r+1 + dac r+1 + +proc3: + lac r+1 + dac i lvrand + jmp i process + +proc4: + jms error; .> + lac d1 + dac dot + dzm dot+1 + jmp skip + +proc5: + jms error; u> + jmp proc3 + +bufwr: 0 + lac bfo + sys seek; bufadd: 0; 0 + isz maxsto + lac bfo + sys write; bufp: buf; maxstp: -1 + -1 + dac maxsto + jmp i bufwr + +Xnumber: 0 + dac 3f + lac d1000 + dac 2f +1: + lac 3f + cll + idiv; 2: 0 + dac 3f + lacq + tad o60 + dac i 8 + iac 2b + cll + idiv; 10 + lacq + dac 2b + sza + jmp 1b + jmp i number +3: 0 + +getsc: 0 + lac i getsc + dac sctalp + isz getsc + lac i sctalp + dac sctal + add o400000 + dac i sctalp + ral + lac i sctal + szl + lrss 9 + and o177 + jmp i getsc + +putsc: 0 + and o177 + lmq + lac i putsc + dac sctalp + isz putsc + lac i sctalp + dac sctal + add o400000 + dac i sctalp + sma cla + jmp 1f + llss 27 + dac i sctal + lrss 9 + jmp i putsc + +1: + lac i sctal + omq + dac i sctal + lacq + jmp i putsc + +sctalp: 0 +sctal: 0 + +betwen: 0 + dac 2f + lac i betwen + dac 3f + isz betwen + lac i 3f + cma + tad 2f + spa + jmp 2f + lac i betwen + dac 3f + isz betwen + lac i 3f + cma + tad d1 + tad 2f + spa +1: + isz betwen + lac 2f + jmp i betwen +2: 0 +3: 0 + +copyz: 0 + -1 + tad i copyz + dac 8 + isz copyz + lac i copyz + cma + tad d1 + dac 2f + isz copyz +1: + dzm i 8 + isz 2f + jmp 1b + jmp i copyz +2: 0 + +error: 0 + lac passno + sza + jmp 1f + isz error + jmp i error +1: + -1 + tad mesp + dac 8 + lac i error + dac i 8 + lac o40 + dac i 8 + lac rator + sad d5 + jmp 1f + lac savchr + sad o12 + jmp 1f + lac lineno + jmp 2f +1: + -1 + tad lineno +2: + jms number + lac o12 + dac i 8 + -2 + tad mesp + cma + tad 8 + dac 1f + lac d1 + sys write; mesp: mes; 1: 0 + isz error + jmp i error + +skip: + lac rator + sad d5 + jmp assm1 +1: + jms gchar + sad d5 + jmp assm1 + jmp 1b + +ioinit: 0 + jms copyz; iobuf; 64 + lac iof + sys read; iobufp: iobuf; 64 + sna + jms nextfil + lac iobufp + dac tal + -129 + dac talc + jmp i ioinit + +nextfil: 0 + lac d1 + dac lineno + lac iof + sza + sys close +nf1: + lac narg + sad d4 + skp + jmp 1f + dzm eofflg + jmp i nextfil +1: + tad dm4 + dac narg + lac fname + tad d4 + dac fname + sys open; frame: 0; 0 + dac iof + sma + lac passno + sna + jmp nextfil i + lac fname + dac 1f + lac d1 + sys write; 1; 0; 4 + lac iof + sma + jmp 1f + lac d1 + sys write; emes; 2 + sys exit +1: + lac d1 + sys write; emes+1; 1 + jmp i nextfil +emes: + 040077;012000 + +gchar: 0 + lac savchr + dzm savchr + sza + jmp gch3 + lac eofflg + sza + jmp 1f + lac o12 + jmp gch3 +1: + isz talc + skp + jms ioinit + jms getsc; tal + sna + jmp gchar+1 + sad o177 + jmp gchar+1 + sad o12 + skp + jmp 1f + dzm comflc + isz lineno +1: + sad o42 + dac comflc + dac char + lac comflc + sza + jmp gchar+1 + lac char + +gch3: + dac char + jms betwn; d0; o200 + cla + tad lactab + dac .+1 + lac 0 + jmp i gchar + +gsymb: 0 + jms gchar + dac rator + tad jmpsw1 + dac 1f + lac char + sad o74 + jmp lqot + dac namc + jms gchar + lac char + sad o76 + jmp rqot + dac savchr + lac namc + dac char +1: + jmp 0 + +jmpsw1: + jmp .+1 + jmp i gsymb + jmp i gsymb + jmp i gsymb + jmp i gsymb + jmp gs1 + jmp i gsymb + jmp gs2 + jmp gs3 + +badchr: + jms error; g> +1: + jms gchar + lac char + sad o12 + skp + jmp 1b + dac savchr + jmp gsymb+1 + +lqot: + jms gchar + lac o40 + dac savchr + lac char + alss 9 + jmp 1f + +rqot: + lac namc +1: + dac rand+1 + lac d7 + dac rator + jmp i gsymb + +gs1: + jms gchar + sad d4 + jmp gs1 + lac char + dac savchr + jmp i gsymb + +gs2: + lac namep + dac tal1 + -7 + dac tal1c + lac char + jms putsc; tal1 + +gnam1: + jms gchar + jms betwen; d5; d8 + jmp gnam3 + lac char + jms putsc; tal1 + isz tal1c + jmp gnam1 + +gnam2: + jms gchar + jms betwen; d5; d8 + skp + jmp gnam2 + lac char + dac savchr + jms lookup + jmp i gsymb + +gnam3: + lac char + dac savchr +1: + lac o40 + jms putsc; tal1 + isz tal1c + jmp 1b + jms lookup + jmp i gsymb + +gs3: + dzm rand+1 + lac char + sad o60 + jmp 1f + lac d10 + jmp 2f +1: + lac d8 +2: + dac num2 + +num1: + lac rand+1 + cll + mul +num2: 0 + lacq + tad char + tad dm48 + dac rand+1 + jms gchar + sad d7 + jmp num1 + lac char + dac savchr + lac rand+1 + jms betwen; dm1; d10 + jmp i gsymb + dac name + tad fbxp + dac name+1 + lac i name+1 + dac name+1 + lac savchr + sad o146 + jmp 1f + sad o142 + skp + jmp i gsymb + dzm name+1 +1: + dac name+2 + dzm name+3 + lac d6 + dac rator + jms lookup + dzm savchr + jmp i gsymb + +tlookup: 0 + jmp 1f +lookup: 0 + dzm tlookup +1: + -1 + tad namlstp + dac 8 + lac namsiz + dac namc +lu1: + lac i 8 + sad name + jmp 1f + lac d5 +lu2: + tad 8 + dac 8 + isz namc + jmp lu1 + lac tlookup + sna + jmp 2f + lac fnamep + dac rand+1 + jmp i tlookup +2: + lac name + dac i 8 + lac 8 + dac rand+1 + lac name+1 + dac i 8 + lac name+2 + dac i 8 + lac name+3 + dac i 8 + lac d3 + dac i 8 + dzm i 8 + -1 + tad namsiz + dac namsiz + jmp i lookup +1: + lac i 8 + sad name+1 + jmp 1f + lac d4 + jmp lu2 +1: + lac i 8 + sad name+2 + jmp 1f + lac d3 + jmp lu2 +1: + lac i 8 + sad name+3 + jmp 1f + lac d2 + jmp lu2 +1: + -3 + tad 8 + dac rand+1 + lac tlookup + sza + jmp i tlookup + jmp i lookup +namep: name + +gpair: 0 + jms gsymb + lac rator + sad d4 + jmp gpair+1 + jms betwen; dm1; d6 + jmp gp1 + dzm rand + dzm rand+1 + jmp i gpair +gp1: + sad d7 + lac d4 + tad dm4 + dac rand + jms gsymb + lac rator + sad d4 + jmp gp2 + jms betwen; dm1; d6 + skp + jmp i gpair + jms error; x> + jmp skip +gp2: + jms gchar + jms betwen; d5; d8 + jmp gp3 + lac char + dac savchr + jmp i gpair +gp3: + lac char + dac savchr + jms gsymb + jmp i gpair + +expr: 0 + jms grand + -1 + dac srand +exp5: + lac rand + dac r + lac rand+1 + dac r+1 +exp1: + lac rator + jms betwen; d1; d5 + jmp exp3 + dac orator + jms gpair + jms grand + lac orator + sad d4 + jmp exp2 + jms oper; rand + jmp exp1 +exp2: + jms pickup + lac r + dac srand + lac r+1 + dac srand+1 + jmp expb +exp3: + sad d5 + jmp exp4 + jms error; x> + smp skip +exp4: + jms pickup + jmp i expr + +pickup: 0 + lac srand + spa + jmp i pickup + lac d4 + jms oper; srand + jmp i pickup + +grand: 0 + lac rand + sad d2 + skp + jmp i grand + lac rand+1 + tad d4 + dac rand+1 + lac i rand+1 + dac rand + isz rand+1 + lac i rand+1 + dac rand+1 + jmp i grand + +oper: 0 + tad opsw + dac oper1 + -1 + tad i oper + dac 8 + isz oper + lac r + sad d3 + jmp oper2 + lac i 8 + sad d3 + jmp oper2 +oper1: + jmp 0 +opsw: + jmp .-1 + jmp oplus + jmp ominus + tad r + dac r + lac r+1 + lmq + lac i 8 + omq + jmp oret +oplus: + tad r + dac r + lac r+1 + tad i 8 + jmp oret +ominus: + cma + tad d1 + tad r + dac r + -1 + tad i 8 + cma + tad r+1 +oret: + dac r+1 + lac r + jms betwen; dm1; d2 + skp + jmp i oper + jms error; r> + lac d1 + dac r + jmp i oper +oper2: + dac r + dzm r+1 + jmp i oper + +d0: 0 +d1: 1 +d4096: 4096 +d2: 2 +d3: 3 +d4: 4 +d5: 5 +d6: 6 +d7: 7 +d8: 8 +o12: d10: 10 +dm1: -1 +o40: 040 +o60: 060 +dm48: -48 +o400000: 0400000 +o177: 0177 +dm4: -4 +o200: 0200 +o42: 042 +o142: 0142 +o40040: 040040 +o56056: 056056 +o56040: 056040 +o146: 0146 +o17777: 017777 +d1000: 1000 +o17: 017 +o17700: 017700 +o77: 077 +o74: 074 +o76: 076 + +namsiz: -2 +namistp: namlst +fnamep: fakename +lactab: lac .+1 +8;8;8;8;8;8;8;8 +8;4;5;8;8;8;8;8 +8;8;8;8;8;8;8;8 +8;8;8;8;8;8;8;8 +4;8;8;8;8;8;8;8 +8;8;6;2;4;3;6;8 +7;7;7;7;7;7;7;7 +7;7;0;5;8;1;8;8 +8;6;6;6;6;6;6;6 +6;6;6;6;6;6;6;6 +6;6;6;6;6;6;6;6 +6;6;6;8;8;8;8;8 +8;6;6;6;6;6;6;6 +6;6;6;6;6;6;6;6 +6;6;6;6;6;6;6;6 +6;6;6;8;8;8;8;8 + +fbflg: .=.+1 +tal: .=.+1 +talc: .=.+1 +tal1: .=.+1 +tal1c: .=.+1 +narg: .=.+1 +lvrand: .=.+1 +eofflg: .=.+1 +namc: .=.+1 +passno: .=.+1 +char: .=.+1 +savchr: .=.+1 +comflg: .=.+1 +rator: .=.+1 +orator: .=.+1 +rand: .=.+2 +srand: .=.+2 +r: .=.+2 +name: .=.+4 +buf: .=.+64 +iobuf: .=.+64 +fbx: .=.+10 +mes: .=.+20 +iof: .=.+1 +bfi: .=.+1 +bfo: .=.+1 +lineno: .=.+1 + +fakename: .=.+6 +namlst: +.=.+4 +dot: +.=.+6 +cmflx: \ No newline at end of file diff --git a/src/cmd/bc.s b/src/cmd/bc.s new file mode 100644 index 0000000..b176f2b --- /dev/null +++ b/src/cmd/bc.s @@ -0,0 +1,288 @@ +" bc + + jmp start +rinit: + jms initio + jmp .+1 i +initio: 0 + lac inter-1 + dac fetch + jmp rinit + jms inter +inter: 0 + las + and o17 + sza + jms trace + lac pc i + dac instr + lac pc + and o10000 + sna + jmp badpc + lac sp + and o17700 + sad o17700 + jmp badsp + and o10000 + sna + jmp badsp + lac instr + sad insasg + skp + jmp inter i + -4 + tad sp + dac t1 + lac t1 i + and o10000 + sna + jmp badasgn + lac instr + jmp inter i + +trace: 0 + and d1 + sza + jms dtrace + las + and d2 + sza + jms ddisp + las + and d4 + sza + jms histog + las + and d8 + sza + jmp stop + jmp trace i + +itrace: 0 + lac pc + dac 8 + lac 8 i + dac instr + lac 8 + jms octal; -4 + law 040 + jms putc + lac instr + cll; lrs 14 + tad lacop + dac .+1 + lac .. + jms putc + law 040 + jms putc + lac instr + jms octal; -4 + + lac instr + sad inslitr + skp + jmp 1f + law 040 + jms putc + lac 8 i + jms octal; -6 +1: + law 012 + jms putc + jms flush + jmp dtrace i + +ddisp: 0 + jms dspinit + lac dspbp + dac 8 + lac dp + sad olddp + skp + jms dspblk + lac pc + jms dspnt + lac sp + jms dspnt + lac lastv + jms dspnt + -1 + dac B i + lac pbs i + sza + jmp .-2 + jmp ddisp i + +dspblk: 0 + lac dspbuf + dac 8 + lac dp + dac t1 + dzm t2 +1: + lac t1 + sna + jmp 1f + lac o216000 " dx -20 + dac 8 i + lac t2 + tad o20 + dac t2 + lac t1 + tad d1 + dac t3 + lac t3 i + jms dspnt + lac t1 i + dac t1 + jmp 1b +1: + lac o160020 " sx 20 + tad t2 + dac dspbuf i + dac 8 i + lac 8 + dac dspbp + jmp dspblk i + +dspnt: 0 + and o7777 + lrss 2 + xor o164000 " sy 0 + dac 8 i + lac o17010 + dac 8 i + jmp dspnt i + +dspinit: 0 + -1 + tad dspinit + dac dspinit + -300 + tad lastv + dac lastv + dac dspbuf + -1 + dac dspinit i + dac dspbuf i + dzm olddp + lac dspbuf + sys capt + law 13 + sys sysloc + dac pbs + jmp dspinit i + +histog: 0 + jms hisinit + lac pc + lrs 6 + and o77 + tad histbuf + dac t1 + isz t1 i + jmp histog i + jmp . + +hisinit: 0 + -1 + tad hisinit + dac hisinit + -1 + dac hisinit i + -64 + dac t1 + tad lastv + dac lastv + dac histbuf + tad dm1 + dac 8 +1: + dsm 8 i + isz t1 + jmp 1b + jmp hisinit i + +histbuf: 0 +olddp: 0 +dspbuf: 0 +dspbp: 0 +instr: 0 +obs: 0 +inslitr: n 5 +insasg: b 1 +o17: 017 +d8: 8 +o77: 077 +o10000: 010000 +d5: 5 +o60: 060 +o7777: 07777 +o216000: 0216000 +o160020: 0160020 +o20: 020 +o164000: 0164000 +o17010: 017010 +o17700: 017700 +d2: 2 + +lacop: lac . + a>;b>;c>;f>;n>;s>;t>;u>;x>;y> + +badpc: + jms flush + lac d1 + sys write; mpc; mpcs + jmp stop +badsp: + jms flush + lac d1 + sys write; msp; msps + jmp stop +badasgn: + jms flush + lac d1 + sys write; mas; mass + jmp stop +mpc: + 012;;012 +mpcs = .-mpc +msp: + 012;;012 +msps = .-msp +mas: + 012;;012 +mass = .-mas + +octal: 0 + lmq + lac d5 + tad octal i + cma + dac 2f + sna + jmp 3f +1: + llss 3 + isz 2f + jmp 1b +3: + lac octal i + dac 2f + lacq + dac 2f+1 +1: + lac 2f+1 + lmq + ecla llss 3 + tad o60 + jms putc + lac 2f+1 + alss 3 + dac 2f+1 + isz 2f + jmp 1b + isz octal + jmp octal i +2: 0;0 diff --git a/src/cmd/bi.s b/src/cmd/bi.s new file mode 100644 index 0000000..322163f --- /dev/null +++ b/src/cmd/bi.s @@ -0,0 +1,433 @@ +" bi + +start: + jms initio + -1 + tad .main + dac pc + +fetch: + lac pc i + imq + and o17777 + dac addr + ecla lls 4 + tad .+3 + dac .+1 + jmp .. i + jmp . i + autop; binop; consop; ifop; etcop; setop; traop + unaop; extop; aryop + + +ifop: + -2 + tad sp + dac sp + lac sp i + dac t1 + lac t1 i + sza + jmp fetch + -1 + tad addr i + dac pc + jmp fetch + +autop: + lac addr + tad dp + dac sp i + isz sp + isz sp + jmp fetch + +binop: + -2 + tad sp + dac sp + tad dm1 + dac t4 + tad dm1 + dac t3 + lac t3 i + dac t1 + lac sp i + dac t2 + lac t4 + dac t3 i + lac addr + tad .+3 + dac .+1 + jmp .. i + jmp . i + basg; bor; band; beq; bne; ble; blt; bge; bgt; brsh; blsh + badd; bmin; bmod; bmul; bdiv + +basg: + lac t2 i + dac t1 i + dac t4 i + jmp fetch + +bor: + lac t1 i + lmq + lac t2 i + omq + dac t4 i + jmp fetch + +band: + lac t2 i + and t2 i + dac t4 i + jmp fetch + +beq: + lac t1 i + xor t2 i + sna cla + lac d1 + dac t4 i + jmp fetch + +bne: + lac t1 i + xor t2 i + sza + lac d1 + dac t4 i + jmp fetch + +ble: + lac t2 i + cma + tad t1 i + spa cla + lac d1 + dac t4 i + jmp fetch + +blt: + lac t1 i + cma + tad t2 i + sma cla + lac d1 + dac t4 i + jmp fetch + +bge: + lac t1 i + cma + tad t2 i + spa cla + lac d1 + dac t4 i + jmp fetch + +bgt: + lac t2 i + cma + tad t1 i + sma cla + lac d1 + dac t4 i + jmp fetch + +brsh: +blsh: + hlt + +badd: + lac t1 i + tad t2 i + dac t4 i + jmp fetch + +bmin: + lac t1 i + cma + tad t2 i + cma + dac t4 i + jmp fetch + +bmod: + lac t2 i + dac .+4 + lac t1 i + cll; idiv; .. + dac t4 i + jmp fetch + +bmul: + lac t2 i + dac .+4 + lac t1 i + cll; mul; .. + lacq + dac t4 i + jmp fetch + +bdiv: + lac t2 i + dac .+4 + lac t1 i + cll; idiv; .. + lacq + dac t4 i + jmp fetch + +consop: + lac sp + tad d1 + dac sp i + isz sp + iac addr + dac sp i + isz sp + jmp fetch + +etcop: + lac addr + tad .+3 + dac .+1 + jmp .. i + jmp . i + mcall; mark; call; vector; litrl; goto; retrn; escp + +mcall: + -2 + tad sp + dac t1 + lac t1 i + dac t2 + -1 + tad t2 i + imq + lac dp + dac t1 i + lac t1 + dac dp + isz t1 + iac pc + dac t1 i + lacq + dac pc + jmp fetch + +mark: + -1 + tad sp + dac t2 + tad dm1 + dac t1 + lac t1 i + dac t3 + lac t3 i + dac t2 i + lac ap + dac t1 i + lac t1 + dac ap + jmp fetch + +call: + lac ap + tad d1 + dac 8 + dac 9 +1: + lac 8 i + dac t1 + lac t1 i + dac 9 i + isz 8 + -1 + tad sp + sad B + skp + jmp 1b + lac ap i + img + lac dp + dac ap i + lac ap + dac dp + isz ap + -1 + tad ap i + dac t1 + lac pc + dac ap i + lacq + dac ap + lac t1 + dac pc + jmp fetch + +vector: + -2 + tad sp + dac sp + tad dm2 + dac t1 + lac sp i + dac t2 + lac t1 i + dac t3 + lac t3 i + tad t2 i + dac t1 i + jmp fetch + +litrl: + lac sp + tad d1 + dac sp i + isz sp + lac pc i + dac sp i + isz sp + jmp fetch + +goto: + -2 + tad sp + dac sp + lac sp i + dac t1 + -1 + tad t1 i + dac pc + jmp fetch + +retrn: + -2 + tad sp + dac sp + lac sp i + dac t1 + lac t1 i + lmq + lac dp + dac sp + dac t1 + lac sp i + sna + jmp stop + dac dp + isz sp + lac sp + dac t1 i + lac sp i + dac pc + lacq + dac sp i + isz sp + jmp fetch + +escp: + law 2 + tad pc + dac t1 + jmp t1 i + +setop: + lac addr + tad dp + dac sp + jmp fetch + +traop: + -1 + tad addr + dac pc + jmp fetch + +unaop: + -1 + tad sp + dac t3 + tad dm1 + dac t2 + lac t2 i + dac t1 + lac t3 + dac t2 i + lac addr + tad .+3 + dac .+1 + jmp .. i + jmp . i + uadr; umin; uind; unot + +badr: + lac t1 + dac t3 i + jmp fetch + +bmin: + -1 + tad t1 i + cma + dac t3 i + jmp fetch + +bind: + lac t1 i + dac t2 i + jmp fetch + +bnot: + lac t1 i + sna cla + lac d1 + dac t3 i + jmp fetch + +extop: + lac addr + dac sp i + isz sp + isz sp + jmp fetch + +aryop: + lac addr + tad dp + dac t1 + tad d1 + dac t1 i + jmp fetch + +a = 040000 +b = a+a +c = b+a +f = c+a +n = f+a +s = n+a +t = s+a +u = t+a +x = u+a +f = x+a + +d1: 1 +dm1: -1 +dm2: -2 +o17777: 017777 + +:1: 0 +:2: 0 +:3: 0 +:4: 0 +:ddr: 0 + +pc = 017 + +sp: stack +dp: stack +ip: stack +stack: 0 \ No newline at end of file diff --git a/src/cmd/bl.s b/src/cmd/bl.s new file mode 100644 index 0000000..95111f1 --- /dev/null +++ b/src/cmd/bl.s @@ -0,0 +1,194 @@ +" bl + +jmp start + +.array: .+1 + s 2 + n 8 + n 7 + -1 + tad sp i + cma + tad lastv + dac lastv + imq + lac sp + tad d1 + dac sp i + isz sp + lacq + dac sp i + isz sp + jmp fetch + +.read: .+1 + s 2 + n 8 + n 7 + lac sp + tad d1 + dac sp i + isz sp + jms getc + dac sp i + isz sp + jmp fetch + +.write: .+1 + s 2 + n 8 + n 7 + lac sp i + dac t1 + lrss 9 + jms putc + lac t1 + jms putc + jmp fetch + +.flush: .+1 + n 8 + n 7 + jms flush + jmp fetch + +getc: 0 + lac iflg + dzm iflg + sza + jmp getc i + lac cibufp + sad eibufp + jmp 1f + lac cibufp i + and o777 + dac iflg + lac cibufp i + isz cibufp + lrss 9 + jmp getc i +1: + lac .fin + sys read; ibufp: ..; 64 + sna spa + jmp 1f + tad ibufp + dac eibufp + lac ibufp + dac cibufp + jmp getc+1 +1: + lac 0o4 + jmp getc i + +putc: 0 + and 0777 + sna + jmp putc i + imq + lac oflg + sza + jmp 1f + lacq + alss 9 + dac cobufp i + dac oflg + jmp putc i +1: + lac cobufp i + omq + dac cobufp i + dac cobufp i + dzm oflg + isz cobufp + lac cobufp + sad eobufp + skp + jmp putc i + lac .fout + sys write; obufp: ..; 64 + lac obufp + dac cobufp + jmp putc i + +stop: + jms flush + las + sma + sys save + sys exit + +flush: 0 + lac oflg + sza + isz cobufp + lac cobufp + cma + tad obufp + cma + sna + jmp flush i + dac 1f+1 + lac obufp + dac 1f + lac .fout + sys write; 1: :.; .. + lac obufp + dac cobufp + dzm oflg + jmp flush i + +initio: 0 + lac 017777 i + sad d4 + jmp 2f + sad d8 + jmp 1f + + law 9 + tad 017777 + dac .+3 + law 017 + sys creat; .. + spa + jmp stop + dac .fout +1: + law 5 + tad 017777 + dac .+2 + sys open; ..; 0 + spa + jmp stop + dac .fin +2: + lac lastv + dac eibufp + dac cibufp + -64 + tad lastv + dac lastv + dac ibufp + lac lastv + dac eobufp + -64 + tad lastv + dac lastv + dac obufp + dac cobufp + dzm oflg + jmp initio i + +.fin: 0 +.fout: 1 +eibufp: 0 +cibufp: 0 +iflg: 0 +eobufp: 0 +cobufp: 0 +oflg: 0 +lastv: 017770 + +o777: 0777 +d4:o4: 4 +d8: 8 \ No newline at end of file diff --git a/src/cmd/cas.s b/src/cmd/cas.s new file mode 100644 index 0000000..f4e61fc --- /dev/null +++ b/src/cmd/cas.s @@ -0,0 +1,1059 @@ +"** 04-cas.pdf page 1 +" cas + + narg = i 017777 + + lac 017777 + tad d5 + dac name1 + tad d4 + dac name 2 + lac narg + sad d4 + jmp 1f + sad d8 + jmp 2f + jmp 3f +1: + law ttyout + dac name1 +2: + law ttyin + dac name2 +3: + sys open; name2: 0; 0 + sma + jmp 1f + lac name2 + dac 2f + lac d1 + sys write; 2: 0; 4 + lac d1 + sys write; mes; 2 + sys exit +1: + sys open; name1: 0; 1 + sma + jmp 1f + lac name1 + dac 2f + lac o17 + sys creat; 2: 0 + sma + jmp 1f + lac name1 + dac 2f + lac d1 + sys write; 2: 0; 4 + lac d1 + sys write; mes; 2 + sys exit +mes: + 040077;012 +1: + dzm nchar + dzm x + dzm y + dzm parflg + dzm nins + dzm nwds + lac bufp + dac 10 + +advanc: +"** 04-cas.pdf page 2 + lac nchar + dzm nchar + sza + jmp adv1 + lac d2 + sys read; char; 1 + sna + jmp done + lac char + and o777 + dac nchar + lac char + lrss 9 + +adv1: + sna + jmp advanc + dac char + lac labflg + sna + jmp 2f + lac char + sad o12 + skp + jmp 1f + dzm labflg + dac i 11 + jmp advanc +1: + dac i 11 + jmp advanc +2: + lac parflg + sza + jmp atoz + lac char + sad o12 + jmp advanc + sad o72 + skp + jmp 1f + -4 + dac labflg + dac mod3 + jms wbuf "??? + lac lbufp + dac 11 + lac o170072 + dac i 10 + lac o12 + dac i 10 + lac o60 + dac i 10 + isz nwds + isz nwds + isz nwds + jmp advanc +1: + sad o170 + skp + jmp 1f +"** 04-cas.pdf page 3 + dzm vis + jmp advanc +1: + sad o166 + skp + jmp 1f + lac visbit + dac vis + jmp advanc +1: + sad 0162 + skp + jmp letr + isz mod3 + skp + jmp 2f + lac o60060 +1: + dac i 10 + isz nwds + isz mod3 + jmp 1b +2: + lac o12 + dac i 10 + isz nwds + lac lbufp + dac 11 + 1: "??? + lac i 11 + sad o12 + jmp 1f + dac i 10 + isz nwds + jmp 1b +1: + lac o75170 + dac i 10 + isz nwds + lac ob1 + dac i 10 + isz nwds + lac sp + dac i 10 + isz nwds + lac nins + dzm nins + tad o100 + lmq + llss 10 + cla + llss 3 + alss 6 + llss 3 + tad o60060 + dac i 10 + cla + llss 3 + alss 6 + llss 3 + tad o60060 +"** 04-cas.pdf page 4 + dac i 10 + cla + llss 3 + alss 6 + llss 3 + tad o60060 + dac i 10 + lac nwds + tad d4 + dac nwds + lac o12012 + dac i 10 + dzm x + dzm y + jmp advanc +letr: + tad om141 "??? + spa + jmp error + tad dm16 + sma "??? + jmp error + cma "??? + tad dm3 + dac ny + -1 + dac parflg + jmp advanc + +atoz: + lac char + tad om141 + spa + jmp error + tad dm14 + sma + jmp error + tad d14 + dac nx + +loop: + -1 + tad x + cma + tad nx + dac delx + -1 + tad y + cma + tad ny + dac dely + " generate direction + + lac delx + sna + jmp c1 + spa + jmp c2 + lac dely ;"dx ,gr, 0 + sna + jmp c3 +"** 04-cas.pdf page 5 + spa + jmp c4 + lac d1 + jmp b +c3: + lac d2 + jmp a +c4: + lac d3 + jmp b + +c1: + lac dely + sna + jmp out + spa + jmp c5 + cla + jmp a +c5: + lac d4 + jmp a +c2: + lac dely + sna + jmp c6 + spa + jmp c7 + lac d7 + jmp b +c6: + lac d6 + jmp a +c7: + lac d5 + jmp b + " + " +a: + dac direc + lac delx + sma + jmp 1f + cma + tad d1 + dac delx +1: + lac dely + sma + jmp 1f + cma + tad d1 +1: + tad dlex + tad dm4 + sma + cla + tad d3 + dac dist + tad incxp + dac tmp +"** 04-cas.pdf page 6 + lac i tmp + dac incx + lac dist + tad incyp + dac tmp + lac i tmp + dac incy + jmp com + " +b: + dzm dist + dac direc + lac incxt + dac incx + lac incyt + dac incy + " +com: + isz nins + lac dist + alss 4 + xor vis + xor direc + isz mod3 + skp + jmp 1f +2: + lmq + llss 12 + cla + llss 3 + alss 6 + llss 3 + tad o60060 + dac i 10 + isz nwds + jmp 3f +1: + dac tmp + lac o12060 + dac i 10 + isz nwds + -3 + dac mod3 + lac tmp + jmp 2b +3: + lac direc + tad incx + dac tmp + lac i tmp + tad x + dac x + lac direc + tad incy + dac tmp + lac i tmp + tad y + dac y + jmp loop +"** 04-cas.pdf page 7 +out: + lac nx + dac x + lac ny + dac y + dzm parflg + jmp advanc + +done: + lac d2 + sys close + jms wbuf + lac d3 + sys close + sys exit + +error: + lac d1 + sys write; char; 1 + lac d1 + sys write; mes; 2 + dzm parflg + dzm labflg + jmp advanc + +wbuf: 0 + lac nwds + dac 1f + lac d3 + sys write; buf; 1f: 0; "??? + dzm nwds + lac bufp + dac 10 + jmp i wbuf + +d1: 1 +d2: 2 +d3: 3 +d4: 4 +d5: 5 +d6: 6 +d7: 7 +d8: 8 +o12: 012 +o75170: 075170 +ob1: 055142 + +sp: 053060 +o60: 060 +o60060: 060060 +o73: 073 +d6: 6 "seems like a dupe +d14: 14 +dm14: -14 +dm16: -16 +om141: -0141 "??? +dm3: -3 +dm4: -4 +o162: 0162 +o166: 0166 +"** 04-cas.pdf page 8 +o17: 017 +o777: 0777 +o72: 072 +o170: 0170 +o10000: 010000 +o20000: 020000 +o200000: 0200000 +o41: 041 +ttyin: + 0164164;0171151;0156040;040040 +ttyout: + 0164164;0171157;0165164;040040 + +char: .=.+1 +parflg: .=.+1 +labflg: .=.+1 +obuf: .=.+8 +x: .=.+1 +y: .=.+1 +nx: .=.+1 +ny: .=.+1 +vis: .=.+1 +nchar: .=.+1 + " +incxp:incxt +incyp:incyt +incxt: x1;x2;x3;x4 +incyt: y1;y2;y3;y4 + " +x1: 0;1;1;1;0;-1;-1;-1 +x2: 0;2;2;2;0;-2;-2;-2 +x3: 0;3;3;3;0;-3;-3;-3 +x4: 0;4;4;4;0;-4;-4;-4 +y1: 1;1;0;-1;-1;-1;0;1 +y2: 2;2;0;-2;-2;-2;0;2 +y3: 3;3;0;-3;-3;-3;0;3 +y4: 4;4;0;-4;-4;-4;0;4 +delx: .=.+1 +dely: .=.+1 +incx: .=.+1 +incy: .=.+1 +direc: .=.+1 +dist: .=.+1 +visbit: 010 +mod3: .=.+1 +tmp: .=.+1 +buf: .=.+500 +bufp: buf-1 +lbuf: .=.+10 +lpbufp: lbuf-1 +nwds: .=.+1 +o1770072: 0170072 +nins: .=.+1 +o100: 0100 +o12012: 012012 +o12060: 012060 + + + + + +"** 04-cas.pdf page 9 +:ca +v +af +nl "??? +x +hd +v +hi +x +mn +r + +:cb +x +ga +v +gi +ik +kk +mi "??? +ma +aa +ai +ck +ek +gi +x +mn +r + +:cc +x +kk +v +mi "??? +mc +ka +ca +ac +ai +dl +x +mn +r + +:cd +v +aa +ai +ck +kk +mi +ma +x +mn +r + +:ce +x +mk +v +ma +"** 04-cas.pdf page 10 +aa +ak +x +gh +v +ga +x +mn +r + +:cf +v +aa +ak +x +gh +v +ga +x +mn +r + +:cg +x +gf +v +gk +nk +x +kk +v +mi +mc +ka +ca +ac +ai +dl +x +mn +r + +:ch +x +aa +v +na +x +gb "??? +v +gk +x +ak +v +nk +x +mn +r + +:ci +x +"** 04-cas.pdf page 11 +md +v +mi +x +lf +v +af +x +ad +v +ai +x +mn +r + +:cj +x +ka +v +mc +mg +ki +ai "??? +x +ag +v +al "??? +x +mn +r + +:ck +x +aa +v +na +x +ak +v +ia +x +mk +v +fe +x +mn +r + +:cl +x +aa +v +ma +mk +x +mn +r + +:cm +v +aa +"** 04-cas.pdf page 12 +hf +ak +nk +x +mn +r + +:cn +x +ak +v +mk +aa +na +x +mn +r + +:co +x "??? +ai +v +ch +ei +ck +ai +ac +ca +ka +mc "??? +mi +kk +ck +x +mn +r + +:cp +v +aa +ai +ck +ek +gi +ga +x +mn +r + +:cq +x +mc +v +ka +ca +ac +ai +ck +kk +mi +mc +"** 04-cas.pdf page 13 +x +jh +v +nl +x +mn +r + +:cr +v +aa +ai +ck +ek +gi +ga +x +mk +v +gf +x +mn +r + +:cs +x +ka +v +mc +mi +kk +ik +gi +gc +ea +ca +ac +ai +dl +x +mn +r + +:ct +x +aa +v +al +x +mf +v +af +x +mn +r + +:cu +x +aa +v +ka +"** 04-cas.pdf page 14 +mc +ml "??? +kk +x +ak +v +lk +x +mn +r + +:cv +x +aa +v +mf +x +ak +v +mf +x +mn +r + +:cw +x +aa +v +mc +af +x +ak +v +mi +af +x +mn +r + +:cx +v +gf +x +ak +v +gf +x +aa +v +nl +x +mn +r + +:cy +x +aa +v +if +x +ak +"** 04-cas.pdf page 15 +v +if +nf +x +mn +r + +:cz +x +aa +v +ak +ma +ml +x +mn +r + +:c0 +x +ck +v +ai +ac +ca +ka +mc +mi +kk +ck +x +mn +r + +:c1 +x +ce +v +af +mf +x +md +v +mi +x +mn +r + +:c2 +x +ca +v +ac +ai +ck +ek +gi +gc +ia +ma +ml "??? +"** 04-cas.pdf page 16 +mc +mi +kk +hk +fi +fc +ha +x +mn +r + +:c7 +x +aa +v +ak +nb +x +mn +r + +:c8 +x +gc +v +ea +ca +ac +ai +ck +ek +gi +gc +ia +ka +mc +mi +kk +ik +gi +x +mn +r + +:c9 +x +ka +v +mc +mi +kk +ck +ai +ac +ca +fa +hc +hi +fk +x +mn +"** 04-cas.pdf page 17 +x +mn +r + +:c3 +x +aa +v +ak +fe +fi +hk +kk +mi +mc +x +ka +v +nd +x +mn +r + +:c4 +x +mh +v +ah +ia +ll +x +mn +r + +:c5 +x +ak +v +aa +fa +fi +hk +kk +mi +mc +x +ka +v +nd +x +mn +r + +:c6 +x +ck +v +ai +ac +ca +ka + +" The end of file seems abrupt, every other :cX section ends with: +" x +" mn +" r diff --git a/src/cmd/check.s b/src/cmd/check.s new file mode 100644 index 0000000..fb753bd --- /dev/null +++ b/src/cmd/check.s @@ -0,0 +1,326 @@ +" check + +lac d1 +sys sysloc +dac iget + +lac d2 +sys sysloc +dac inode + +lac d4 +sys sysloc +dac nxfblk +tad d1 +dac nfblks +tad d1 +dac fblks + +lac d5 +sys sysloc +dac copy + +lac d6 +sys sysloc +dac copyz + +lac d7 +sys sysloc +dac betwen + +lac d8 +sys sysloc +dac dskrd + +lac d10 +sys sysloc +dac dskbuf +dac dskbuf1 + + dzm indircnt + dzm icnt + dzm licnt + dzm blcnt + dzm curi + jms coopyz i; usetab; 500 + +iloop: + isz curi + -3400 + tad curi + sma + jmp part2 + lac curi + jms iget i + jms copy i; inode: 0; linode; 12 + lac iflags + sma + jmp iloop + isz icnt + lac iflags + and o40 + sza + jmp iloop + law idskps + dac t1 + -7 + dac t2 +1: + lac i t1 + sza + jms dupchech + isz t1 + isz t2 + jmp 1b + lac iflags + and o200000 + sna + jmp iloop + + isz licnt + law idskps + dac t1 + -7 + dac t2 +1: + lac i t1 + sna + jmp 3f + jms dskrd i + jms copy i; dskbuf: 0; ldskbuf; 64 + isz indircnt + law ldskbuf + dac t3 + -64 + dac t4 +2: + lac i t3 + sza + jms dupcheck + isz t3 + isz t4 + jmp 2b +3: + isz t1 + isz t2 + jmp 1b + jmp iloop + +dupcheck: 0 + isz blcnt + jms betwen i d709; d6400 + jmp badadr + dac t5 + lrss 4 + tad usetabp + dac t6 + cla + llss 4 + tad alsscom + dac 2f + lac d1 +2: alss 0 + dac bit + lac i t6 + and bit + sza + jmp dup + lac i t6 + xor bit + dac i t6 + xor bit + dac i t6 + jmp i dupcheck + +badadr: + jms print + lac d1 + sys write; badmes; 3 + jmp i dupcheck +badmes: + < b>;;;; 040; 012 + +print: 0 + lmq + law prbuf-1 + dac 8 + -6 + dac t6 +1: + cla + llss 3 + tad o60 + dac i 8 + isz t6 + jmp 1b + lac d1 + sys write; prbuf; 6 + jmp i print + +part2: + lac icnt + jmp print + lac d1 + sys write; m3; m3s + lac licnt + jms print + lac d1 + sys write; m4; m4s + lac indircnt + jms print + dac d1 + sys write; m5; m5s + lac blcnt + jms print + lac d1 + sys write; m6; m6s + dzm blcnt + + -1 + tad nfblks i + cma + sma + jmp 2f + dac t1 + lac fblks + dac t2 +1: + lac i t2 + jms dupcheck + isz t2 + isz t1 + jmp 1b + +2: + lac nxfblk i +1: + sna + jmp part3 + dac t1 + jms dupcheck + lac t1 + jms dskrd i + jms copy i; dskbuf1: 0; ldskbuf; 64 + law ldskbuf + dac t1 + -9 + dac t2 +2: + isz t1 + lac i t1 + jms dupcheck + isz t2 + jmp 2b + lac ldskbuf + jmp 1b + +part3: + lac blcnt + jms print + lac d1 + sys write; m7; m7s + lac d709 + dac t1 +1: + isz t1 + lac t1 + sad d6400 + sys exit + lrss 4 + tad usetabp + dac t2 + cla + llss 4 + tad alsscom + dac 2f + lac d1 +2: alss 0 + dac bit + lac i t2 + and bit + sza + jmp 1b + lac t1 + jms print + lac d1 + sys write; m8; m8s + jmp 1b + +d1: 1 +d2: 2 +d4: 4 +d5: 5 +d6: 6 +d7: 7 +d8: 8 +d10: 10 +o60: 060 +o400000: 0400000 +o400001: 0400001 +o40: 040 +o200000: 0200000 +alsscom: alss 0 +d709: 709 +d6400: 6400 + +m3: + 040;;;;;;;;;012 +m6s = .-m6 +m7: + 040;;;012 +m7s = .-m7 +m8: + 040;;;;;040040;040040;040040 +d1: 1 +d4: 4 +d5: 5 +dm4: -4 \ No newline at end of file diff --git a/src/cmd/cp.s b/src/cmd/cp.s new file mode 100644 index 0000000..a77f91b --- /dev/null +++ b/src/cmd/cp.s @@ -0,0 +1,97 @@ +" cp + + lac 017777 + tad d1 + dac name2 +loop: + lac 017777 i + sad d4 + sys exit + sad d8 + jmp unbal + tad dm8 + dac 017777 i + lac name2 + tad d4 + dac name1 + tad d4 + dac name2 + sys open; name1: 0; 0 + spa + jmp error + lac o17 + sys creat; name2: 0 + spa + jmp error + dzm nin + +1: + lac bufp + tad nin + dac 0f + -1 + tad nin + cma + tad d1024 + dac 0f+1 + lac d2 + sys read; 0:..;.. + sna + jmp 2f + tad nin + dac nin + sad d1024 + jmp 2f + jmp 1b +2: + lac nin + dac 2f + lac d3 + sys write; buf; 2: 0 + dzm nin + lac 2b + sad d1024 + jmp 1b + lac d2 + sys close + lac d3 + sys close + jmp loop +error: + lac name1 + dac 1f + lac d1 + sys write; 1: 0; 4 + lac d1 + sys write; mes; 1 + lac name2 + dac 1f + lac d1 + sys write; 1: 0; 4 + lac d1 + sys write; mes; 2 + jmp loop +mes: + 040000;077012 +unbal: + lac name2 + tad d4 + dac 1f + lac d1 + sys write; 1: 0; 4 + lac d1 + sys write; mes; 2 + sys exit + +d1: 1 +d4: 4 +d8: 8 +o17: 017 +dm8: -8 +d3: 3 +d1024: 1024 +nin: 0 +bufp: buf +d2: 2 + +buf: \ No newline at end of file diff --git a/src/cmd/db.s b/src/cmd/db.s new file mode 100644 index 0000000..4ee59c4 --- /dev/null +++ b/src/cmd/db.s @@ -0,0 +1,1217 @@ +" db + + narg = ..+07777 + lac i narg + sad d4 + jmp start + lac narg + tad d5 + dac rcorep + dac wcorep + lac i narg + sad d8 + jmp start + sad d12 + skp + jmp error + lac narg + tad d9 + dac nlnamep + " +start: + lac nlbufp + cma + tad o17777 + cll + idiv + 6 + cll + lacq + mul + 6 + lacq + dac namesize + sys open; nlnamep: nlname; 0 + dac symindex + sma + jmp 1f +2: + dzm nlcnt + lac nlbufp + dac nlsize + jmp 3f +1: + sys read; nlbuff; namesize;0 + spa + jmp 2b + dac nlcnt + tad nlbufp + dac nlsize +3: + lac symindex + sys close + sys open +wcorep: corename; 1 + dac wcore + sys open; rcorep: corename; 0 + dac rcore + spa + jmp error + " + lac o52012 + jms wchar + law dotdot + dac nsearch + jms nlsearch + jmp mloop + lac value + dac relocval + cma + tad d1 + dac mrelocv + dzm sysflag +mloop: + -1 + dac nwords +ml1: + jms rch + dac nchar1 + sad o52 + skp + jmp 1f + dzm nchar1 + dac indflg +1: + jms getexp + lac errf + sna + jmp cmd +error: + dzm indflg + lac o40 + dac rator + dzm errf + lac d1 + sys write; errmes; 1 + jmp mloop +cmd: + lacq + sad o41 + jmp patch + lac opfound + sna + jmp 1f + lac comflg + dzm comflg + sza + jmp 1f + lac curval + dac curdot + lac curreloc + dac dotrel +1: + lacq + sad o42 + jmp ascii + sad o12 + jmp newln + sad o77 + jmp symbol + sad o47 + jmp saddress + sad o75 + jmp address + sad o57 + jmp octal + sad o72 + jmp decimal + sad o136 + skp + jmp 1f + dac sysflag + jmp mloop +1: + sad o45 + skp + jmp 1f + dzm sysflag + jmp mloop +1: + sad d1 + sys exit + sad o54 + skp + jmp error + " comma + jms getexp + lac errf + sza + jmp error + law + dac comflg + lac curreloc + sza + jmp 1f + lac value + cma + dac nwords + jmp cmd +1: + lac reldot + sna + jmp error + lac curval + cma + tad curdot + sma + jmp error + dac nwords + jmp cmd + " +saddress: + lac curdot + dac 9f + dzm curdot + lac reldot + sza + lac relocval + tad 9f + jms prsym + lac o12 + jms wchar + lac 9f + dac curdot + jmp mloop +9:0 + " +symbol: + law prsym + dac type + jmp print + " +octal: + law proct + dac type + jmp print + " +ascii: + law prasc + dac type + jmp print + " +decimal: + law prdec + dac type + jmp print + " +address: + lac curdot + jms octw + 5 + lac curreloc + sza + jmp 1f + lac o12 + jms wchar + jmp mloop +1: + lac o162012 + jms wchar + jmp mloop + " +print: + lac sysflag + sza + jmp 2f + lac reldot + sza + jmp 1f + lac curdot + dac addr + jmp sprint +2: + lac curdot + dac addr + jmp sprint +1: + law inbuf + dac addr + lac curdot + dac 1f + lac rcore + sys seek; 1:0; 0 + spa + jmp error + lac rcore + sys read; inbuf; 64 + spa + jmp error + sna + jmp error + " +sprint: + lac indflg + sna + jmp 2f + dzm indflg + lac i addr + and o17777 + dac curdot + dzm reldot + tad mrelocv + spa + jmp print + dac curdot + lac d1 + dac reldot + jmp print + " +2: + lac o40 + jms wchar + lac addr + dac 3f + lac i addr + jms i type + lac 3f + dac addr + isz addr + law prasc + sad type + jmp 2f + lac nl + jms wchar +1: + isz nwords + jmp 1f + law prasc + sad type + skp + jmp mloop + lac nl + jms wchar + jmp mloop +1: + isz curdot + nop + lac nwords + spa + jmp print + jmp 2b +3:0 + " +prdec: "temp +proct:0 + jms octw + 6 + jmp i proct + " +patch: + lac opfound + sna + jmp error + lac curreloc + sna + jmp 1f + lac curval + tad relocval + skp +1: + lac curval + dac inbuf + lac sysflag + sna + jmp 1f + lac inbuf + dac i curdot + jmp bump +1: + lac reldot + sna + jmp error + lac curdot + dac 2f + lac wcore + spa + jmp error + sys seek; 2:0; 0 + spa + jmp error + lac wcore + sys write; inbuf; 1 + spa + jmp error +bump: + -1 + dac nwords + isz curdot + jmp print + " +newln: + lac opfound + sna + jmp bump + jmp print + " +getexp:0 + dzm errf + lac o40 + dac rator + dzm curval + dzm curreloc + dzm reloc + dzm value + dzm opfound +xloop: + jms rch + lmq + sad o044 + skp + jmp 1f + jms getspec + jms oprand + jmp xloop +1: + tad om60 + spa + jmp 1f + tad om10 + sma + jmp 1f + lacq + jms getnum + jms oprand + jmp xloop +1: + lacq + sad o56 + jmp 1f + tad om141 + spa + jmp 2f + tad om32 + sma + jmp 2f +1: + lacq + jms getsym + jms oprand + jmp xloop +2: + lacq + tad om101 + spa + jmp 1f + tad om32 + spa + jmp 1b +1: + lacq + sad o74 + skp + jmp 1f + jms rch + alss 9 + dac value + dzm reloc + jms oprand + jmp xloop +1: + sad o40 + jmp xloop + sad o55 "- + skp + jmp 1f +2: + lac o40 + sad rator + skp + jmp error + lacq + dac rator + jmp xloop +1: + sad o53 "+ + jmp 2b + lac curreloc + sna + jmp 1f + sad d1 + skp + dac errf +1: + lac o40 + sad rator + jmp i getexp + dac errf + jmp i getexp + " +getspec: 0 + jms rch + sad o141 + jmp spcac + sad o161 "q + jmp spcmq + sad o151 "i + jmp spcic + lmq + tad om60 + spa + jmp 2f + tad om10 + sma + jmp 2f + lacq + jms getnum + jmp spcai +2: + law + dac errf + jmp getspec i +spcac: + cla + jmp 1f +spcmq: + lac d1 + jmp 1f +spcic: + lac d10 + jmp 1f +spcai: + lac value + tad dm6 + +1: + tad o10000 + dac value + lac d1 + dac reloc + jmp i getspec + " +getsym:0 + lmq + law symbuf + dac symbufp + dzm symbuf + -8 + dac symcnt + dzm nchar1 + lac nopcom + dac skipt + skp +storech: + imq + lac i symbufp + and o177000 + sna + jmp 1f + omq + dac i symbufp + isz symbufp + dzm i symbufp + jmp 2f +1: + llss 27 + dac i symbufp + " +2: + isz symcnt + skp + jmp endsym +skipt: + nop " or jmp fill + jms rch + sad o76 + skp + jmp 1f + lac symbuf + lrss 9 + and o177 + dac value + dzm reloc + jmp i getsym +1: + sad o56 + jmp storech + dac nchar1 + tad om60 + spa + jmp fill + tad m10 + spa + jmp 2f + lac nchar1 + tad om141 + spa + jmp 1f + tad om32 + spa + jmp 2f +1: + lac nchar1 + tad om101 + spa + jmp fill + tad om32 + sma + jmp fill +2: + lac nchar1 + dzm nchar1 + jmp storech + " +fill: + lac trafill + dac skipt + lac o40 + jmp storech + " +endsym: + lac symbuf + sad o56040 + jmp dotsym + law symbuf + dac nsearch + jms nlsearch + jmp undef + dzm nsearch + jmp i getsym + " +dotsym: + lac curdot + dac value + lac dotrel + dac reloc + jmp i getsym + " +undef: + dzm nsearch + law + dac errf + jmp i getsym + " +getnum:0 + dzm reloc + dzm value +num1: + tad om60 + imq + lac value + alss 3 + omq + dac value + jms rch + dac nchar1 + sad o162 + jmp nrel + tad om60 + spa + jmp i getnum + tad om10 + sma + jmp i getnum + lac nchar1 + dzm nchar1 + jmp num1 +nrel: + dzm nchar1 + lac d1 + dac reloc + jmp i getnum + " +oprand:0 + lac rator + sad o53 + jmp opplus + sad o40 + jmp opor + sad o55 + jmp opminus +opplus: + lac value + tad curval + dac curval +1: + lac curreloc + tad reloc + dac curreloc + jmp retop + " +opor: + lac value + lmq + lac curval + omq + dac curval + jmp 1b + " +opminus: + lac curval + cma + tad value + cma + dac curval + lac reloc + cma + tad d1 + tad curreloc + dac curreloc +retop: + lac o40 + dac rator + dac opfound + jmp i oprand + " +prasc:0 + jms wchar + jmp i prasc + " +prsym:0 + dac word + dzm relflg + dzm relocflg + dzm nsearch + and o760000 + sad o760000 + jmp plaw + sad o20000 + jmp pcal + and o740000 + sad o640000 + jmp peae + sad o740000 + jmp popr + sad o700000 + jmp piot + sna + jmp poct + jms nlsearch + jmp poct + jms wrname + lac o40 + jms wchar + lac word + and o20000 + sna + jmp 1f + lac o151040 + jms wchar + lac word + xor o20000 + dac word +1: +symadr: + lac d1 + dac relflg + dac relocflg + lac word + and o17777 + tad mrelocv + sma + jmp 1f + tad relocval + dzm relocflg +1: +pradr: + dac addr + jms nlsearch + jmp octals +pr1: + dzm relflg + jms wrname + lac value + sad addr + jmp i prsym + cma + tad d1 + tad addr + sma + jmp 1f + cma + tad d1 + dac addr + lac o55 + jms wchar + jmp 2f +1: + dac addr + lac o53 + jms wchar +2: + lac addr + jms octw + 1 + jmp i prsym + " +plaw: + lac d1 + dac relocflg + lac word + and o17777 + tad mrelocv + sma + jmp 1f + tad relocval + dzm relocflg +1: + dac addr + law + dac relflg + lac addr + lms nlsearch + jmp poct + dac symindex + law laws + jms wrname + lac o40 + jms wchar +3: + lac symindex + jmp pr1 +2:0 +9:0 + " +peae: + lac word + jms nlsearch + jmp 1f + jms wrname + jmp i prsym +1: + lac word + and o777700 + jms nlsearch + jmp 1f + jms wrname + lac o40 + jms wchar + lac word + and o77 + jms octw + 1 + jmp i prsym +1: + law eaes + dac addr + jmp nfnd + " +popr: + law oprs + jmp 1f +piot: + law iots +1: + dac addr + lac word + jms nlsearch + jmp 1f + jms wrname + jmp i prsym +1: +nfnd: + lac addr + jms wrname +octala: + dzm relflg + lac o40 + jms wchar + lac word + and o37777 + lmq + lac relocflg + sna + jmp 1f + lacq + tad mrelocv + imq +1: + lacq + jms octw + 1 + lac relocflg + sna + jmp i prsym + lac o162 + jms wchar + dzm relocflg + jmp i prsym + " +poct: + lac word + jms octw + 6 + jmp i prsym + " +pcal: + lac word + sna + jmp poct + and o17777 + jms nlsearch + jmp 1f + dac addr + law syss + jms wrname + lac o40 + jms wchar + lac addr + jms wrname + jmp i prsym + " +1: + lac word + and o20000 + sza + jmp poct + jmp symadr + " +wrname:0 + tad dm1 + dac 10 + -4 + dac 3f +1: + lac i 10 + dac 2f + imq + cla + llss 9 + sad o40 + jmp i wrname + jms wchar + lac 2f + and o177 + sad o40 + jmp i wrname + jms wchar + isz 3f + jmp 1b + jmp i wrname +2:0 +3:0 + " +nlsearch:0 + dac match + lac brack + dac best + dzm minp +1: + lac nlbufp + tad dm6 + dac cnlp +nloop: + lac cnlp + tad d6 + dac cnlp + lmq + cma + tad nlsize + spa + jmp nlend + lac nsearch + sza + jmp testn + lacq + tad d3 + dac np + lac i np + sna + jmp nloop + isz np + lac i np + dac treloc + sad relocflg + skp + jmp nloop + isz np + iac i np + dac tvalue + sad match + jmp nlok + lac relocflg + sna + jmp nloop + lac relflg + sna + jmp nloop + -1 + tad tvalue + cma + tad match + spa + jmp nloop + dac 2f + tad mbrack + sma + jmp nloop + lac best + cma + tad d1 + tad 2f + sma + jmp nloop + lac 2f + dac best + lac tvalue + dac value + lac treloc + dac reloc + lac cnlp + dac minp + jmp nloop + " +2:0 + " +testn: + lacq + dac minp + -4 + dac value + lac match + dac inbuf +1: + lac i minp + sad i inbuf + skp + jmp nloop + isz minp + isz inbuf + isz value + jmp 1b + lac i minp + dac treloc + isz minp + lac i minp + dac tvalue + jmp nlok + " +nlend: + lac relflg + sna + jmp i nlsearch + lac dotrel + sad relocflg + skp + jmp 1f + -1 + tad curdot + cma + tad match + spa + jmp 2f + cma + tad d1 +2: + tad brack + spa + jmp 1f + tad mbrack + tad best + spa + jmp 1f + lac curdot + dac value + lac dotrel + dac reloc + law o56040 + dac minp +1: + lac minp + sza + isz nlsearch + jmp i nlsearch +nlok: + lac tvalue + dac value + lac treloc + dac reloc + lac cnip + isz nlsearch + jmp i nlsearch + " +nlerr: + law + dac errf + jmp i nlsearch + " +rch:0 + lac nchar1 + dzm nchar1 + sza + jmp i rch +1: + lac nchar + dzm nchar + sza + jmp i rch + cla + sys read; char; 1 + lac char + and o177 + dac nchar + lac char + lrss 9 + sna + jmp 1b + jmp i rch + " +wchar:0 + dac char + lac d1 + sys write; char; 1 + jmp i wchar + " +octw: 0 + isz octw + imq + cla cll + llss 3 + alss 6 + llss3 + tad o60060 + dac obuf + cla + llss 3 + alss 6 + llss 3 + tad o60060 + dac obuf+1 + cla + llss 3 + alss 6 + llss 3 + tad o60060 + dac obuf+2 + lac d1 + sys write; obuf; 3 + jmp i octw +m10: -10 + " + " +o54:054 +d6:6 +o52012:052012 +d5:5 +d9:9 +d12:12 +d8:8 +d3:3 +o177:0177 +o136: 0136 +o45: 045 +sysflag: 0 +char:0 +d2:2 +o162012:0162012 +mrelocv:-010000 +relocval:010000 +nwords:0 +errf:0 +rator:0 +d1:1 +errmes:077012 +o12:012 +curval:0 +curreloc:0 +curdot:0 +reldot: +dotrel:0 +value:0 +reloc:0 +o77:077 +o57:057 +o72:072 +o50:050 +type:proct +o162:0162 +nl:012 +om100:-0100 +d2:2 +symbuf: .=.+5 +inbuf:.=.+64 +o100:0100 +opfound:0 +wcore:0 +symindex:0 +rcore:0 +o56:056 +om60:-060 +om10:-010 +o56:056 +om141:-0141 +o141: 0141 +oO44: 044 +o151: 0151 +o161: 0161 +om101: -0101 +om32:-032 +o40:040 +o55:055 +o53:053 +symbufp:0 +symcnt:0 +nopcom:nop +dm6: -6 +d10: 10 +trafill: jmp fill +nchar1:0 +nchar:0 +o177000:0177000 +o56040:056040 +nsearch:0 +word:0 +relflg:0 +relocflg:0 +o740000:0740000 +o640000:0640000 +o700000:0700000 +o17777:017777 +o20000:020000 +o10000: 010000 +o151040:0151040 +eaes:0145141;0145040 +laws: 0154141;0167040 +oprs:0157160;0162040 +iots:0151157;0164040 +syss:0163171;0163040 +corename:0143157;0162145;040040;040040 +nlname:0156056;0157165;0164040;040040 +dotdot: <..>; 040040; 040040; 040040 +addr:0 +o37777:037777 +dm1:-1 +match:0 +rwdflg:0 +nlbufp:nlbuff +nlsize:0 +dm6:-6 +cnlp:0 +o377777:0377777 +minp:0 +d4:4 +np:0 +nlcnt:0 +obuf:.=.+3 +o60060:060060 +o75:075 +best: 0 +o60000:060000 +comflg:0 +nlbufp:nlbuff +brack: 30 +mbrack: -30 +o777700:0777700 +o41:041 +o42:042 +o760000:0760000 +o40000:040000 +tvalue: 0 +treloc: 0 +o151:0151 +o47: 047 +o52:052 +indflg: 0 +o74:074 +o76:076 +nlbufp: nlbuff + nlbuff = . \ No newline at end of file diff --git a/src/cmd/dmabs.s b/src/cmd/dmabs.s new file mode 100644 index 0000000..fce7825 --- /dev/null +++ b/src/cmd/dmabs.s @@ -0,0 +1,256 @@ + " dmabs + + lac o17 + sys creat; punout + spa + sys save + dac fo + lac 017777 + tad d1 + dac name + jms space + 100 + +loop: + dzm oldsum + lac initcmd + dac comand + lac i 017777 + sad d4 + jmp stop + tad dm4 + dac i 017777 + lac name + tad d4 + dac name + +dump1: + lac comand + xor dactra + dac tracmd + +dump2: + sys open; name: 0; 0 + spa + jmp opnerr + dac fi + -bootsiz + dac c1 + law boot-1 + dac 8 +1: + lac i 8 + jms put + isz c1 + jmp 1b + lac bootcmd + lrs 12 + jms put1 + lac bootcmd + lrs 6 + jms put1 + lac bootcmd + and o77 + xor o300 + jms put2 + + jms space + 3 + +dump3: + -1 + tad bufp + dac 8 + -64 + dac c1 +1: + dzm i 8 + isz c1 + jmp 1b + lac fi + sys read; bufp: buf; 64 + sna + jmp done + dac count + -1 + tad bufp + dac 8 + -64 + dac c1 + cla +1: + add i 8 + isz c1 + jmp 1b + sna + jmp dump4 + dac newsum + lac comand + jms put + lac count + jms put + lac oldsum + add comand + add count + jms put + lac newsum + dac oldsum + jms space + 3 + -1 + tad bufp + dac 8 + -1 + tad count + cma + dac c1 +1: + lac i 8 + jms put + isz c1 + jmp 1b + jms space + 10 + +dump4: + lac comand + tad count + dac comand + jmp dump3 + +done: + lac tracmd + jms put + cla + jms put + lac oldsum + add tracmd + jms put + jms space + 20 + lac fi + sys close + jmp loop + +stop: + cla + jms put + jms space + 100 + sys exit + +space: 0 + -1 + tad i space + cma + dac c1 + isz space +1: + lac o400 + jms put2 + isz c1 + jmp 1b + jmp i space + +put: 0 + dac 1f + lrs 12 + jms put1 + lac 1f + lrs 6 + jms put1 + lac 1f + jms put1 + jmp i put +1:0 + +put1:0 + and o77 + xor o200 + jms put2 + jmp i put1 + +put2: 0 + dac 1f + lac fo + sys write; 1f; 1 + jmp i put2 +1: 0 + +boot: + org = 017740 +2: + jms get1-boot+org + dac cmd-boot+org + jms get1-boot+org + cma + dac cnt-boot+org + jms get2-boot+org + xor sum-boot+org + dzm sum-boot+org + cla cll sza + hlt + isz cnt-boot+org +1: + jms get1-boot+org +cmd: 0 + isz cmd-boot+org + isz cnt-boot+org + jmp 1b-boot+org + jmp 2b-boot+org +get1: 0 + jms get2-boot+org + dac get2-boot+org + add sum-boot+org + dac sum-boot+org + lac get2-boot+org + jmp i get1-boot+org +get2: 0 + iot 0144 +1: + iot 0101 + jmp 1b-boot+org + iot 0112 + jmp i get2-boot+org +sum: 0 + cnt = sum+1 + bootsiz = .-boot +bootcmd: jmp org + +opnerr: + lac name + dac 1f + lac d1 + sys write; 1: 0; 4 + lac d1 + sys write; mes; 2 + jmp loop +mes: + 040;077012 + +comand: 0 +tracmd: 0 + d1: 1 +.17777: 017777 +o77: 077 +o200: 0200 +o300: 0300 +d4: 4 +d64: 64 +dm4: -4 +o400: 0400 +punout: ;;;040040 +o17: 017 + +fi: 0 +fo: 0 +count: 0 +oldsum: 0 +newsum: 0 +daccmd: dac +dactra: dac jmp +initcmd: dac 0 +c1: 0 +buf: + +iot = 0700000 \ No newline at end of file diff --git a/src/cmd/ds.s b/src/cmd/ds.s new file mode 100644 index 0000000..2aa0f93 --- /dev/null +++ b/src/cmd/ds.s @@ -0,0 +1,501 @@ +" ds + + lac 017777 i + sad d8 + skp + sys exit + lac 017777 + tad d5 + dac .+3 + law 017 + sys creat; .. + dac fo + law 017 + sys creat; scrname + spa; jms error + dac fso + sys open; scrname; 0 + spa; jms error + dac fsi + sys chdir; dd + spa; jms error + lac d1 + sys write; pass1; 1 + law fsobuf + dac fsopt + dzm nfiles + law fbuf + dac filp + dzm ndirs + law dbuf + dac dirp + dzm fsloc + sys open; dotdot; 0 + spa; jms error + dac fd + jms readdir; dotdot + law statbuf + sys status; dotdot; dotdot + spa; jms error + lac statbuf+12 " i index + dac dirp i + isz dirp + -1 + tad nfiles + cma + dac ddfiles + law fbuf + dac ddfilp + +loop: + -1 + tad ndirs + cma + dac c1 + law dbuf + dac i1 + +1: + isz i1 + lac i1 i + sad ddfilp i + jmp 2f + isz i1 + isz c1 + jmp 1b + + lac ddfilp + tad i1 + dac i1 + lac i1 i + dac .+3 + lac fsi + sys seek; ..; 0 + lac fsi + sys read; scrname; 4 + law statbuf + sys status; dotdot; scrname + spa; jms error + lac statbuf+0 " flags + and o20 + sna + jmp 2f + sys open; scrname; 0 + spa; jms error + dac fd + jms readdir; scrname + lac ddfilp i + dac dirp i + isz dirp + +2: + isz ddfilp + isz ddfilp + isz ddfiles + jmp loop + +" output phase + + lac fso + sys write; fsobuf; 64 + lac d1 + sys write; pass2; 2 + -500 + dac c1 + +1: + law dbuf+2 + dac i1 + dzm fflg + law fbuf + dac i2 + r1 + tad nfiles + cma + dac c2 + +2: + lac c1 + tad d501 + sad i2 i + skp + jmp 3f + -1 + tad i1 + dac i3 + iac i3 i + dac c3 + law fbuf + dac i3 +0: + lac i3 i + sad c3 + jmp 0f + isz i3 + isz i3 + jmp 0b +0: + lac i3 + tad d1 + dac c3 + lac c3 i + dac .+3 + lac fsi + sys seek; ..; 0 + lac fsi + sys read; scrname; 4 + lac i2 + tad d1 + dac c3 + lac c3 i + dac .+3 + lac fsi + sys seek; ..; 0 + lac fsi + sys read; dd; 4 + lac fflg + sza + jmp 0f + + lac nlinkt + sad nlinka + skp + jms fishy + dzm nlinka + law 012 + jms putc + law statbuf + sys status; scrname; dd + spa; jms error + -1 + tad statbuf+9 + cma + dac nlinkt + -1 + dac fflg + jms longout + law 012 + jms putc +0: + isz nlinka + jms putname; scrname + jms putname; dd + law 012 + jms putc + +3: + isz i2 + isz i2 + lac i2 + sad i1 i + skp + jmp .+3 + isz i1 + isz i1 + isz c2 + jmp 2b + + isz c1 + jmp 1b + lac nlinkt + sad nlinka + skp + jms fishy + + sys chdir; system + jmp done + +fishy: 0 + jms asters + jms asters + law 012 + jms putc + lac d1 + sys write; 1f; 1 + jmp fishy i +1: 052012 + +nlinka: 0 +nlinkt: 0 + +asters: 0 + -10 + dac c +1: + law 052 + jms putc + isz c + jmp 1b + jmp asters i + +longout: 0 + lac statbuf+12 " i + jms octal; -3 + lac statbuf+0 " flags + jms octal; -2 + lac statbuf+8 " uid + jms octal; -2 + -1 + tad statbuf+9 " nlinks + cma + jms octal; -2 + lac statbuf+10 + jms octal; -5 + jmp longout i + +readdir: 0 + law 012 + jms putc + law 012 + jms putc + jms asters + lac readdir i + dac 5f + dac .+2 + jms putname; .. + jms asters + law 012 + jms putc + law 012 + jms putc + isz readdir + isz ndirs + lac filp + dac dirp i + isz dirp +0: + jms copyz; buf; 64 + lac fd + sys read; buf; 64 + spa; jms error + sna + jmp 4f + -8 + dac c1 + law buf + dac i1 +1: + lac i1 i + sna + jmp 3f + + isz nfiles + dac filp i + isz filp + lac fsloc + dac filp i + tad d4 + dac fsloc + isz filp + lac i1 + tad d1 + dac .+4 + law statbuf + sys status; 5:..; .. + spa; jms error + jms longout + lac i1 + tad d1 + dac .+2 + jms putname; .. + law 012 + jms putc + lac i1 + dac 8 + lac 8 i + dac fsopt i + isz fsopt + lac 8 i + dac fsopt i + isz fsopt + lac 8 i + dac fsopt i + isz fsopt + lac 8 i + dac fsopt i + isz fsopt + law fsobuf+64 + sad fsopt + skp + jmp 3f + lac fso + sys write; fsobuf; 64 + law fsobuf + dac fsopt + +3: + law 8 + tad i1 + dac i1 + isz c1 + jmp 1b + jmp 0b +4: + lac fd + sys close + jmp readdir i + +putname: 0 + -1 + tad putname i + dac 8 + -4 + dac c +1: + lac 8 i + lrss 9 + jms putc + llss 9 + jms putc + isz c + jmp 1b + isz putname + jmp putname i + +octal: 0 + lmq + lac d5 + tad octal i + cma + dac c +1: + llss 3 + isz c + jmp 1b + lac octal i + dac c +1: + ecla llss 3 + tad o60 + jms putc + isz c + jmp 1b + law 040 + jms putc + isz octal + jmp octal i + +error: 0 + -1 + tad error + hlt + sys save + +copyz: 0 + -1 + tad copyz i + dac 8 + isz copyz + -1 + tad copyz i + cma + dac 2f + isz copyz +1: + dzm 8 i + isz 2f + jmp 1b + jmp copyz i +2: 0 + +done: + lac noc + sna + sys exit + and d1 + sna cla + jmp 1f + jms putc + jmp done +1: + lac noc + rcr + dac 1f + lac fo + sys write; obuf; 1;.. + sys exit + +putc: 0 + and o177 + dac 2f+1 + lac opt + dac 2f + add o400000 + dac opt + spa + jmp 1f + lac 2f i + xor 2f+1 + jmp 3f +1: + lac 2f+1 + alss 9 +3: + dac 2f i + isz noc + lac noc + sad d128 + skp + jmp putc i + lac fo + sys write; obuf; 64 + lac iopt + dac opt + dzm noc + jmp putc i +2: 0;0 +opt: obuf +iopt: obuf +noc: 0 +fo: 1 + +d1: 1 +o177: 0177 +o400000: 0400000 +d128: 128 +d4: 4 +d5: 5 +d8: 8 +o60: 060 +o20: 020 +d501: 501 + +dd: +
; 040040; 040040; 040040 +dotdot: + 056056; 040040; 040040; 040040 +system: + ;;; 040040 +scrname: + <*s>;;040040;040040 +pass2: + [scan markup] + jmp advanc +1: + ; ; 012 +advanc: + jms rline + lac linep + dac tal + dzm adrflg + jms addres + jmp comand + -1 + dac adrflg + lac addr + dac addr1 + dac addr2 +1: + lac char + sad o54 + jmp 2f + sad o73 + skp + jmp chkwrp + lac addr + dac dot +2: + jms addres + jmp error + lac addr2 + dac addr1 + lac addr + dac addr2 + jmp 1b +"** 08-rest.pdf page 9 +"[handwritten page number top right of scan - 2] +chkwrp: + -1 + tad addr1 + jms betwen; d1; addr2 + jmp error + +comand: + lac char + sad o141 + jmp ca + sad o143 + jmp cc + sad o144 + jmp cd + sad o160 + jmp cp + sad o161 + jmp cq + sad o162 + jmp cr + sad o163 + jmp cs + sad o167 + jmp cw + sad o12 + jmp cnl + sad o75 + jmp ceq + jmp error +ca: + jms newline + jms setfl + lac addr2 + dac dot +ca1: + jms rline + lac line + sad o56012 + jmp advanc + jms append + jmp ca1 + +cc: cd: + jms newline + jms setdd + lac addr1 + sad zerop + jmp error + dac dot + tad dm1 + dac 9 + lac addr2 + dac 8 +2: + lac i 8 + dac i 9 + sza + jmp 2b +"??? illegible line cut off - dac 0, lac 0, something else??? +"** 08-rest.pdf page 10 +"[handwritten page number top right of scan - 3] + dac eofp + lac char + sad o144 + jmp advanc + -1 + tad dot + dac dot + jmp ca1 + +cp: + jms newline +cp1: + jms setdd + lac addr1 + sad zerop + jmp error +1: + lac addr1 + dac dot + lac i addr1 + jms gline + dac 2f + lac d1 + sys write; line; 2: 0 + lac addr1 + sad addr1 + jmp advanc + tad d1 + dac addr1 + jmp 1b + +cq: + jms newline + lac adrflg + sza + jmp error + sys exit + +cr: + jms setfl + lac addr2 + dac dot + jms rname + "------------> [scan markup] + sys open; fbuf; 0 + spa + jmp error + dac tfi + lac linep + dac tal + dzm num +1: + lac tfi + sys read; tbuf; 64 + sza + jmp 2f + lac tfi + sys close + jms number + jmp advanc +2: +"??? illegible line cut off - cma, sma, something else? +"** 08-rest.pdf page 11 +"[handwritten page number top right of scan - 4] + tad d1 + rcl + dac c1 + lac tbufp + dac tal1 +2: + jms getsc; tal1 + sna + jmp 3f + jms putsc; tal + isz num + sad o12 + skp + jmp 3f + lac tal + add o400000 + and o17777 + cma + tad linep + cma + dac linsiz + jms append + lac linep + dac tal +3: + isz c1 + jmp 2b + jmp 1b +cw: + jms setfl + lac i addr1 + sna + jmp error + jms rname + lac o17 + sys creat; fbuf + spa + jmp error + dac tfi + -128 + dac c2 + lac tbufp + dac tal1 + dzm num +1: + lac i addr1 + jms gline + rcl + cma + tad d1 + dac c1 + lac linep + dac tal +2: + jms getsc; tal + sna + jmp 3f + isz num + jmp putsc; tal1 + isz c2 "??? +"** 08-rest.pdf page 12 +"[handwritten page number top right of scan - 5] + jmp 3f + lac tfi + sys write; tbuf; 64 + -128 + dac c2 + lac tbufp + dac tal1 +3: + isz c1 + jmp 2b + lac addr1 + sad addr2 + jmp 1f + isz addr1 + jmp 1b +1: + lac tal1 + sma cla + jmp 1f + jms putsc; tal1 +1: + -1 + tad tufp + cma + tad tal1 + dac 1f + lac tfi + sys write; tbuf; 1: 0 + lac tfi + sys close + jms number + jmp advanc + +cn1: + lac adrflg + sna + jmp 1f + lac addr2 + dac addr1 + jmp cp1 +1: + lac dot + tad d1 + sad eofp + jmp error + dac dot + jmp cp1 + +ceq: + jms newline + jms setfl + lac addr2 + dac dot + cma + tad zerop + cma + dac num + jms number + jmp advanc + +setdd: 0 +"** 08-rest.pdf page 13 +"[handwritten page number top right of scan - 6] + lac adrflg + sza + jmp i setdd + lac dot + dac addr1 + dac addr2 + jmp i setdd + +setfl: 0 + lac adrflg + sza + jmp i setfl + lac zerop + tad d1 + dac addr1 + -1 + tad eofp + dac addr2 + jmp i setfl + +newline: 0 + jms getsc; tal + sad o12 + jmp i newline + jmp error + +addres: 0 + dzm minflg "..) [stray scan mark?] + -1 + dac addr +ad1: + jms getsc; tal +ad2: + jms betwen; d47; d56 + skp + jmp numb + sad o40 "[o40 circled in scan] + jmp ad1 "[hand drawn check mark follows operand in scan] + sad o11 + jmp ad1 "[hand drawn check mark follows operand in scan] + "[check mark underlined in scan] + sad o55 + jmp amin "[hand drawn check mark follows operand in scan] + sad o56 + jmp adot "[hand drawn check mark follows operand in scan] + sad o53 + jmp ad1 "[hand drawn check mark follows operand in scan] + sad o44 + jmp adol "[hand drawn check mark follows operand in scan] + sad o57 + jmp fsrch "[hand drawn check mark follows operand in scan] + sad o77 + jmp bsrch "[hand drawn check mark follows operand in scan] + dac char + lac minflg + sza + jmp error + lac addr + sma + isz addres + jmp i addres +"** 08-rest.pdf page 14 +"[handwritten page number top right of scan - 7] +adot: + lac minflg + sza + jmp error + lac addr + sma + jmp error + lac dot + dac addr + jmp ad1 + +adol: + lac minflg + sza + jmp error + lac addr + sma + jmp error + -1 + tad eofp + dac addr + jmp ad1 + +amin: + -1 + dac minflg + jmp ad1 + +numb: + dac char + sad o60 + jmp 1f + lac d10 + jmp 2f +1: + lac d8 +2: + dac 2f + dzm num +1: + lac num + cll; mul; 2: 0 + lacq + tad char + tad dm48 + dac num + jms getsc; tal + dac char + jms betwen; d47; d58 + skp + jmp 1b + lac minflg + sna + jmp 1f + -1 + tad num + cma + dac num + dzm minflg +1: + lac addr +"** 08-rest.pdf page 15 +"[handwritten page number top right of scan - 8] + spa + lac zerop + tad num + dac addr + jms betwen; zermp; eofp + jmp error + lac char + jmp ad2 + +number: 0 + lac d100000 + dac n1 + law tbuf-1 + dac 8 +n0: + lac num + cll; idiv; n1: 0 + dac num + lacq + tad d48 + dac i 8 + lac n1 + cll; idiv; 10 + lacq + dac n1 + sza + jmp n0 + lac o12 + dac i 8 + law tbuf-1 + dac 8 + dac 9 + -5 + dac n1 +n2: + lac i 8 + sad d48 + skp + jmp n3 + dzm i 9 + isz n1 + jmp n2 +n3: + lac d1 + sys write; tbuf; 7 + jmp i number + +rname: 0 + lac fbufp + dac tal1 + -8 + dac c1 +1: + jms getsc; tal + sad o40 + jmp 1b + sad o12 + jmp 1f + jms putsc; tal1 + isz c1 + jmp 1b +"** 08-rest.pdf page 16 +"[handwritten page number top right of scan - 9] + jmp i rname +1: + lac tal1 + sad fbufp + skp + jmp 1f + lac fbuf + sna + jmp error + jmp i rname +1: + lac o40 + jms putsc; tal1 + isz c1 + jmp 1b + jmp i rname + +gline: 0 + dac glint1 + jms getdsk + lac glint1 " [these 6 lines were surrounded by a box + adn o17777 " that was Xed out with an arrow pointing to it]: + tad dskbfp " -- + dac ital "|\/| + lac linep "|/\|<--- + dac otal " -- +1: + lac ital + sad edskbfp + skp + jmp 2f + lac diskin + tad d1024 + jms getdsk + lac dskbfp + dac ital +2: + jms getsc; ital + jms putsc; otal + sad o12 + skp + jmp 1b + lac otal + sma + jmp 1f + cla + jms putsc; otal +1: + lac linpm1 + cma + tad otal + jmp i gline + +rline: 0 + lac linep + dac tal + +1: + cla + sys read; char; 1 + lac char +"** 08-rest.pdf page 17 +"[handwritten page number top right of scan - 10] + lrss 9 + jms esc + lac char + and o777 + jms esc + jmp 1b + +esc: 0 + sna + jmp i esc + jms putsc; tal + sad o12 + jmp 2f + sad o100 + jmp 1f + sad o43 + skp + jmp i esc + -1 + tad tal + dac tal + and o17777 + sad linpm1 + jmp 1f + jmp i esc + +1: + lac linep + dac tal + jmp i esc + +2: + lac tal + sma cla + jmp 1f + jms putsc; tal +1: + -1 + tad linep + cma + tad tal + dac linsiz + jmp i rline + +getsc: 0 + lac i getsc + dac sctalp + isz getsc + lac i sctalp + dac sctal + add o400000 + dac i sctal + ral + lac i sctal + szl + lrss 9 + and o777 + jmp i getsc + +putsc: 0 + and o777 +"** 08-rest.pdf page 18 +"[handwritten page number top right of scan - 11] + lmq + lac i putsc + dac sctalp + isz putsc + lac i sctalp + dac sctal + add o400000 + dac i sctalp + sma cla + jmp 1f + llss 27 + dac i sctal + lrss 9 + jmp i putsc + +1: + lac i sctal + and o777000 + omq + dac i sctal + lacq + jmp i putsc + +append: 0 + -1 + tad eofp + dac 8 + cma + tad dot + dac apt1 +1: + lac i 8 + dac i 8 + -3 + tad 8 + dac 8 + isz apt1 + jmp 1b + isz eofp + dzm i eofp + isz dot + jms addline + jmp i append + +addline: 0 + lac dskadr + dac i dot + jms getdsk "[line crossed out - scan markup] + -1 + tad linsiz + cma + dac apt1 + law line-1 + dac 8 + lac dskadr "[line crossed out - scan markup] + and o1777 "[line crossed out - scan markup] + tad dskbfp "[line crossed out - scan markup] + dac otal "[line crossed out - scan markup] + lac dskadr "[line crossed out - scan markup] + tad linsiz "[line crossed out - scan markup] + dac dskadr "[line crossed out - scan markup] +"** 08-rest.pdf page 19 +"[handwritten page number top right of scan - 12] +1: + lac otal " [these 9 lines were surrounded by a box + sad edskbfp " that was Xed out]: + skp " -- + jmp 2f "|\/| + lac diskin "|/\| + tad d1024 " -- + jms getdsk " + lac dskbfp " + dac otal " +2: "[line crossed out - scan markup] + lac i 8 + dac i otal "[line crossed out and a note that looks like *jms prtwrd*] + isz otal + dzm wrflg "[line crossed out - scan markup] + isz apt1 + jmp 1b + jmp i addline + + +getdsk: 0 "[the entire getdsk procedure was surrounded + and o776000 " by a box that was Xed out]: + sad diskin " -- + jmp i getdsk "|\/| + dac 2f "|/\| + lac wrflg " -- + sza " + jmp 3f " + lac diskin " + dac 1f " + lac sfo " + sys seek; 1: 0; 0 " + lac sfo " + sys write; dskbuf; 1024 " + lac d1 " + dac wrflg " +3: " + lac 2f " + dac diskin " + lac sfi " + sys seek; 2: 0; 0 " + spa " + jmp i getdsk " + lac sfi " + sys read; dskbuf; 1024 " + jmp i getdsk " + +betwen: 0 + dac bett1 + lac i betwen + dac bett2 + isz betwen + lac i bett2 + cma + tad bett1 + spa + jmp 1f + lac i betwen + dac bett2 + isz betwen + -1 + tad i bett2 +"** 08-rest.pdf page 20 +"[handwritten page number top right of scan - 13] + cma + tad bett1 + spa +1: + isz betwen + lac bett1 + jmp i betwen + +error: + lac d1 + sys write; 1f; 1 + jmp advanc +1: + 077012 \ No newline at end of file diff --git a/src/cmd/ed2.s b/src/cmd/ed2.s new file mode 100644 index 0000000..3345e98 --- /dev/null +++ b/src/cmd/ed2.s @@ -0,0 +1,519 @@ +"** 08-rest.pdf page 21 +"[handwritten page number top right of scan - 14] +" ed2 + +cs: + jsm getsc; tal + sad o40 + jmp cs + sad o12 + jmp error + dac delim + jms compile + lac tbufp + dac tal1 +1: + jms getsc; tal + sad delim + jmp 1f + sad o12 + jmp error + jms putsc; tal1 + jmp 1b +1: + lac o12 + jms putsc; tal1 + jms newline + jms setdd + lac addr1 + sad zerop + jmp error +1: + dac addr1 + lac i addr1 + jms execute + jmp 2f + lac addr1 + dac dot + law line-1 + dac 8 + law nlist-1 + dac 9 + -64 + dac c1 +3: + lac i 8 + dac i 9 + isz c1 + jmp 3b + -1 + tad fchrno + dac linsiz + rcr + szl + xor o400000 + tad linep + dac tal1 "??? + lac tbufp + dac tal +3: + jms getsc; tal + sad o12 + jmp 3f + jms putsc; tal1 + isz linsiz "??? +"** 08-rest.pdf page 22 +"[handwritten page number top right of scan - 15] + jmp 3b +3: + -1 + tad lcrhno + rcr + szl + xor o400000 + tad nlistp + dac tal +3: + jms getsc; tal + jms putsc; tal1 + isz linsiz + sad o12 + skp + jmp 3b + jms addline +2: + lac addr1 + sad addr2 + jmp advanc + tad d1 + jmp 1b + +fsrch: + dac delim + jms compile + jms srcsav + lac dot +floop: + tad d1 + dac addr + lac i addr + sza + jmp 1f + lac zerop + dac addr + jmp 2f +1: + jms execute + jmp 2f + jms srcres + jmp ad1 +2: + lac addr + sad dot + jmp error + jmp floop + +bsrch: + dac delim + jms compile + jms srcsav + lac dot + dad zerop + lac eofp +bloop: + tad dm1 + dac addr + lac i addr +"** 08-rest.pdf page 23 +"[handwritten page number top right of scan - 16] + sza + jmp 1f + lac eofp + dac addr + jmp 2f +1: + jms execute + jmp 2f + jms srcres + jmp ad1 +2: + lac addr + sad dot + jmp error + jmp bloop + +srcsav: 0 + lac minflg + sza + jmp error + lac addr + sma + jmp error + law line-1 + dac 8 + law tbuf-1 + dac 9 + -64 + dac c1 +1: + lac i 8 + dac i 9 + isz c1 + jmp 1b + jmp i srcsav + +srcres: 0 + law tbuf-1 + dac 8 + law line-1 + dac 9 + -64 + dac c1 +1: + lac i 8 + dac i 9 + isz c1 + jmp 1b + jmp i srcres + +compile: 0 + law compbuf-1 + dac 8 + dzm prev + dzm compflg + +cadvanc: + jms getsc; tal + sad delim + jmp cdone + dac compflg "??? +"** 08-rest.pdf page 24 +"[handwritten page number top right of scan - 17] + dzm lastre + sad o12 + jmp error + "sad o133 + "jmp chrcls + sad o136 "??? + jmp beglin + sad o44 + jmp endlin + "sad o52 + "jmp clsure + dac 1f + jmp comp + 1; jms matchar; 1: 0; 0 + jmp cadvanc + +cdone: + lac compflg + sna + jmp 1f + dac lastre + jms comp + 1; jms found; 0 + jmp i compile +1: "??? + lac lastre + sna + jmp error + jmp i compile + +chrcls: + jmp error + +beglin: "??? + jms comp + 1; jms matbol; 0 + dzm prev + jmp cadvanc + +endlin: "??? + jms comp + 1; jms mateol; 0 + dzm prev + jmp cadvanc + +clsure: + lac prev + sna + jmp error + tad d1 + dac 1f + jms comp + 1; jms matclo; 1: 0; 0 + dzm prev + jmp cadvanc + +comp: 0 "??? + -1 + tad comp + dac 9 + lac 8 "??? +"** 08-rest.pdf page 25 +"[handwritten page number top right of scan - 18] + dac prev +1: "??? + lac i 9 + sna + jmp i 9 + dac i 8 + jmp 1b + +execute: 0 + jms gline + lac linep + dac tal1 + dzm charno + dzm fchrno + dzm lchrno + lac jmpclist + dac trvect + lac jmpnlist + dac trvect+1 + lac jmpxchg + dac i trvect+1 + jmp 1f + +exchg: "??? + lacq + sad o12 + jmp i execute + lac jmpxchg + dac i 8 +1: "??? + lac trvect + lmq + lac trvect+1 + dac trvect + lacq + dac trvect+1 + tad dm1 + dac 8 + jms getsc; tal1 + lmq + isz charno + jms compbuf +charno: + 0 +trvect: + 0;0 + +matchar: 0 "??? + -2 + tad matchar + dac exret + lac i exret + dac exret + lacq + sad i matchar + skp + jmp 1f + lac matchar + adn o17777 + tad jms1 + dac i 8 "??? [unreadable page cutoff] +"** 08-rest.pdf page 26 +"[handwritten page number top right of scan - 19] + lac i exret + dac i 8 +1: "??? + isz exret + jmp i exret + +found: 0 + -2 + tad found + dac exret + lac i exret + dac exret + lac fchrno + sza + jmp 1f + isz execute + jmp 2f +1: "??? + sad i exret + jmp 1f + cma + tad i exret + spa + jmp 2f + jmp 3f +1: "??? + lac charno + cma + tad charno + spa + jmp 3f +2: "??? + lac i exret + dac fchrno + lac charno + dac lchrno +3: "??? + isz exret + jmp i exret + +matbol: 0 "??? + lac charno + sad d1 + jmp 1f + lac matbol + jmp 2f +1: "??? + lac matbol + jmp 3f + +mateol: 0 "??? + lacq + sad o12 + jmp 1f + lac mateol +2: "??? + tad dm2 + dac exret + lac i exret + dac 9 + "??? [line is cut off in scan, maybe lac i 8 or jmp i 9] +"** 08-rest.pdf page 27 +"[handwritten page number top right of scan - 20] +1: "??? + lac mateol +3: "??? + tad dm3 + dac 9 + lac i 9 + isz 9 + dac i 9 + jmp i 9 + +matclo: 0 "??? + -2 + tad matclo + dac exret + lac i exret + dac cloret + lac i cloret + dac 1f + dac 2f + lac i matclo + dac exret + jms i exret; 1: 0 + isz matclo + jms i matclo; 2: 0 + isz cloret + jmp i cloret + +"??? the remainder of this scan had an unreadable first character +"??? I did the best I could to recreate the characters appropriately +o1: 1 +o133: 0133 +dm3: -3 +o136: 0136 +dm2: -2 +o52: 052 +o57: 057 +o77: 077 +o40: 040 +o12: 012 +d47: 47 +d58: 58 +dm48: -48 +d10: 10 +d8: 8 +d48: o60: 060 +d100000: 100000 +o44: 044 +o53: 053 +o56: 056 +o55: 055 +o11: 011 +o400000: 0400000 +o17777: 017777 +o144: 0144 +dm1: -1 +o56012: 056012 +o777: 0777 +o100: 0100 +o43: 043 +o777000: 0777000 +o75: 075 +o167: 0167 +o161: 0161 +"** 08-rest.pdf page 28 +"[handwritten page number top right of scan - 21] +o160: 0160 +o143: 0143 +o141: 0141 +o1777: 01777 +d1024: 1024 +o776000: 0776000 +o162: 0162 +o163: 0163 +o73: 073 +o54: 054 +o17: 017 + +tname: + 0145056;0164155;0160040;040040 +tbufp: tbuf +linep: line +nlistp: nlist +fbufp: fbuf +dskbfp: dskbuf "[line crossed out - scan markup] +edskbfp: dskbuf+1024 "[line crossed out - scan markup] +lnodp: lnodes +linpm1: line-1 +jmpclist: jmp clist +jmpnlist: jmp nlist +jmpxchg: jmp xchg +jms1: jms 1 +tal: .=.+1 +exret: .=.+1 +cloret: .=.+1 +delim: .=.+1 +prev: .=.+1 +compflg: .=.+1 +tal1: .=.+1 +c1: .=.+1 +ital: .=.+1 +otal: .=.+1 +diskin: .=.+1 +glint: .=.+1 +c2: .=.+1 +num: .=.+1 +zermp: .=.+1 +minflg: .=.+1 +adrflg: .=.+1 +dot: .=.+1 +addr: .=.+1 +addr1: .=.+1 +addr2: .=.+1 +eofp: .=.+1 +zerop: .=.+1 +dskadr: .=.+1 +linsiz: .=.+1 +tfi: .=.+1 +fchrno: .=.+1 +lchrno: .=.+1 +lastre: .=.+1 +bett1: .=.+1 +bett2: .=.+1 +wrflg: .=.+1 +apt1: .=.+1 +"[page cuts off one label] +"** 08-rest.pdf page 29 +"[handwritten page number top right of scan - 22] +sfo: .=.+1 +sctal: .=.+1 +sctalp: .=.+1 +char: .=.+1 +fbuf: .=.+4 "not sure if this is fbuf, but +tbuf: .=.+64 "there is a write; tbuf; 64 call +line: .=.+64 +nlist: .=.+50 +"??? ?list: .=.+50, unable to determine label +compbuf: .=.+100 +dskbuf: .=.+1 "[line crossed out - scan markup] +lnodes: .=.+1000 diff --git a/src/cmd/ind.b b/src/cmd/ind.b new file mode 100644 index 0000000..151be09 --- /dev/null +++ b/src/cmd/ind.b @@ -0,0 +1,26 @@ +main $( + extrn read, write; + auto i, c, state, line 100; + +loop: + state = i = 0; +loop1: + c = read(); + if(c==4) return; + if(c==';' & state==0) state = 2; + if((c<'0' ^ c>'9'&c<'a' ^ c>'z') & state==0) state = 1; + line[i] = c; + i = i+1; + if(c!=012) goto loop1; + if(state==2 ^ i==1) goto noi; + write(' '); + write(' '); +noi: + i = 0; +loop3: + c = line[i]; + write(c); + i = i+1; + if(c!=012) goto loop3; + goto loop; +$) diff --git a/src/cmd/init.s b/src/cmd/init.s new file mode 100644 index 0000000..69284d4 --- /dev/null +++ b/src/cmd/init.s @@ -0,0 +1,291 @@ +" init + + -1 + sys intrp + jms init1 + jms init2 +1: + sys rmes + sad pid1 + jmp 1f + sad pid2 + jms init2 + jmp 1 +1: + jms init1 + jmp 1 + +init1: 0 + sys fork + jmp 1f + sys open; ttyin; 0 + sys open; ttyout; 1 + jmp login +1: + dac pid1 + jmp init1 i + +init2: 0 + sys fork + jmp 1f + sys open; keybd; 0 + sys open; displ; 1 + jmp login +1: + dac pid2 + jmp init2 i + +login: + -1 + sys intrp + sys open; password; 0 + lac d1 + sys write; m1; m1s + jms rline + lac ebufp + dac tal +1: + jms gline + law ibuf-1 + dac 8 + law obuf-1 + dac 9 +2: + lac 8 i + sac o12 + lac o72 + sad 9 i + skp + jmp 1b + sad o72 + skp + jmp 2b + lac 9 i + sad o72 + jmp 1f + -1 + tad 9 + dac 9 + lac d1 + sys write; m3; m3s + jms rline + law ibuf-1 + dac 8 +2: + lac 8 i + sad o12 + lac o72 + sad 9 i + skp + jmp error + sad o72 + skp + jmp 2b +1: + dzm nchar + law dir-1 + dac 8 +1: + lac 9 i + sad o72 + jmp 1f + dac char + lac nchar + sza + jmp 2f + lac char + alss 9 + xor o40 + dac 8 i + dac nchar + jmp 1b +2: + lac 8 + dac nchar + lac nchar i + and o777000 + xor char + dac nchar i + dzm nchar + jmp 1b +1: + dzm nchar +1: + lac 9 i + sad o12 + jmp 2f + tad om60 + lmq + lac nchar + cll; als 3 + omq + dac nchar + jmp 1b +2: + lac nchar + sys setuid + sys chdir; dd + sys chdir; dir + + lac d2 + sys close + sys open; sh; 0 + sma + jmp 1f + sys link; system; sh; sh + spa + jmp error + sys open; sh; 0 + spa + jmp error + sys unlink; sh +1: + law 017700 + dac 9 + law boot-1 + dac 8 +1: + lac 8 i + dac 9 i + sza + jmp 1b + jmp 017701 + +boot: + lac d2 + lmq + sys read; 4096; 07700 + lacq + sys close + jmp 4096 + 0 + +rline: 0 + law ibuf-1 + dac 8 +1: + cla + sys read; char; 1 + lac char + lrss 9 + sad o100 + jmp rline+1 + sad o43 + jmp 2f + dac 8 i + sad o12 + jmp rline i + jmp 1b +2: + law ibuf-1 + sad 8 + jmp 1b + -1 + tad 8 + dac 8 + jmp 1b + +gline: 0 + law obuf-1 + dac 8 +1: + jms gchar + dac 8 i + sad o12 + jmp gline i + jmp 1b + +gchar: 0 + lac tal + sad ebufp + jmp 1f + ral + lac tal i + snl + lrss 9 + and o777 + lmq + lac tal + add o400000 + dac tal + lacq + sna + jmp gchar+1 + jmp gchar i +1: + lac bufp + dac tal +1: + dzm tal i + isz tal + lac tal + sad ebufp + skp + jmp 1b + lac bufp + dac tal + lac d2 + sys tead; buf; 64 + sna + jmp error + jmp gchar+1 + +error: + lac d1 + sys write; m2; m2s + lac d1 + sys smes + sys exit + +m1: + 012; ;;;;;;<: 040 +m3s = .-m3 +dd: +
;040040;040040;040040 +dir: + 040040;040040;040040;040040 + +ttyin: + ;;;;; 040040 +keybd: + ;;; +displ: + ;;;; 040040;040040;040040 +system: + ;;; 040040 +password: + ;;; + +d1: 1 +o43: 043 +o100: 0100 +o400000; 0400000 +d2: 2 +o12: 012 +om60: -060 +d3: 3 +ebufp: buf+64 +bufp: buf +o777: 0777 +o777000: 0777000 +o40: 040 +o72: 072 + +ibuf: .=.+100 +obuf: .=.+100 +tal: .=.+1 +buf: .=.+64 +char: .=.+1 +nchar: .=.+1 +pid1: .=.+1 +pid2: .=.+1 diff --git a/src/cmd/lease.b b/src/cmd/lease.b new file mode 100644 index 0000000..df6c6df --- /dev/null +++ b/src/cmd/lease.b @@ -0,0 +1,20 @@ +main $( + auto ch; + extrn read, write; + + goto loop; + while (ch != 04) + $( if (ch > 0100 & ch < 0133) + ch = ch + 040; + if (ch==015) goto loop; + if (ch==014) goto loop; + if (ch==011) + $( ch = 040040; + write(040040); + write(040040); + $) + write(ch); + loop: + ch = read()&0177; + $) + $) \ No newline at end of file diff --git a/src/sys/s1.s b/src/sys/s1.s new file mode 100644 index 0000000..80bc1c0 --- /dev/null +++ b/src/sys/s1.s @@ -0,0 +1,195 @@ +" S1 + +.. = 0 +t = 0 +orig: + hlt + jmp pibreak + +. = orig+7 + -1 + +. = orig+020 + 1f + iof + dac u.ac + lac 020 + dac 1f + lac 1f-1 + dac 020 + lac u.ac + jmp 1f+1 + 1f +1: 0 + iof + dac u.ac + lacq + dac u.mq + lac 8 + dac u.rq + lac 9 + dac u.rq+1 + jms copy; 10; u.rq+2; 6 + lac 1b + dac u.rq+8 + -1 + dac .savblk + dac .insys + lac uquant + jms betwen; d0; maxquant + jms swap + ion + -1 + tad u.rq+8 + jms laci + jms betwen; o20001; swn + jmp badcal + tad swp + dac .+1 + jmp .. i + +. = orig+0100 + jmp coldentry + jms halt + +okexit: + dzm: u.ac +sysexit: + ion + lac .savblk + sza + jmp 1f + jms copy; sysdata; dskbuf; 64 + cla + jms dskio; 07000 +1: + dzm .insys + jms chkint + skp + jmp .save + jms copy; u.rq+2; 10; 6 + lac u.rq+1 + dac 9 + lac u.rq + dac 8 + lac u.rq + lmq + lac u.ac + jmp u.rq+8 i + +swap: 0 + ion +1: + jms lookfor; 3 " out/ready + jmp 1f + jms lookfor; 1 " in/ready + skp + jmp 1b + dzm maxquant + jmp 3f +1: + dac 9f+t + jms lookfor; 2 " in/notready + jmp 1f + jms lookfor; 1 " in/ready + jmp 1f + jmp 2f +1: + lac swap + dac u.swapret + iof + lac o200000 + tad u.ulistp i + dac u.ulistp i + ion + jms dskswap; 07000 + lac u.dspbuf + sna + jmp 2f + law dspbuf + jms movdsp +2: + iof + lac o600000 + tad 9f+t i + dac 9f+t i + ion + jms dskswap; 06000 + lac u.swapret + dac swap + lac o20 + dac maxquant + lac u.dspbuf + sza +"** 01-s1.pdf page 4 + jms movdsp +3: + dzm uquant + iof + jmp swap i +t = t+1 + +swp: + jmp . + .save; .getuid; .open; .read; .write; .creat; .seek; .tell + .close; .link; .unlink; .setuid; .rename; .exit; .time; .intrp + .chdir; .chmod; .chown; badcal; .sysloc; badcal; .capt; .rele + .status; badcal; .smes; .rmes; .fork +swn: + .-swp-1 i + +.intrp: + lac u.ac + dac u.intflg + jmp okexit + +.sysloc: + lac u.ac + and o17777 + jms betwen; d1; locn + jms error + tad locsw + dac .+1 + lac .. + dac u.ac + jmp sysexit + +locsw: + lac . + iget; inode; userdata; sysdata; copy; copyz; betwen; dskrd + dskwr; dskbuf; dpdata; namei; pbsflgs; alloc; free; dspdata + crdata +locn: + .-locsw-1 + +chkint: 0 + lac .insys + sza + jmp chkint i + lac .int1 + sna + jmp 1f + sad u.ofiles+2 + jmp 2f +1: + lac .int2 + sna + jmp chkint i + sad u.ofiles+2 + skp + jmp chkint i + dzm .int2 + jmp 1f +2: + dzm .int1 +1: +"** 01-s1.pdf page 5 + lac u.intflg + sza + jmp chkint i + -1 + dac .insys + ion + isz chkint + jmp chkint i + diff --git a/src/sys/s2.s b/src/sys/s2.s new file mode 100644 index 0000000..9d7af58 --- /dev/null +++ b/src/sys/s2.s @@ -0,0 +1,334 @@ +"** 01-s1.pdf page 7 +" s2 + +.status: + jms arg + dac .+5 + jms arg + dac .+6 + lac u.cdir + jms namei; .. + jms error + jms namei; .. + jms error + jms iget + lac u.ac + and o17777 + jms betwen; o10000; o17762 + jms error + dac .+3 + jms copy; inode; ..; 12 + lac d.i + dac 9 i + jmp okexit + +.capt: + lac u.ac + dac u.dspbuf + jms movdsp + jmp sysexit + +.rele: + dzm u.dspbuf + law dspbuf + jms movdsp + jmp sysexit + +.chmod: + jms isown + lac u.ac + and o17 + lmq + lac i.flags + and o777760 + omq + dac i.flags + jms iput + jmp okexit + +.chown: + jms isown + lac u.ac + dac i.uid + jms iput + jmp okexit + +.getuid: + lac u.uid + dac u.ac + jmp sysexit + +.seek: + jms seektell + tad u.base +"** 01-s1.pdf page 8 + spa + jms error + lmq + lac f.flags + and d1 + sna + jms 1f + lacq + jms betwen; d0; i.size + jms dacisize + jmp 2f +1: + lacq + jms betwen; d0; i.size + lac i.size +2: + dac f.badd + dac u.ac + jms fput + jmp sysexit + +.tell: + jms seektell + cma + tad d1 + tad u.base + dac u.ac + jmp sysexit + +.link: + jms arg + dac 0f + jms arg + dac 1f + jms arg + dac 2f + lac d4 + jms namei; 0:0 + jms error + jms namei; 1:0 + jms error + dac u.base + jms copy; 2:0; name; 4 + lac u.cdir + jms namei; name + skp + jms error + lac d1 + dac mode + jms access + jms dslot + lac u.base + jms iget + lac ii + dzm d.i + jms copy; name; d.name; 4 + lac i.uniq + dac d.uniq + -1 + tad i.nlks + dac i.nlks +"** 01-s1.pdf page 9 + jms iput + jms dput + jmp okexit + +.unlink: + jms argname + dac u.base + lac d1 + dac mode + jms access + dac d.i + jms dput + lac u.base + jms iget + isz i.nlks + jmp 1f + jms itrunc + dzm i.flags +1: + jms iput + jmp sysexit + +.setuid: + lac u.uid + sma + jms error + lac u.ac + dac u.uid + jmp sysexit + +.rename: + jms arg + dac 0f + jms arg + dac 1f + lac u.cdir + jms namei; 0:0 + jms error + lac d1 + dac mode + jms access + jms copy; 1:0; d.name; 4 + jmp okexit + +.time: + lac s.tim + dac u.ac + lac s.tim+1 + dac u.mq + jmp sysexit + +.chdir: + jms argname + jms iget + lac i.flags + and o20 + sna + jms error + lac ii + dac u.cdir +"** 01-s1.pdf page 10 + jmp okexit + +.open: + jms arg + dac 0f + jms arg + sza + lac d1 + sna + lac d2 + dac mode + lac u.cdir + jms namei; 0:0 + jms error + jms iget + jms access + lac i.flags + and o20 + sna + jmp open1 + lac mode + and d1 + sna + jmp open1 + lac u.uid + sma + jms error + jmp open1 + +.creat: + lac d1 + dac mode + jms arg + dac .+2 + jms copy; ..; name; 4 + lac u.cdir + jms namei; name + jmp 1f + jms iget + jms access + lac i.flags + and o20 + sna + jmp .+4 + lac u.uid + sma + jms error + jms itrunc + cla + jms dacisize + jmp open1 +1: + jms access + lac u.ac + and o17 + jms icreat +open1: + jms fassign + jms error + jmp sysexit + +"** 01-s1.pdf page 11 +.close: + jms finac + dzm f.flags + jms fput + jmp sysexit + +.read: + jms arg + and o17777 + dac u.base + jms arg + dac u.count + lac u.base + jms betwen; o10000; o17777 + jms error + tad u.count + jms betwen; u.base; o17777 + jms error + dac u.limit +1: + jms finac + lac f.flags + and d1 + sza + jms error + lac i.flags + and o40 + sna + jmp 1f + iof + lac ii + tad swr + dac .+1 + jmp .. i +1: + lac u.base + dac 1f+1 + lac u.count + dac 1f+2 + lac f.badd +1: + jms iread; ..; .. + jmp exitrw + +.write: + jms arg + and o17777 + dac u.base + jms arg + dac u.count + tad u.base + jms betwen; u.base; o17777 + jms error + dac u.limit + jms finac + lac f.flags + and d1 + sna + jms error + lac i.flags + and o40 +"** 01-s1.pdf page 12 + sna + jmp 1f + iof + lac ii + tad sww + dac .+1 + jmp .. i +1: + lac u.base + dac 1f+1 + lac u.count + dac 1f+2 + lac f.badd +1: + jms iwrite; ..; .. + +exitrw: + dac u.ac + tad f.badd + dac f.badd + jms iput + jms fput + jmp sysexit diff --git a/src/sys/s3.s b/src/sys/s3.s new file mode 100644 index 0000000..c0ca18d --- /dev/null +++ b/src/sys/s3.s @@ -0,0 +1,354 @@ +"** 01-s1.pdf page 14 +" s3 + +searchu: 0 + lac searchu i + dac 9f+t+1 + -mnproc + dac 9f+t + law ulist-1 + dac 8 +1: + lac 8 i + dac lu + lac 8 i + dac lu+1 + lac 8 i + dac lu+2 + lac 8 i + dac lu+3 + jms 9f+t+1 i + isz 9f+t + jmp 1b + isz searchu + jmp searchu i +t = t+2 + +lookfor: 0 + jms searchu; 1f + isz lookfor + isz lookfor + jmp lookfor i +1: 0 + lac lu + rtl; rtl; and o7 + sad lookfor i + skp + jmp 1b i + -3 + tad 8 + and o17777 + isz lookfor + jmp lookfor i + +.fork: + jms lookfor; 0 " not-used + skp + jms error + dac 9f+t + isz uniqpid + lac uniqpid + dac u.ac + law sysexit + dac u.swapret + lac o200000 + tad u.ulistp i + dac u.ulistp i + jms dskswap; 07000 + lac 9f+t + dac u.ulistp + lac o100000 + xor u.ulistp i + dac u.ulistp i + lac u.pid +"** 01-s1.pdf page 15 + dac u.ac + lac uniqpid + dac u.pid + isz 9f+t + dac 9f+t i + isz u.rq+8 + dzm u.intflg + jmp sysexit +t= t+1 + +badcal: + clon + -1 + dac 7 +.save: + lac d1 + jms iget + cla + jms iwrite; 4096; 4096 + jms iwrite; userdata; 64 + jms iput + +.exit: + lac u.dspbuf + sna + jmp .+3 + law dspbuf + jms movdsp + jms awake + lac u.ulistp i + and o77777 + dac u.ulistp i + isz u.ulistp + dzm u.ulistp i + jms swap + +.rmes: + jms awake + lac o100000 + tad u.ulistp i + dac u.ulistp i + law 2 + tad u.ulistp + dac 9f+t + -1 + dac 9f+t i + jms swap + law 2 + tad u.ulistp + dac 9f+t + lac 9f+t i + cma + dac u.ac + dzm 9f+t i + isz 9f+t + lac 9f+t i + dac u.mq + dzm 9f+t i + jmp sysexit +t = t+1 + +"** 01-s1.pdf page 16 +.smes: + lac u.ac + sna spa + jms error + jms searchu; 1f + law 2 + tad u.ulistp + dac 9f+t + dzm 9f+t i + jms error +1: 0 + lac lu+1 + sad u.ac + skp + jmp 1b i + lac lu+2 + sad dm1 + jmp 1f + lac o100000 + tad u.ulistp i + dac u.ulistp i + law 2 + tad u.ulistp + dac 9f+t + lac u.ac + dac 9f+t i + jms swap + law 2 + tad u.ulistp + dac 9f+t + dzm 9f+t i + jmp .smes +1: + -3 + tad 8 + dac 9f+t + lac o700000 + tad 9f+t i + dac 9f+t i + isz 9f+t + isz 9f+t + lac u.pid + cma + dac 9f+t i + isz 9f+t + lac u.mq + dac 9f+t i + jmp okexit +t = t+1 + +awake: 0 + jms searchu; 1f + jmp awake i +1: 0 + lac u.pid + sad lu+2 + skp + jmp 1b i + -3 + tad 8 + dac 9f+t +"** 01-s1.pdf page 17 + lac o700000 + tad 9f+t i + dac 9f+t i + jmp 1b i +t = t+1 + +swr: +sww: + jmp .-4 i + .halt; rttyi; rkbdi; rppti; .halt + .halt; wttyo; wdspo; wppto + +.halt: jms halt + +rttyi: + jms chkint1 + lac d1 + jms getchar + jmp 1f + and o177 + jms betwen; o101; o132 + skp + tad o40 + alss 9 + jmp passone +1: + jms sleep; sfiles+0 + jms swap + jmp rttyi + +wttyo: + jms chkint1 + jms forall + sna + jmp fallr + lmq + lac sfiles+1 + spa + jmp 1f + xor o400000 + dac sfiles+1 + lacq + tls + sad o12 + jms putcr + jmp fallr +1: + lacq + dac char + lac d2 "** written: d6 ttyout + jms putchar + skp + jmp fallr + jms sleep; sfiles+1 + jms swap + jmp wttyo + +rkbdi: + jms chkint1 + lac d3 + jms getchar +"** 01-s1.pdf page 18 + jmp 3f + lmq + and o155 + sad o55 + jmp 1f + lacq + and o137 + sad o134 + skp + jmp 2f +1: + lacq + xor o20 + lmq +2: + lacq + dac u.limit +1: + jms chkint1 + lac u.limit + jms dspput + jmp 1f + jms sleep; sfiles+6 + jms swap + jmp 1b +1: + lac u.limit + alss 9 + jmp passone +3: + jms sleep; sfiles+2 + jms swap + jmp rkbdi + +wdspo: + jms chkint1 + jms forall + jms dspput + jmp fallr + jms sleep; sfiles+6 + jms swap + jmp wdspo + + +rppti: + lac d4 + jms getchar + jmp .+3 + alss 9 + jmp passone + lac sfiles+3 + sma + rsa +1: + jms sleep; sfiles+3 + jms swap + jmp rppti +"** 01-s1.pdf page 19 + +wppto: + jms forall + sna + jmp fallr + lmq + lac sfiles+4 + spa + jmp 1f + xor o400000 + dac sfiles+4 + lacq + psa + jmp fallr +1: + lacq + dac char + lac d5 + jms putchar + skp + jmp fallr + jms sleep; sfiles+4 + jms swap + jmp wppto + +passone: + sad o4000 + jmp okexit + dac u.base i + lac d1 + dac u.ac + jmp sysexit + +error: 0 + -1 + dac u.ac + jmp sysexit + +chkint1: 0 + dzm .insys + jms chkint + skp + jmp .save + -1 + dac .insys + jmp chkint1 i diff --git a/src/sys/s4.s b/src/sys/s4.s new file mode 100644 index 0000000..75f3d19 --- /dev/null +++ b/src/sys/s4.s @@ -0,0 +1,347 @@ +"** 01-s1.pdf page 21 +" s4 + +alloc: 0 + -1 + tad s.nfblks + spa + jmp 1f + dac s.nfblks + tad fblksp + jms laci + dac 9f+t + jms copyz; dskbuf; 64 + lac 9f+t + jms dskwr + dzm .savblk + lac 9f+t + jmp alloc i +1: + lac s.nxfblk + sna + jms halt " OUT OF DISK + dac s.fblks + jms dskrd + lac dskbuf + dac s.nxfblk + jms copy; dskbuf+1; s.fblks+1; 9 + lac d10 + dac s.nfblks + jmp alloc+1 + +free: 0 + lmq + lac s.nfblks + sad d10 + jmp 1f + tad fblksp + dac 9f+t + lacq + dac 9f+t i + dzm .savblk + isz s.nfblks + jmp free i +1: + lac s.nxfblk + dac dskbuf + jms copy; s.fblks+1; dskbuf+1; 9 + lacq + dac s.nxfblk + jms dskwr + dzm .savblk + lac d1 + dac s.nfblks + jmp free i +t = t+1 + +laci: 0 + and o17777 + tad o200000 + dac .+1 + lac .. + jmp laci i + +"** 01-s1.pdf page 22 + +betwen: 0 + lmq cmq + lac betwen i + dac 9f+t + isz betwen + lacq + tad 9f+t i + sma + jmp 1f + lac betwen i + dac 9f+t + isz betwen + lacq + tad 9f+t i + cma + spa sna +1: + isz betwen + lacq + cma + jmp betwen i + +copy: 0 + -1 + tad copy i + dac 8 + isz copy + -1 + tad copy i + dac 9 + isz copy + -1 + tad copy i + cma + dac 9f+t + isz copy +1: + lac 8 i + dac 9 i + isz 9f+t + jmp 1b + jmp copy i + +copyz: 0 + -1 + tad copyz i + dac 8 + isz copyz + -1 + tad copyz i + cma + dac 9f+t + isz copyz +1: + dzm 8 i + isz 9f+t + jmp 1b + jmp copyz i +t = t+1 + +putchar: 0 +"** 01-s1.pdf page 23 + dac 9f+t + cla + jms takeq + jmp putchar i + tad o40001 + dac .+4 + lac 9f+t + jms putq + lac char + dac q2+1 .. + isz putchar + jmp putchar i +t = t+1 + +getchar: 0 + jms takeq + jmp i getchar + tad o200001 + dac .+3 + cla + jms putq + lac q2+1 .. + isz getchar + jmp i getchar + +takeq: 0 + rcl + tad lacq1 + dac .+7 + tad o640000 + dac .+17 + tad d1 + dac .+14 + tad o500000 + dac .+5 + lac q1 .. + sna + jmp takeq i + dac lnkaddr + sad q1+1 .. + jmp .+5 + tad o200000 + dac .+1 + lac q2 .. + jmp .+3 + cla + dac q1+1 .. + dac q1 .. + isz takeq + lac lnkaddr + jmp i takeq + +putq: 0 + rcl + tad dacq1 + dac .+14 + tad d1 + dac .+13 + tad o140000 + dac .+1 + lac q1-1 .. +"** 01-s1.pdf page 24 + sna + jmp .+6 + tad o40000 + dac .+2 + lac lnkaddr + dac q2 .. + jmp .+3 + lac lnkaddr + dac q1 .. + dac q1+1 .. + jmp putq i + +srcdbs: 0 + dac 9f+t+2 "* lmq + -ndskbs + dac 9f+t + law dskbs "* -1 dac 8 written + dac 9f+t+1 "* lacq +1: + lac 9f+t+2 "** crossed out + sad 9f+t+1 "** isz 8 written + jmp srcdbs i + law 65 "** ??? crossed out + tad 9f+t+1 "** crossed out isz 8 written + isz 9f+t+1 + isz 9f+t + jmp 1b + isz srcdbs + jmp srcdbs i + +collapse: 0 + cla + jms srcdbs + jmp 1f + law dskbs + dac 9f+t+1 "** 9f+t+1 crossed out: 8 written in +1: + lac 9f+t+1 "** 9f+t+1 crossed out: 8 written in + dac 0f+1 + tad d65 "** crossed out: d2-- original obscured + dac 0f + cma + tad d1 + tad edskbsp + and o17777 + sna + jmp 0f+3 + dac 0f+2 + jms copy; 0:..; ..; .. + -65 + tad edskbsp + dac 9f+t + tad d1 + dac 0f + lac dskaddr + dac 9f+t i + jms copy; dskbuf; 0:..; 64 + jmp collapse i + +dskrd: 0 + jms betwen; d2; d7999 + +"** 01-s1.pdf page 25 + jms halt + sad dskaddr + jmp dskrd i + dac dskaddr + jms srcdbs + jmp 1f + lac dskaddr + jms dskio; 06000 + jmp 2f +1: + dzm 9f+t+1 i + law 1 + tad 9f+t+1 + dac .+2 + jms copy; ..; dskbuf; 64 +2: + jms collapse + jmp dskrd i + +dskwr: 0 + jms betwen; d2; d7999 + jms halt + jms dskio; 07000 + lac dskaddr + jms srcdbs + dzm 9f+t+1 i + jms collapse + jmp dskwr i +t = t+3 + +dskio: 0 + dac dskaddr + cll; idiv; 80 + dac 9f+t + lacq + idiv; 10 + dac 9f+t+1 + lls 22 + xor 9f+t+1 + als 8 + dac 9f+t+1 + lac 9f+t + idiv; 10 + dac 9f+t + lls 22 + xor 9f+t + xor 9f+t+1 + xor o200000 + dac 9f+t + jms dsktrans; -64; dskbuf; 9f+t; dskio + isz dskio + jmp dskio i +t = t+1 + +dsktrans: 0 + -10 + dac 9f+t +1: + -1 + tad dsktrans + dac 12 +"** 01-s1.pdf page 26 + dscs + lac 12 i + dslw + lac 12 i + dslm + lac 12 i + jms laci + dsld + dzm .dskb + lac 12 i + jms laci + jms laci + dsls + lac .dskb + sna + jmp .-2 + lac .dske + sma + jmp 12 i + isz 9f+t + jmp 1b + jms halt " 10 disk errors +t = t+1 + +halt: 0 + isz 9f+t + jmp .-1 + iof + hlt + jms copy; law; 4096; 4096 + hlt; jmp .-1 +t = t+1 + diff --git a/src/sys/s5.s b/src/sys/s5.s new file mode 100644 index 0000000..6c89ab9 --- /dev/null +++ b/src/sys/s5.s @@ -0,0 +1,278 @@ +"** 01-s1.pdf page 28 +" s5 + +dskswap: 0 + cll; als 3 + dac 9f+t + jms dsktrans; -64; userdata; 9f+t; dskswap + lac 9f+t + tad o20 + dac 9f+t + jms dsktrans; -4096; 4096; 9f+t; dskswap + isz dskswap + jmp dskswap i +t = t+1 + +access: 0 + lac i.flags + lmq + lac u.uid + spa + jmp access i + sad i.uid + lrs 2 + lacq + and mode + sza + jmp access i + jms error + +fassign: 0 + -10 + dac 9f+t +1: + lac 9f+t + tad d10 + jms fget + jms halt " will not happen + lac f.flags + sma + jmp 1f + isz 9f+t + jmp 1b + jmp fassign i +1: + lac mode + xor o400000 + dac f.flags + lac ii + dac f.i + lac 9f+t + tad d10 + dac u.ac + dzm f.badd + jms fput + isz fassign + jmp fassign i +t = t+1 + +fget: 0 + jms betwen; d0; d9 + jmp fget i + cll; mul; 3 + lacq +"** 01-s1.pdf page 29 + + tad ofilesp + dac 9f+t + dac .+2 + jms copy; ..; fnode; 3 + isz fget + jmp fget i + +fput: 0 + lac 9f+t + dac .+3 + jms copy; fnode; ..; 3 + jmp fput i +t = t+1 + +forall: 0 + lac u.base + sad u.limit + jmp 1f + lac u.base + ral + lac u.base i + snl + lrs 9 + and o777 + jmp forall i +fallr: + lac u.base + add o400000 + dac u.base + jmp forall+1 +1: + lac u.count + dac u.ac + jmp sysexit + +sleep: 0 + law ulist-1 + dac 8 + lac o200000 + lmq +1: + lac u.ulistp i + sad 8 i + jmp 1f + isz 8 + isz 8 + isz 8 + cla; lrs 1 + jmp 1b +1: + tad o100000 + dac u.ulistp i + lac sleep i + dac 9f+t + lac 9f+t i + omq + dac 9f+t i + isz sleep + jmp sleep i +t = t+1 + +"** 01-s1.pdf page 30 + +dslot: 0 + dzm di + skp +1: + isz di + lac di + jms dget + lac d.i + sza + jmp 1b + jmp dslot i + +icreat: 0 + dac 9f+t + jms dslot + lac o20 + dac ii +1: + isz ii + lac ii + jms iget + lac i.flags + spa + jmp 1b + lac ii + dac d.i + jms copy; name; d.name; 4 + isz s.uniq + lac s.uniq + dac d.uniq + dac i.uniq + lac 9f+t + xor o400000 + dac i.flags + lac u.uid + dac i.uid + -1 + dac i.nlks + dzm i.size + jms copyz; i.dskps; 7 + jms iput + jms dput + jmp icreat i +t = t+1 + +dspput: 0 + and o177 + sna + jmp i dspput + sad o14 + jmp 1f + lmq + sad o12 + jms dspnl + lac dsploc i + sad o400000 + jmp dspleft + omq + dac dsploc i + isz dsploc + jmp i dspput + +"** 01-s1.pdf page 31 + +1: + jms dspinit + jmp dspput i + +dspleft: + lac dsploc + sad edspbuf + jmp 1f + dac 8 + lac o400000 + dac 8 i + cla; llss 18+7 + dac dsploc i + jmp dspput i + +dspnl: 0 + lac dsplno + sad d33 + jmp 1f + isz dsplno + jmp dspnl i +1: + lac o2000 + wbl + isz dspput + jmp dspput i + +dspinit: 0 + lac dspbufp3 + dac dsploc + lac o400000 + dac dspbuf+3 + dzm dsplno + jmp dspinit i + +movdsp: 0 + iof + cdf + dac dspbufp + -1 + dac .dspb + ion + jmp movdsp i + +arg: 0 + lac u.rq+8 i + isz u.rq+8 + jmp arg i + +argname: 0 + jms arg + dac .+2 + jms copy; ..; name; 4 + lac u.cdir + jms namei; name + jms error + jmp argname i + +seektell: 0 + jms arg + dac u.base + +"** 01-s1.pdf page 32 + jms arg + dac u.limit + jms finac + lac u.limit + sna + jmp seektell i + sad d1 + jmp .+3 + lac i.size + jmp seektell i + lac f.badd + jmp seektell i + +isown: 0 + jms argname + jms iget + lac u.uid + sma + sad i.uid + skp + jms error + jmp isown i + diff --git a/src/sys/s6.s b/src/sys/s6.s new file mode 100644 index 0000000..0072349 --- /dev/null +++ b/src/sys/s6.s @@ -0,0 +1,350 @@ +"** 01-s1.pdf page 34 +" s6 + +itrunc: 0 + -7 + dac 9f+t + lac idskpp + dac 9f+t+1 +1: + lac 9f+t+1 i + sna + jmp 4f + lac i.flags + and o200000 + sna + jmp 3f + -64 + dac 9f+t+2 + lac dskbufp + dac 9f+t+3 +2: + lac 9f+t+1 i + jms dskrd + lac 9f+t+3 i + sza + jms free + isz 9f+t+3 + isz 9f+t+2 + jmp 2b +3: + lac 9f+t+1 i + jms free + dzm 9f+t+1 i +4: + isz 9f+t+1 + isz 9f+t + jmp 1b + lac i.flags + and o577777 + dac i.flags + jmp itrunc i +t = t+4 + +namei: 0 + jms iget + -1 + tad namei i + dac 9f+t+1 + isz namei + lac i.flags + and o20 + sna + jmp namei i + -8 + tad i.size + cma + lrss 3 + dac 9f+t + sna + jmp namei i + dzm di +1: + lac di + +"** 01-s1.pdf page 35 + + jms dget + lac d.i + sna + jmp 2f + lac 9f+t+1 + dac 8 + lac d.name + sad 8 i + skp + jmp 2f + lac d.name+1 + sad 8 i + skp + jmp 2f + lac d.name+2 + sad 8 i + skp + jmp 2f + lac d.name+3 + sad 8 i + skp + jmp 2f + lac d.i + isz namei + jmp namei i +2: + isz di + isz 9f+t + jmp 1b + jmp namei i +t = t+2 + +iget: 0 + dac ii + cll; idiv; 5 + dac 9f+t + lacq + tad d2 + dac 9f+t+1 + jms dskrd + lac 9f+t + cll; mul; 12 + lacq + tad dskbufp + dac 9f+t + dac .+2 + jms copy; ..; inode; 12 + jmp iget i + +iput: 0 + lac 9f+t+1 + jms dskrd + law inode-1 + dac 8 + -1 + tad 9f+t + dac 9 + -12 + dac 9f+t+2 +1: + lac 8 i + +"** 01-s1.pdf page 36 + + sad 9 i + skp + jmp 2f + isz 9f+t+2 + jmp 1b + jmp iput i +2: + -1 + tad 8 + dac 8 + -1 + tad 9 + dac 9 +1: + lac 8 i + dac 9 i + isz 9f+t+2 + jmp 1b + lac 9f+t+1 + jms dskwr + jmp iput i +t = t+3 + +dget: 0 + dac di + alss 3 + dac 9f+t + jms pget + dac 9f+t+1 + jms dskrd + lac 9f+t + and o77 + tad dskbufp + dac 9f+t+2 + dac .+2 + jms copy; ..; dnode; 8 + lac 9f+t + tad d8 + jms betwen; d0; i.size + skp + jmp dget i + jms dacisize + dzm d.i + jmp dget i + +dput: 0 + lac 9f+t+1 + jms dskrd + lac 9f+t+2 + dac .+3 + jms copy; dnode; ..; 8 + lac 9f+t+1 + jms dskwr + jmp dput i + +t = t+3 + +pget: 0 + lrss 6 + dac 9f+t + lac i.flags + +"** 01-s1.pdf page 37 + + and o200000 + sza + jmp 2f + lac 9f+t + jms betwen; d0; d6 + jmp 1f + tad idskpp + dac 9f+t + lac 9f+t i + sna + jms alloc + dac 9f+t i + jmp pget i +1: + jms alloc + dac 9f+t+1 + jms copy; i.dskps; dskbuf; 7 + jms copyz; dskbuf+7; 64-7 + lac 9f+t+1 + jms dskwr + lac 9f+t+1 + dac i.dskps + jms copyz; i.dskps+1; 6 + lac i.flags + xor o200000 + dac i.flags +2: + lac 9f+t + lrss 6 + jms betwen; d0; d6 + jms halt " file too big + tad idskpp + dac 9f+t+1 + lac 9f+t+1 i + sna + jms alloc + dac 9f+t+1 i + dac 9f+t+2 + jms dskrd + lac 9f+t + and o77 + tad dskbufp + dac 9f+t+1 + lac 9f+t+1 i + sza + jmp pget i + jms alloc + dac 9f+t + lac 9f+t+2 + jms dskrd + lac 9f+t + dac 9f+t+1 i + lac 9f+t+2 + jms dskwr + lac 9f+t + jmp pget i +t = t+3 + +iwrite: 0 + dac 9f+t + lac iwrite + +"** 01-s1.pdf page 38 + + dac iread + lac cskp + dac iwrite + jmp 1f + +iread: 0 + dac 9f+t + lac cnop + dac iwrite +1: + -1 + tad iread i + dac 10 + dac 11 + isz iread + lac iread i + dac 9f+t+1 + isz iread + lac o70000 + xct iwrite + lac i.size + cma + tad 9f+t + cma + jms betwen; d0; 9f+t+1 + lac 9f+t+1 + dac 9f+t+2 + cma + tad d1 + sna + jmp iread i + dac 9f+t+1 +1: + lac 9f+t + jms pget + dac 9f+t+3 + jms dskrd + lac 9f+t + and o77 + tad dskbufp + tad dm1 + xct iwrite + jmp .+3 + dac 10 +cskp: + skp + dac 11 +2: + lac 11 i + dac 10 i + isz 9f+t + isz 9f+t+1 + jmp 3f + xct iwrite + jmp 4f + lac 9f+t + jms betwen; d0; i.size + dac i.size + lac 9f+t+3 + jms dskwr + 4: +"** 01-s1.pdf page 38 + lac 9f+t+2 + jmp iread i +3: + lac 9f+t + and o77 + sza + jmp 2b + xct iwrite + jmp 1b + lac 9f+t+3 + jms dskwr + jmp 1b +t = t+4 + +finac: 0 + lac u.ac + jms fget + jms error + lac f.flags + sma + jms error + lac f.i + jms iget + jmp finac i + +dacisize: 0 + dac i.size + jms iput + lac i.size + jmp dacisize i diff --git a/src/sys/s7.s b/src/sys/s7.s new file mode 100644 index 0000000..c5b307b --- /dev/null +++ b/src/sys/s7.s @@ -0,0 +1,367 @@ +"** 01-s1.pdf page 41 +" s7 + +pibreak: + dac .ac "** CROSSED OUT.... + + dpsf + jmp 1f + + dpcf + dprs + dac dpstat + sma ral + jmp 2f + dprc + dac dpchar + -1 + dac dpread + lac dpstat + ral +2: + sma + jmp piret + -1 + dac dpwrite + jmp piret "** END OF CROSSOUT + +1: clsf + jmp 1f + + lpb + dac pbsflgs + isz s.tim+1 + skp + isz s.tim + isz uquant + "** written: ttydelay -> ttyd1 + "** written: ttyrestart -> ttyres1 +cnop: + nop + -1 + dac 7 + clon + lac ttydelay + spa + isz ttydelay + skp + jms ttyrestart + lac .dspb "** START CROSSED OUT: written: lac tty + sna + jmp piret + isz .dsptm + skp + jmp dsprestart + sad d3 + jmp piret + isz .dspb + jmp piret + jmp dsprestart "** END CROSSED OUT + +1: dssf + jmp 1f + + -1 + dac .dskb + +"** 01-s1.pdf page 42 + + dsrs + dac .dske + dscs + jmp piret + +1: lds "** BEGIN CROSSED OUT + sma ral + jmp 1f + cdf + lac .dspb + sna + jmp piret + tad dm3 + sna + jmp dsprestart + dac .dspb + jmp piret +dsprestart: + lac d1 + dac .dspb + lac dspbufp + beg + -10 + dac .dsptm + jmp piret + +1: sna ral + jmp .+3 + dpcf + jmp piret + sma + jmp 1f + lda + dac .lpba + rlpd + jmp piret + +1: ksf + jmp 1f + + lac ttydelay + sma + isz ttydelay + krb + dac char + sad o375 + jmp intrp1 + lac d1 + jms putchar + dzm char + lac sfiles+0 + jms wakeup + dac sfiles+0 + lac char + sad o212 + skp + jmp piret + lac sfiles+1 + sma + xor o400000 + dac sfiles+1 + +"** 01-s1.pdf page 43 + + jms putcr + jms ttyrestart + jmp piret + +1: tsf + jmp 1f + + tcf + jms ttyrestart + jmp piret + +ttyrestart: 0 + lac ttydelay + spa + jmp ttyrestart i + lac nttychar + dzm nttychar + sza + jmp 3f + isz ttydelay + lac d2 + jms getchar + jmp 2f +3: + tls + sad o12 + jms putcr + sad o15 + skp + jmp ttyrestart i + lac ttydelay + tad o20 + rcr + cma + dac ttydelay + jmp ttyrestart i +2: + lac sfiles+1 + jms wakeup + dac sfiles+1 + jmp ttyrestart i "** written arrow up 2 copies + +1: sck "** BEGIN CROSSED OUT + jmp 1f + + cck + lck + dac char + sad o33 + jmp intrp2 + lac d3 + jms putchar + nop + lac sfiles+2 + jms wakeup + dac sfiles+2 + jmp piret + +1: rsf + jmp 1f + + +"** 01-s1.pdf page 44 + + lac npptchar + sna + jmp .+5 + dac char + rrb + dac npptchar + jmp .+3 + rrb + dac char +3: + lac char + sna + jmp 2f + lac d4 + jms putchar + jmp 3f + lac char + sad d4 + jmp 4f +2: + lac npptchar + sna + jmp .+4 + dac char + dzm npptchar + jmp 3b + rsa + lac sfiles+3 + jms wakeup + xor o400000 + dac sfiles+3 + jmp piret +3: + lac char + dac npptchar +4: + lac sfiles+3 + jms wakeup + dac sfiles+3 + jmp piret + +1: psf + jmp 1f + + pcf + lac d5 + jms getchar + jmp .+3 + psa + jmp piret + lac sfiles+4 + jms wakeup + dac sfiles+4 + jmp piret + +1: spb "** BEGIN CROSSED OUT + jmp 1f + + cpb + lpb + dac pbsflgs+1 + +"** 01-s1.pdf page 45 + + and o2000 + sna + jmp piret + jms dspinit + lac sfiles+6 + jms wakeup + dac sfiles+6 + cla + wbl + jmp piret "** END CROSSED OUT + +1: crsf + jmp 1f + + crrb + dac crchar + -1 + dac crread + jmp piret + +1: crrb + +piret: + lac 0 + ral + lac .ac + ion + jmp 0 i + +wakeup: 0 + dac 9f+t + -mnproc + dac 9f+t+1 + lac tadu + dac 2f + lac dacu + dac 2f+1 +1: + lac 9f+t + ral + dac 9f+t + sma + jmp 2f+2 + lac o700000 +2: tad .. + dac .. + lac 2b + tad d4 + dac 2b + lac 2b+1 + tad d4 + dac 2b+1 + isz 9f+t+1 + jmp 1b + cla + jmp wakeup i +t = t+2 + +putcr: 0 + lac o15 + dac nttychar + +"** 01-s1.pdf page 46 + + cla + jmp putcr i + +intrp1: + lac d6 + dac .int1 + lac d1 + jms getchar + skp + jmp .-3 + lac d2 + jms getchar + skp + jmp .-3 + lac sfiles+0 + jms wakeup + dac sfiles+0 + lac sfiles+1 + jms wakeup + dac sfiles+1 + jms chkint + jmp piret + jmp 1f +intrp2: + lac d7 + dac .int2 + lac d3 + jms getchar + skp + jmp .-3 + lac sfiles+2 + jms wakeup + dac sfiles+2 + lac sfiles+6 + jms wakeup + dac sfiles+6 + jms chkint + jmp piret +1: + lac 0 + dac 020 + lac .ac + jmp 021 diff --git a/src/sys/s8.s b/src/sys/s8.s new file mode 100644 index 0000000..7a60623 --- /dev/null +++ b/src/sys/s8.s @@ -0,0 +1,214 @@ +"** 01-s1.pdf page 48 + +" s8 + +" manifests +mnproc = 10 +dspbsz = 270 +ndskbs = 4 + +" flags +.insys: 0 +.int1: 0 +.int2: 0 +.ac: 0 +.savblk: 0 +.dsptm: 0 +.dskb: 0 +.dske: 0 + +" pointers +tadu: tad ulist +dacu: dac ulist +maxquant: 30 +ofilesp: u.ofiles +idskpp: i.dskps +dskbufp: dskbuf +edspbuf: dspbuf+dspbsz +dspbufp3: dspbuf+3 +fblksp: s.fblks +dacq1: dac q1 +lacq1: lac q1 +q2p: q2 + +" strings +initf: + n;t;< > ;< > " + +" constants +d0: 0 +d1: 1 +d2: 2 +d3: 3 +d4: 4 +d5: 5 +d6: 6 +d7: o7: 07 +d8: 8 +d9: 9 +o12: d10: 10 +o14: 014 +o15: 015 +o17: 017 +o20: 020 +o33: 033 +o40: 040 +o55: 055 +o77: 077 +d65:o101: 0101 +d33: 33 +o132: 0132 +o134: 0134 +o137: 0137 +o155: 0155 +o177: 0177 +"** 01-s1.pdf page 49 +o212: 0212 +o375: 0375 +o777: 0777 +o2000: 02000 +o4000: 04000 +d7999: 7999 +o10000: 010000 +o17762: 017762 +o17777: 017777 +o20001: 020001 +o40000: 040000 +o40001: 040001 +o70000: 070000 +o77777: 077777 +o100000: 0100000 +o140000: 0140000 +o200000: 0200000 +o200001: 0200001 +o300000: 0300000 +o400000: 0400000 +o500000: 0500000 +o577777: 0577777 +o600000: 0600000 +o640000: 0640000 +o700000: 0700000 +o777700: 0777700 +o777760: 0777760 +dm3: -3 +dm1: -1 + +9: .=.+t +c1: .=.+1 +q1: q2;q2+90 "** ?? 98 ?? + .=.+14 +q2: + .+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0 + .+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0 + .+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0 + .+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0 + .+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;0;0 +dsploc: .=.+1 +dsplno: .=.+1 +dspbuf: + 0065057;0147740;0160000 + .=.+30 +coldentry: + dzm 0100 " not re-entrant + caf + ion + clon + law 3072 + wcga + jms dspinit + law dspbuf + jms movdsp + cla + jms dskio; 06000 + jms copy; dskbuf; sysdata; ulist-sysdata + lac d3 + jms namei; initf + jms halt +"** 01-s1.pdf page 50 + jms iget + cla + jms iread; 4096; 4096 + jmp 4096 + . = dspbuf+dspbsz+3 +dskbuf = 07700 +dskbs: .=.+65+65+65+65 +edskbsp: . +uquant: .=.+1 +dspbufp: .=.+1 +pbsflgs: .=.+2 +mode: .=.+1 +nttychar: .=.+1 +npptchar: .=.+1 +ttydelay: .=.+1 +name: .=.+4 +lnkaddr: .=.+1 +char: .=.+1 +dskaddr: .=.+1 +uniqpid: 1 +lu: .=.+4 +sfiles: .=.+10 +dpdata: + dpstat: .=.+1 + dpread: .=.+1 + dpwrite: .=.+1 + dpchar: .=.+1 +dspdata: + .dspb: .=.+1 + .lpba: .=.+1 "** 4 written on listing +crdata: + crread: .=.+1 + crchar: .=.+1 +sysdata: + s.nxfblk: .=.+1 + s.nfblks: .=.+1 + s.fblks: .=.+10 + s.uniq: .=.+1 + s.tim: .=.+2 +ulist: + 0131000;1;0;0 + 0031040;0;0;0 + 0031100;0;0;0 + 0031140;0;0;0 + 0031200;0;0;0 + 0031240;0;0;0 + 0031300;0;0;0 + 0031340;0;0;0 + 0031400;0;0;0 + 0031440;0;0;0 +userdata: + u.ac: 0 + u.mq: 0 + u.rq: .=.+9 + u.uid: -1 + u.pid: 1 + u.cdir: 3 + u.ulistp: ulist + u.swapret: 0 + u.base: 0 + u.count: 0 +"** 01-s1.pdf page 51 + u.limit: 0 + u.ofiles: .=.+30 + u.dspbuf: 0 + u.intflg: 1 + .=userdata+64 +ii: .=.+1 +inode: + i.flags: .=.+1 + i.dskps: .=.+7 + i.uid: .=.+1 + i.nlks: .=.+1 + i.size: .=.+1 + i.uniq: .=.+1 + .= inode+12 +di: .=.+1 +dnode: + d.i: .=.+1 + d.name: .=.+4 + d.uniq: .=.+1 + . = dnode+8 +fnode: + f.flags: .=.+1 + f.badd: .=.+1 + f.i: 0 + diff --git a/src/sys/s9.s b/src/sys/s9.s new file mode 100644 index 0000000..044350a --- /dev/null +++ b/src/sys/s9.s @@ -0,0 +1,115 @@ +"** 01-s1.pdf page 53 +" s9 -- cold boot + +. = coldentry+4 + +" zero i-list + + dzm ii + jms copyz; dskbuf; 64 +1: + lac ii + jms dskio; 07000 + isz ii + -710 + tad ii + sza + jmp 1b + +" free rest of disk + +1: + lac ii + jms free + isz ii + -6400 + tad ii + sza + jmp 1b + +" read in tapes + + dzm ii +1: + dzm sum + jms getw " count + sza + jmp .+3 + hlt + jmp 1b " 0 count means pause + dac xx + isz ii + lac ii + jms iget + jms copyz; inode; 12 + jms getw " flags + dac i.flags + -1 + dac i.uid + jms getw " number links + dac i.nlks + -2 + tad xx + dac i.size + lac ii + dac i.uniq + law 4096-1 + dac 8 + -1 + tad i.size + cma + sna + jmp 3f + dac xx + +"** 01-s1.pdf page 54 +2: + jms getw + dac 8 i + isz xx + jmp 2b +3: + lac sum + dac xx + jms getw " checksum + sad xx + skp + jms halt + lac i.size + dac .+4 + cla + jms iwrite; 4096; .. + jms iput + cla + jms dskio; 07000 "** writing on listing + jmp 1b + +getw: 0 + jms getc + alss 12 + lmq + jms getc + alss 6 + omq + lmq + jms getc + omq + lmq + add sum + dac sum + lacq + jmp getw i + +getc: 0 + iof + rsa + rsf + jmp .-1 + rrb + sna + jmp getc+1 + and o77 + ion + jmp getc i +xx: 0 +sum: 0 diff --git a/src/sys/sop.s b/src/sys/sop.s new file mode 100644 index 0000000..22ca2a4 --- /dev/null +++ b/src/sys/sop.s @@ -0,0 +1,97 @@ +"** 01-s1.pdf page 62 +" sop + +dac = 0040000 +jms = 0100000 +dzm = 0140000 +lac = 0200000 +xor = 0240000 +add = 0300000 +tad = 0340000 +xct = 0400000 +isz = 0440000 +and = 0500000 +sad = 0540000 +jmp = 0600000 +nop = 0740000 +i = 020000 +law = 0760000 +cma = 0740001 +las = 0750004 +ral = 0740010 +rar = 0740020 +hlt = 0740040 +sma = 0740100 +sza = 0740200 +snl = 0740400 +skp = 0741000 +sna = 0741200 +szl = 0741400 +rtl = 0742010 +rtr = 0742020 +cil = 0744000 +rcl = 0744010 +rcr = 0744020 +cia = 0750000 +lrs = 0640500 +lrss = 0660500 +lls = 0640600 +llss = 0660600 +als = 0640700 +alss = 0660700 +mul = 0653323 +idiv = 0653323 +lacq = 0641002 +clq = 0650000 +omq = 0650002 +cmq = 0650004 +lmq = 0652000 + +dscs = 0707141 +dslw = 0707124 +dslm = 0707142 +dsld = 0707104 +dsls = 0707144 +dssf = 0707121 +dsrs = 0707132 + +iof = 0700002 +ion = 0700042 +caf = 0703302 +clon = 0700044 +clsf = 0700001 + +"** 01-s1.pdf page 63 +clof = 0700004 +ksf = 0700301 +krb = 0700312 +tsf = 0700401 +tcf = 0700402 +tls = 0700406 +sck = 0704301 +cck = 0704304 +lck = 0704312 +rsf = 0700101 +rsa = 0700104 +rrb = 0700112 +psf = 0700201 +pcf = 0700202 +psa = 0700204 +cdf = 0700501 +lds = 0701052 +lda = 0701012 +wcga = 0704206 +raef = 0700742 +rlpd = 0700723 +beg = 0700547 +spb = 0704401 +cpb = 0704404 +lpb = 0704412 +wbl = 0704424 +dprs = 0704752 +dpsf = 0704741 +dpcf = 0704761 +dprc = 0704712 +crsf = 0706701 +crrb = 0706712 + diff --git a/src/sys/sysmap b/src/sys/sysmap new file mode 100644 index 0000000..07bd2e5 --- /dev/null +++ b/src/sys/sysmap @@ -0,0 +1,264 @@ +"** 01-s1.pdf page 57 -- system assembly map +. 004671 r +.ac 004012 r +.chown 000426 r +.capt 000404 r +.creat 000665 r +.chdir 000622 r +.chmod 000414 r +.dskb 004105 r +.dspb 005547 r +.dsptm 004104 r +.dske 004106 r +.exit 001170 r +.fork 001116 r +.getuid 000433 r +.halt 001343 r +.int1 004100 r +.insys 004077 r +.int2 004101 r +.intrp 000257 r +.link 000474 r +.lpba 005550 r +.open 000633 r +.rmes 001204 r +.rele 000410 r +.rename 000547 r +.read 000731 r +.smes 001232 r +.savblk 004103 r +.sysloc 000262 r +.setuid 000566 r +.status 000352 r +.save 001156 r +.seek 000436 r +.tell 000466 r +.time 000615 r +.unlink 000547 r +.write 001000 r +access 002323 r +alloc 001556 r +argname 002642 r +arg 002636 r +awake 001311 r +badcal 001153 r +betwen 001654 r +c1 004270 r +chkint 000320 r +chkink1 001546 r +char 005522 r +cnop 003453 r +coldentr 004520 r +copyz 001723 r +collapse 002066 r +copy 001700 r +crdata 005551 r +crchar 005552 r +crread 005551 r +cskp 003346 r +d.name 005761 r +d.uniq 005765 r +d.i 005760 r +"** 01-s1.pdf page 58 +d0 004127 r +d10 004141 r +d1 004130 r +d2 004131 r +d33 004153 r +d3 004132 r +d4 004133 r +d5 004134 r +d6 004135 r +d65 004155 r +d7999 004166 r +d7 004136 r +d8 004137 r +d9 004140 r +dacq1 004120 r +dacu 004110 r +dacisize 003413 r +dget 003115 r +di 005757 r +dm1 004215 r +dm3 004214 r +dnode 005760 r +dpdata 005543 r +dput 003147 r +dpchar 005546 r +dpwrite 005545 r +dpstat 005543 r +dpread 005544 r +dskbufp 004114 r +dskio 002173 r +dspdata 005547 r +dskrd 002127 r +dsktrans 002231 r +dsploc 004455 r +dslot 002474 r +dspino 004456 r +dspbufp3 004116 r +dspbufp 005506 r +dspresta 003523 r +dskaddr 005523 r +dskbs 005100 r +dskwr 002157 r +dspput 002551 r +dspleft 002573 r +dspbuf 004457 r +error 001542 r +exitrw 001041 r +f.badd 005771 r +f.flags 005770 r +fassign 002340 r +fallr 002436 r +fblksp 004117 r +fget 002371 r +finac 003401 r +fnode 005770 r +"** 01-s1.pdf page 59 +forall 002434 r +fput 003413 r +free 001615 r +getchar 001756 r +getw 004635 r +getc 004654 r +halt 002265 r +i.flags 005743 r +i.dskps 005744 r +i.uniq 005756 r +i.size 005755 r +i.nlks 005754 r +i.uid 005753 r +icreat 002506 r +idskpp 004113 r +iget 003030 r +ii 005742 r +inode 005743 r +intrp1 004032 r +intrp2 004055 r +initf 004123 r +iput 003057 r +iread 003277 r +isown 002675 r +itrunc 002706 r +iwrite 003270 r +laci 001646 r +lacq1 004121 r +lnkaddr 005521 r +lookfor 001073 r +locsw 000275 r +locn 000317 r +lu 005525 r +maxquant 004111 r +mode 005511 r +movdsp 002626 r +name 005515 r +namei 002750 r +npptchar 005513 r +nttychar 005512 r +o10000 004167 r +o17 004144 r +o177 004160 r +o101 004152 r +o17762 004170 r +o17777 004171 r +o12 004141 r +o132 004154 r +o134 004155 r +o137 004156 r +o100000 004177 r +o140000 004200 r +o14 004142 r +o15 004143 r +0155 004157 r +o2000 004164 r +o200001 004262 r +o20001 004172 r +020 004145 r +o212 004161 r +o200000 004201 r +"** 01-s1.pdf page 60 +o375 004162 r +o33 004146 r +o300000 004203 r +o4000 004165 r +o40000 004173 r +o40 004147 r +o400000 004204 r +o500000 004205 r +o55 004150 r +o577777 004206 r +o600000 004207 r +o640000 004210 r +o777 004163 r +o77 004157 r +o70000 004175 r +o77777 004176 r +o777760 004213 r +o7 004136 r +o700000 004211 r +o777700 004212 r +ofilesp 004112 r +okexit 000102 r +open1 000722 r +orig 000000 r +passone 001534 r +pbsflgs 005507 r +pget 003163 r +piret 003766 r +pibreak 003420 r +putchar 001741 r +putq 002022 r +putcr 004025 r +q1 004271 r +q2p 004122 r +q2 004311 r +rkbdi 001415 r +rppti 001472 r +rttyi 001344 r +s.tim 005570 r +s.nxfblk 005553 r +s.uniq 005567 r +s.nfblks 005554 r +s.fblks 005555 r +seektell 002656 r +searchu 001047 r +sfiles 005551 r +sleep 002445 r +srcdbs 002046 r +sum 004670 r +swr 001331 r +swp 000220 r +swn 000256 r +sww 001331 r +swap 000136 r +sysdata 005553 r +sysexit 000103 r +takeq 001770 r +tadu 004107 r +ttydelay 005514 r +ttyresta 003603 r +"** 01-s1.pdf page 61 +u.dspbuf 005723 r +u.intflg 005724 r +u.ulistp 005660 r +u.pid 005656 r +u.ofiles 005665 r +u.swapre 005661 r +u.mq 005643 r +u.uid 005655 r +u.ac 005642 r +u.limit 005664 r +u.cdir 005657 r +u.count 005663 r +u.base 005662 r +u.rq 005644 r +ulsit 005562 r +uniqpid 005524 r +uquant 005505 r +userdata 005642 r +wakeup 003773 r +wdspo 001462 r +wppto 001506 r +wttyo 001364 r +xx 004667 r