From ab38b0e2638a6a8c9a3adee3a576550c98c29dc0 Mon Sep 17 00:00:00 2001 From: phil Date: Mon, 28 Oct 2019 22:41:31 -0400 Subject: [PATCH 1/6] use explicit octal uid values in proto to match password file, list output make fsck output octal too --- build/alt/proto | 8 ++++---- build/proto | 44 ++++++++++++++++++++++---------------------- tools/fsck7 | 4 ++-- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/build/alt/proto b/build/alt/proto index 0e135fe..6d21b0d 100644 --- a/build/alt/proto +++ b/build/alt/proto @@ -9,7 +9,7 @@ # link l---- inumber # # The top directory's name is ignored -# Numeric values are in decimal +# numbers are in decimal (-1 for inode means last) # Contents of each directory ends with a $ on a line by itself # Format was inspired by 6th Edition mkfs # @@ -41,10 +41,10 @@ sh frwr- -1 bin/sh stat frwr- -1 bin/stat $ - ken drwr- 10 + ken drwr- 012 system l---- 3 - hello frwr- 10 fs/hello + hello frwr- 012 fs/hello $ - dmr drwr- 12 + dmr drwr- 014 system l---- 3 $ diff --git a/build/proto b/build/proto index b57d99d..31a1120 100644 --- a/build/proto +++ b/build/proto @@ -7,7 +7,7 @@ # link l---- inumber # # The top directory's name is ignored -# Numeric values are in decimal +# numbers are in decimal (-1 for inode means last) # Contents of each directory ends with a $ on a line by itself # Format was inspired by 6th Edition mkfs # @@ -69,28 +69,28 @@ dd drwr- -1 4 $ - ken drwr- 10 + ken drwr- 012 system l---- 3 - sop.s frwr- 10 ../src/sys/sop.s - s1.s frwr- 10 ../src/sys/s1.s - s2.s frwr- 10 ../src/sys/s2.s - s3.s frwr- 10 ../src/sys/s3.s - s4.s frwr- 10 ../src/sys/s4.s - s5.s frwr- 10 ../src/sys/s5.s - s6.s frwr- 10 ../src/sys/s6.s - s7.s frwr- 10 ../src/sys/s7.s - s8.s frwr- 10 ../src/sys/s8.s - maksys.s frwr- 10 ../src/sys/maksys.s - trysys.s frwr- 10 ../src/sys/trysys.s - sys.rc frwr- 10 fs/sys.rc + sop.s frwr- 012 ../src/sys/sop.s + s1.s frwr- 012 ../src/sys/s1.s + s2.s frwr- 012 ../src/sys/s2.s + s3.s frwr- 012 ../src/sys/s3.s + s4.s frwr- 012 ../src/sys/s4.s + s5.s frwr- 012 ../src/sys/s5.s + s6.s frwr- 012 ../src/sys/s6.s + s7.s frwr- 012 ../src/sys/s7.s + s8.s frwr- 012 ../src/sys/s8.s + maksys.s frwr- 012 ../src/sys/maksys.s + trysys.s frwr- 012 ../src/sys/trysys.s + sys.rc frwr- 012 fs/sys.rc $ - dmr drwr- 12 + dmr drwr- 014 system l---- 3 - as.s frwr- 12 ../src/cmd/as.s - b_readme frwr- 12 fs/b_readme - bi.s frwr- 12 ../src/cmd/bi.s - bl.s frwr- 12 ../src/cmd/bl.s - db.s frwr- 12 ../src/cmd/db.s - hello.b frwr- 12 ../src/other/hello.b - ops.s frwr- 12 ../src/other/ops.s + as.s frwr- 014 ../src/cmd/as.s + b_readme frwr- 014 fs/b_readme + bi.s frwr- 014 ../src/cmd/bi.s + bl.s frwr- 014 ../src/cmd/bl.s + db.s frwr- 014 ../src/cmd/db.s + hello.b frwr- 014 ../src/other/hello.b + ops.s frwr- 014 ../src/other/ops.s $ diff --git a/tools/fsck7 b/tools/fsck7 index 968ae0d..85dd789 100755 --- a/tools/fsck7 +++ b/tools/fsck7 @@ -213,8 +213,8 @@ sub print_direntry { # Warn about empty filename $name= "EMPTY FILENAME" if ($name=~ m{/$}); - printf( "%4d %s%s%s%s%s %2d %3d %5d %s\n", - $inum, $p1, $p2, $p3, $p4, $p5, $links, $uid, $size, $name ); + printf( "%4d %s%s%s%s%s %2d %3o %5d %s\n", + $inum, $p1, $p2, $p3, $p4, $p5, $links, $uid & 0777, $size, $name ); } # Given a directory's i-num and name, check it From 4ffabd8bdf8eb5c00e4e3a956a95bad624d28a6b Mon Sep 17 00:00:00 2001 From: phil Date: Mon, 28 Oct 2019 22:46:48 -0400 Subject: [PATCH 2/6] add tmg to src/cmd and image add doug user to image, put tmg sources there fix an as7 bug found by tmg --- build/fs/password | 1 + build/proto | 11 ++ src/cmd/t1.s | 69 ++++++++ src/cmd/t2.s | 411 ++++++++++++++++++++++++++++++++++++++++++++++ src/cmd/t3.s | 263 +++++++++++++++++++++++++++++ src/cmd/t4.s | 112 +++++++++++++ src/cmd/t5.s | 118 +++++++++++++ src/cmd/t6.s | 165 +++++++++++++++++++ src/cmd/t7.s | 126 ++++++++++++++ src/cmd/t8.s | 58 +++++++ tools/as7 | 4 +- 11 files changed, 1336 insertions(+), 2 deletions(-) create mode 100644 src/cmd/t1.s create mode 100644 src/cmd/t2.s create mode 100644 src/cmd/t3.s create mode 100644 src/cmd/t4.s create mode 100644 src/cmd/t5.s create mode 100644 src/cmd/t6.s create mode 100644 src/cmd/t7.s create mode 100644 src/cmd/t8.s diff --git a/build/fs/password b/build/fs/password index 9548543..282ca02 100644 --- a/build/fs/password +++ b/build/fs/password @@ -1,3 +1,4 @@ system:system:system:777777 ken:ken:ken:12 dmr:dmr:dmr:14 +doug:doug:doug:15 diff --git a/build/proto b/build/proto index 31a1120..05c3b13 100644 --- a/build/proto +++ b/build/proto @@ -94,3 +94,14 @@ dd drwr- -1 4 hello.b frwr- 014 ../src/other/hello.b ops.s frwr- 014 ../src/other/ops.s $ + doug drwr- 015 + system l---- 3 + t1.s frwr- 015 ../src/cmd/t1.s + t2.s frwr- 015 ../src/cmd/t2.s + t3.s frwr- 015 ../src/cmd/t3.s + t4.s frwr- 015 ../src/cmd/t4.s + t5.s frwr- 015 ../src/cmd/t5.s + t6.s frwr- 015 ../src/cmd/t6.s + t7.s frwr- 015 ../src/cmd/t7.s + t8.s frwr- 015 ../src/cmd/t8.s + $ diff --git a/src/cmd/t1.s b/src/cmd/t1.s new file mode 100644 index 0000000..4e6d9d1 --- /dev/null +++ b/src/cmd/t1.s @@ -0,0 +1,69 @@ +"** 13-120-147.pdf page 5 +t=0 +main: + lac 017777 i + sad d4 + jmp 2f + sad d8 + jmp 1f + law 9 + tad 017777 + dac 0f + law 017 + sys creat;0:0 + dac output +1:law 5 + tad 017777 + dac 0f + sys open;0:0;0 + dac input + spa + sys exit +2: + jms advance; jmp 1f + jmp rinterp + +0:lac 2f + jms obuild +1:lac owrite + spa + jmp 0b + jms oflush + las + spa + sys exit + sys save +2:o777 + + +"special machine language code + +"puts out and octal strin g from symtab entry + +symoct: + lac equ + add equbot + dac 9f+t + lac 1f + jms twoktab; lac 9f+t i +1:gf .+1 x + lac ii + dac 8 + lac 8 i + add symbot + dac 9f+t + +2:lac 9f+t i + jms putoct + lac onenl + jms obuild + lac 9f+t i + and o600600 + sza "skip unless word contained eof (0777) + jmp ggoon + +"** 13-120-147.pdf page 6 + isz 9f+t + jmp 2b +t=t+1 +o600600:0600600 diff --git a/src/cmd/t2.s b/src/cmd/t2.s new file mode 100644 index 0000000..53ba357 --- /dev/null +++ b/src/cmd/t2.s @@ -0,0 +1,411 @@ +"** 13-120-147.pdf page 7 +" recognition stack frame advance + +advance:0 + lac frame + dac 8 + lac advance i + dac 8 i + lac ii + dac 8 i + lac ignore + dac 8 i + lac j + dac 8 i + lac k + dac 8 i + lac frame + dac nframe i + lac nframe + dac frame + add dffrmsz + dac nframe + dac nframe + jms between; add rbot; add rtop + jms halt + isz advance + jmp advance i + +retreat: + dzm junk + lac gflag + sza + jmp 1f + jms bundlep + dac junk +1:lac frame + dac nframe + lac frame i + dac frame + dac 8 + lac 8 i + dac 3f "retrun address + lac 8 i + dac ii + lac 8 i + dac ignore + lac fflag + sna + jmp 2f + lac 8 i "restore j and k on failure + dac j + lac 8 i + dac k +2:lac junk + sna + jmp 3f + dac nframe i "stass reslts + isz nframe +3:jmp + +" bundle up results and return single pointer to them in ac +" return 0 if no results + +"** 13-120-147.pdf page 8 +bundlep:0 + lac fflag + sza + jmp 2f "no results on failure + jms nframe0 + dac 9f+t + cma + tad nframe + cma + dac 9f+t+1 + sma + jmp 2f + sad m1 + jmp 3f "only one result, no bundling necessary + lac 9f+t + tad m1 + dac 8 + +1:lac 8 i + jms kput + isz 9f+t+1 + jmp 1b + lac k "make up result pointer + add l.gk + jmp bundlep i + +2:cla + jmp bundlep i +3:lac 9f+t i + jmp bundlep i +t=t+1 "where to find results +t=t+1 "negative of result count + +" the main interpreter loop +" locate original value of nframe for present stack level. +nframe0:0 + jms s1get; add d.ii + dac junk + lac junk i + dac junk + lac junk i + and opmask + sad l.rw + jmp 1f + lac refrsz + jmp 2f +1:lac junk i + and o17777 +2:add frame + jmp nframe0 i + +halt:0 + lac 1f + jms obuild + lac halt + jms putoct + lac onenl + jms obuild + xct rstack+1 +1:.+1;012077;end + +"** 13-120-147.pdf page 9 +rinterp: + las "trace check + and d5 + sna + jmp .+3 + lac bugr + jms bug + + lac fflag + ral + lac ii i + and opmask + sad l.ra + jmp rera + sad l.rb + jmp rerb + szl + jmp retreat + lrs 14 + and o17 + add rbranch + dac .+1 + jmp + +rbranch: + jmp .+1 i + reno + rerx + rerc + regc + rerf + rerw + rera + reuu + rero + rerm + rers + rerv + reuu + reuu + reuu + reuu + +reuu: + jms halt + +rerb: + cml +rera: + dzm fflag + snl + jmp goon + jms aget + dac ii + jmp rinterp + +backup: + lac jsav + dac j +nuts: + law + +"** 13-120-147.pdf page 10 + dac fflag + +reno: +goon: + lac ii i + isz ii + and exitmask + sza + jmp retreat + jmp rinterp + + +rerw: + jms aget + add frame + dac nframe + jmp goon + +rerc: + jms advance; jmp goon + jms aget + dac ii + jmp rinterp + + +gegf: +rerf: + jms aget + add ljmp + dac .+1 + jmp + +rerx: + lac j + dac jsav + jms aget +1:dac 9f+t + jms lchar + sad o777 + jmp goon + dac 9f+t+1 + jms getj +sad 9f+t+1 + jmp 2f + jmp backup +2:lac 9f+t + add o400000 + jmp 1b +t=t+1 "address of next comparison char +t=t+1 "character itself + +aget:0 + lac ii i + and o17777 + jmp aget i + +regc: + lac ii i + and o757777 + xor exitmask + dac nframe i + +"** 13-120-147.pdf page 11 + isz nframe + jmp goon + +kput:0 + isz k + dac junk1 + lac k + jms between; add d0; add kmax + jms halt + add kbot + dac junk + lac junk1 + dac junk i + jmp kput i + +s0get:0 + lac frame + xct s0get i + dac junk + lac junk i + isz s0get + jmp s0get i + +s1get:0 + lac frame i + xct s1get i + dac junk + lac junk i + isz s1get + jmp s1get i + +s0put:0 + lmq + lac frame + xct s0put i + dac junk + lacq + dac junk i + isz s0put + jmp s0put i +" here is the generaion interpreter +" the k table cant move while its active + +geno: +ggoon: + lac ii i + isz ii + and exitmask + sza + jmp retreat +ginterp: + las "trace check + and d6 + sna + jmp .+3 + lac bugg + jms bug + + lac ii i + lrss 14 + and o7 + +"** 13-120-147.pdf page 12 + add gbranch + dac .+1 + jmp + +gbranch: + jmp .+1 i + geno + gegx + geuu + gegc + gegf + gegk + gegp + gegq + +geuu: + jms halt + +gegx: + lac ii i + and o417777 + jms obuild + jmp ggoon + +gegq: + jms advance; jmp ggoon + lac env + add d.ii + dac junk + jms aget + add junk i + dac junk + lac junk i + dac ii + lac env + add d.env + dac junk + lac junk i + dac env + jmp ginterp + +gegp: + jms advance; jmp ggoon + lac env + add d.ii + dac junk + lac frame i + dac env + jms aget +cma + add junk i + dac ii + jmp ginterp + +gegk: + lac ii i + jms aget + add kbot + dac ii + jms s0put; add d.ii + lac frame + +"** 13-120-147.pdf page 13 + dac env + jmp ginterp + +gegc: + jms advance; jmp ggoon + jms aget + dac ii + jmp ginterp + +bug:0 + dac 1f+2 + lac onenl + jms obuild + lac ii + jms putoct + lac ii i + lrs 14 + and o17 + add 1f+2 + dac 1f+2 + lac 1f+2 i + dac 1f+2 + lac 1f + jms obuild + lac ii i + jms putoct + las + and d4 + sza + jms halt + jmp bug i + +1:0400000 .+1; 040; 0; 040777 diff --git a/src/cmd/t3.s b/src/cmd/t3.s new file mode 100644 index 0000000..96242c0 --- /dev/null +++ b/src/cmd/t3.s @@ -0,0 +1,263 @@ +"** 13-120-147.pdf page 14 +move: 0 + dac 9f+t + lac move i +1:dac 2f + lac 9f+t + jms lchar + dac 9f+t+1 + jms dchar +2: 0 + lac 9f+t+1 + sad o777 + jmp 3f + lac o400000 + add 9f+t + dac 9f+t + lac o400000 + add 2b + jmp 1b + +3:isz move + lac 2b + jmp move i +t=t+1 "source address +t=t+1 "source character + +lchar:0 + dac junk + ral + lac junk i + snl + lrs 9 + and o777 + jmp lchar i + +dchar:0 + lmq + lac dchar i + dac junk + spa + jmp 1f + llss 9 + lac o777 + jmp .+2 +1:0777000 + and junk i + omq + dac junk i + isz dchar + jmp dchar i + + +" gets designated character from input +jget:0 +1:lac j + jms cbetween; add jmin; add jmax + jmp jmore + cma + add jmin + cma + add jbot + jms lchar + jms class; add ignore + +"** 13-120-147.pdf page 15 + jmp jget i + lac j + add o400000 + dac j + jmp 1b + +" read more input - filthy code, enough to make disk & +" terminal input work. Theae only deliver full count +" except at eof or 1 word + +jmore: +and o377700 + dac jmin + add ljsiz + dac 9f+t + lac jmax + jms cbetween; add jmin; add 9f+t + lac jmin + dac jmax + dac 1f + cma + add jmin + cma + add jbot + dac 2f + lac input + sys seek +1:0;0 + -1 + dac 2f i + lac input + sys read +2:0;jsiz + sna + lac d1 + add jmax + dac jmax + jmp jget+1 +t=t+1 + +" gets next character from input + +getj:0 + lac j + jms jget + dac junk + lac j + add o400000 + dac j + lac junk + jmp getj i + +" compare two strings - assume both left justified + +comp:0 + dac 9f+t + lac comp i + dac 9f+t+1 + isz comp +1:lac 9f+t i + sad 9f+t+1 i + +"** 13-120-147.pdf page 16 + jmp 3f + and 9f+t+1 i "do both start with eof? + spa +2:isz comp + jmp comp i +3:and o600600 "is there an eof? + sza + jmp 2b + isz 9f+t + isz 9f+t+1 + jmp 1b +t=t+1 "address of string 1 +t=t+1 "address of string 2 + + +obuild:0 + lmq + lac owrite + add obot + dac 2f + lacq +1:jms move +2:0 + cma + add obot + cma + dac owrite + jms cbetween; add d0; add omax + skp + jmp obuild i + + lac lochunk + jms oflush + lac obot + dac 2b + add lochunk + jmp 1b + +oflush:0 + dac 2f + lac obot + dac 1f + lac output + sys write +1:0 +2:0 + jmp oflush i + +" outputs octal string from sesignated value + +octal: + isz ii + lac ii i + dac 2f + lac 1f + jms twoktab + lac 2f i + +1:gf geoctal x +2:0 + +"** 13-120-147.pdf page 17 +geoctal: + lac ii + dac 8 + lac 8 i + jms putoct + jmp ggoon + + +" converts word in ac into ocatl on output stream + +putoct:0 + dac 9f+t + lac 7f + jms obuild + dzm 9f+t+2 + -6 + dac 9f+t+1 + +1:lac 9f+t + cll + lrs 15 + add o60 + dac 8f+1 + lls 18 + dac 9f+t + lac 9f+t+2 "have nonzero digits been seen? + sza + jmp 2f + lac 8f+1 "no,is this nonzero? + sad o60 + jmp 3f "no +2:lac 8f + jms obuild + law + dac 9f+t+2 +3:isz 9f+t+1 + jmp 1b + jmp putoct i +t=t+1 "value to convert +t=t+1 "digit count +t=t+1 "nonzero digit flag +7: .+1; 060777 +8:0400000 .+1;0;end + + +eof: + lac j + dac jsav + jms jget + sad o777 + jmp goon + jmp backup +class:0 + dac junk1 + lrss 7 + sza + jmp 2f + lls 3 + xct class i + isz class + dac junk + +"** 13-120-147.pdf page 18 + cla + llss 4 + add l.llss + dac 1f + lac junk i +1:llss + spa +2:isz class + lac junk1 + jmp class i diff --git a/src/cmd/t4.s b/src/cmd/t4.s new file mode 100644 index 0000000..9c0df2e --- /dev/null +++ b/src/cmd/t4.s @@ -0,0 +1,112 @@ +"** 13-120-147.pdf page 19 +" put symbuf symbol into table + +table: + lac equwrite + dac equ + jms between; add d0; add equmax + jms halt + add delta + dac equwrite + lac equ + add equbot + tad m1 + dac 8 + lac symwrite + dac 8 i + add symbot + dac 2f + lac mdelta +1:dzm 8 i + tad d1 + spa + jmp 1b + lac sbbot + jms move +2:0 + add o400000 + cma +add symbot + cma + add o400000 + and o17777 + dac symwrite + jms between; add d0; add symmax + jms halt + jmp goon + +" find occurrence of symbuf symbol in equtab + +prev: + lac equ + jmp find+1 +find: + lac equwrite + dac 9f+t + lac o777 + jms sbput + lac sbbot + dac 2f +1:lac 9f+t + tad mdelta + dac 9f+t + spa + jmp nuts + add equbot + dac junk + lac junk i + add symbot + jms comp +2:0 + jmp 1b + lac 9f+t + dac equ + +"** 13-120-147.pdf page 20 + jmp goon +t=t+1 "next equtab location to test + +sbput:0 + lmq + lac sbwrite + add sbbot + dac 1f + lacq + jms dchar +1:0 + lac sbwrite + add o400000 + dac sbwrite + jms cbetween; add d0; add sbmax + jms halt + jmp sbput i + +getname: + lac equ + add equbot + dac 9f+t + lac 1f + jms twoktab; lac 9f+t i + +1:gf .+1 x + lac ii + dac 8 + lac 8 i + add symbot + and o17777 + jms obuild + jmp ggoon +t=t+1 "equtable entry + +" puts double word entries in ktab and gives +"pointer to first as result + +twoktab:0 + jms kput + lac l.gk + add k +dac nframe i + isz nframe + xct twoktab i + jms kput + jmp goon diff --git a/src/cmd/t5.s b/src/cmd/t5.s new file mode 100644 index 0000000..8fe775e --- /dev/null +++ b/src/cmd/t5.s @@ -0,0 +1,118 @@ +"** 13-120-147.pdf page 21 +char: + lac j + dac jsav + isz ii + jms ctest + jmp backup + jmp goon + +string: + isz ii + jms ctest + jmp goon + jmp string+1 + +ctest:0 + jms jget + jms class; add ii i + jmp ctest i + jms sbput + lac j + add o400000 + dac j + isz ctest + jmp ctest i + +mark: + jms jget + dzm sbwrite + jmp goon + +parsedo: + isz ii + jms advance; jmp 3f + jms advance; jmp 1f + jms aget + dac ii + jmp rinterp + +1:lac frame + add refrsz + dac ii + sad nframe + jmp retreat + dac gflag + lac gefrsz + dac dffrmsz + jms advance; jmp 2f + jmp ginterp + +2:lac refrsz + dac dffrmsz + add frame + dac nframe + dzm gflag + jmp retreat + +3:jms s0get; add d.k + dac k + jmp goon + +bundle: + jms bundlep + +"** 13-120-147.pdf page 22 + dac 9f+t + sna + jmp goon + jms nframe0 + dac nframe + lac 9f+t + dac nframe i + isz nframe + jmp goon +t=t+1 + +" jms between;add a; add b; skip if a<=ac= 100 + spa "= 101 + jmp 1f "> 110 + lac d1 "a>b, code 001 + jmp 3f +1:lac d2 "a;;;;;;; + ;;; +bugg:.+1;;;;;;;; + +o17:017 +o60:060 +o77:077 +o777:0777 + +o417777:0417777 +o400000:0400000 +o740000:0740000 +o377700:0377700 +o17777:017777 + +"** 13-120-147.pdf page 27 +o757777:0757777 +o600600:0600600 + +junk:0 +junk1:0 + +output:1 +input:0 + +stbit:st +fibit:fi +holdlv:0 +rand1:0 +rand2:0 + + +symwrite:0 +symbot: symtab +symsiz = 500 +symmax:symsiz + +equwrite:0 +equread:0 +equ = equread +equbot: equtab +equsiz = 500 +equmax: equsiz +delta: 2 +mdelta:0-2 + +sbsiz=50 +sbmax:sbsiz +sbwrite:0 +sbbot:sbbuf + +fflag:0 +gflag:0 +ignore:.+1;0400000;0;0;0;0;0;0;4 +frame:rstack +nframe:rstack+6 +env = ignore +d.ii = d2 +d.env = d3 +d.blkmod = d3 +d.j = d4 +d.k = d5 +dffrmsz:6 +framsiz:4 +refrsz = d6 +gefrsz = d4 +ii: start +k:0 + +rsiz = 500 +rmax: rsiz +rbot:rstack +rtop:rstack+rsiz + +owrite:0 +obot:obuf +osiz=64 diff --git a/src/cmd/t8.s b/src/cmd/t8.s new file mode 100644 index 0000000..db67d3a --- /dev/null +++ b/src/cmd/t8.s @@ -0,0 +1,58 @@ +"** 13-120-147.pdf page 28 +" op.s is the op code defination file +" for the assembler +" no iot ops are defined +" system cal entries are defined +" +dac = 0040000 +jms = 0100000 +dzm = 0140000 +lac = 0200000 +xor = 0240000 +add = 0300000 +tad = 0340000 +xct = 0400000 +isz = 0440000 +and = 0500000 +sad = 0540000 +jmp = 0600000 +eae = 0640000 +i = 020000 +opr = 0740000 +law = opr i +cma = opr 1 +cml = opr 2 +ral = opr 010 +rar = opr 020 +sma = opr 0100 +sza = opr 0200 +snl = opr 0400 +skp = opr 01000 +spa = opr 01100 +sna = opr 01200 +szl = opr 01400 +cll = opr 04000 +cla = opr 010000 +las = opr 010004 +lrs = eae 0500 +lrss = i lrs +lls = eae 0600 +llss = i lls +als = eae 0700 +alss = i als +lacq = eae 01002 +lacs = eae 01001 +clq = eae 010000 +omq = eae 2 +cmq = eae 4 +lmq = eae 012000 + +sys = i +save = 1 +open = 3 +read = 4 +write = 5 +creat = 6 +seek = 7 +close = 9 +exit = 14 diff --git a/tools/as7 b/tools/as7 index f0d194e..f476b17 100755 --- a/tools/as7 +++ b/tools/as7 @@ -294,7 +294,7 @@ sub set_label # An error to have different values if ( defined( $Glabel{$label} ) && $Glabel{$label} != $loc ) { # non-fatal: as.s doesn't even warn!!!! - print STDERR "$file:$lineno: Global label $label multiply defined\n" + print STDERR "$file:$lineno: NOTE: Global label $label multiply defined (not an error)\n" if ($stage == 2); } else { @@ -398,7 +398,7 @@ sub parse_line { return if (eol()); - if ( $line =~ s{^(\S+)\s*=}{}) { # assignment + if ( $line =~ s{^([^;= \t]+)\s*=}{}) { # assignment my $lhs = $1; my $word = parse_expression(); printf( "Setting variable %s to 0%o\n", $lhs, $word ) if ($debug); From 4c0eee2fbf57a9e9a549ec27e0c0a16051902b54 Mon Sep 17 00:00:00 2001 From: phil Date: Mon, 28 Oct 2019 22:51:28 -0400 Subject: [PATCH 3/6] fix g2tty comments in unixv0.simh files --- build/alt/unixv0.simh | 3 +-- build/unixv0.simh | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/build/alt/unixv0.simh b/build/alt/unixv0.simh index 53827e0..6b95dbd 100644 --- a/build/alt/unixv0.simh +++ b/build/alt/unixv0.simh @@ -12,8 +12,7 @@ set tti unix set rb ena att rb alt/image.fs -# uncomment to TELNET in GRAPHICS-2 keyboard/display(!!) -# (requires github.com/philbudne/simh) +# enable TELNET in GRAPHICS-2 keyboard/display(!!) set g2in ena att -U g2in 12345 diff --git a/build/unixv0.simh b/build/unixv0.simh index 297ef35..1d22504 100644 --- a/build/unixv0.simh +++ b/build/unixv0.simh @@ -12,8 +12,7 @@ set tti unix set rb ena att rb image.fs -# uncomment to TELNET in GRAPHICS-2 keyboard/display(!!) -# (requires github.com/philbudne/simh) +# enable TELNET in GRAPHICS-2 keyboard/display(!!) set g2in ena att -U g2in 12345 From 094766a16703a7e66f2d0c9137f984f7185a8b4b Mon Sep 17 00:00:00 2001 From: phil Date: Mon, 28 Oct 2019 22:52:22 -0400 Subject: [PATCH 4/6] build/Makefile: turn of "implicit" warnings for b.c compilation --- build/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Makefile b/build/Makefile index 2fcf76a..ebd95ea 100644 --- a/build/Makefile +++ b/build/Makefile @@ -8,7 +8,7 @@ ASARGS=--format=ptr MKFS=../tools/mkfs7 A7OUT=../tools/a7out FSCK=../tools/fsck7 -CCARGS=-Wno-multichar +CCARGS=-Wno-multichar -Wno-implicit PDP7=pdp7 # source dirs From 917cde269341bbed350a951aba31b77ae3a7bdc4 Mon Sep 17 00:00:00 2001 From: phil Date: Mon, 28 Oct 2019 23:59:25 -0400 Subject: [PATCH 5/6] add op.s from scans to src/cmd --- src/cmd/op.s | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 src/cmd/op.s diff --git a/src/cmd/op.s b/src/cmd/op.s new file mode 100644 index 0000000..1d29305 --- /dev/null +++ b/src/cmd/op.s @@ -0,0 +1,101 @@ +"** 09-1-35.pdf page 35 +" op + +sys = 0020000 +dac = 0040000 +jms = 0100000 +dzm = 0140000 +lac = 0200000 +xor = 0240000 +add = 0300000 +tad = 0340000 +xct = 0400000 +isz = 0440000 +and = 0500000 +sad = 0540000 +jmp = 0600000 +law = 0760000 + +nop = 0740000 +cma = 0740001 +cml = 0740002 +oas = 0740004 +ral = 0740010 +rar = 0740020 +hlt = 0740040 +sma = 0740100 +sza = 0740200 +snl = 0740400 +skp = 0741000 +spa = 0741100 +sna = 0741200 +szl = 0741400 +rtl = 0742010 +rtr = 0742020 +cll = 0744000 +stl = 0744002 +rcl = 0744010 +rcr = 0744020 +cla = 0750000 +clc = 0750001 +las = 0750004 +glk = 0750010 +lrs = 0640500 +lrss= 0660500 +lls = 0640600 +llss= 0660600 +als = 0640700 +alss= 0660700 +norm= 0640444 +norms=0660444 +mul = 0653122 +muls= 0657122 +div = 0640323 +divs= 0644323 +idiv= 0653323 +idivs=0657323 +frdiv = 0650323 +frdivs = 0654323 +lacq = 0641002 +lacs = 0641001 +clq = 0650000 +ads = 0644000 +gsm = 0664000 + +"** 10-36-55.pdf page 1 +osc = 0640001 +omq = 0640002 +otq = 0642000 +cmq = 0640004 +lmq = 0652000 +ecla = 0641000 + +i = 020000 + +save = 1 +getuid = 2 +open = 3 +read = 4 +write = 5 +creat = 6 +seek = 7 +tell = 8 +close = 9 +link = 10 +unlink = 11 +setuid = 12 +rename = 13 +exit = 14 +time = 15 +intrp = 16 +chdir = 17 +chmode = 18 +chowner = 19 +sysloc = 21 +capt = 23 +rele = 24 +status = 25 +sleep = 26 +smes = 27 +rmes = 28 +fork = 29 From 1a35c9146dfce795205d574e8a4648ee07097a0d Mon Sep 17 00:00:00 2001 From: phil Date: Tue, 29 Oct 2019 00:00:55 -0400 Subject: [PATCH 6/6] switch to original commands, alphabetize proto and Makefile --- build/Makefile | 283 ++++++++++++++++++++++++++++-------------------- build/alt/proto | 9 +- build/fs/sys.rc | 14 +-- build/proto | 94 ++++++++-------- tools/mkfs7 | 12 +- 5 files changed, 228 insertions(+), 184 deletions(-) diff --git a/build/Makefile b/build/Makefile index ebd95ea..ea6438f 100644 --- a/build/Makefile +++ b/build/Makefile @@ -51,16 +51,20 @@ dist: all alt cp alt/unixv0.simh $(BINARIES)/alt # Warm boot Unix kernel: boots into init and a login prompt -a.out: - $(AS) -f ptr -o a.out $(SYSSRC)/sop.s $(SYSSRC)/s[1-8].s - $(AS) -n -f list -o a.lst $(SYSSRC)/sop.s $(SYSSRC)/s[1-8].s +SYS= $(SYSSRC)/sop.s $(SYSSRC)/s1.s $(SYSSRC)/s2.s \ + $(SYSSRC)/s3.s $(SYSSRC)/s4.s $(SYSSRC)/s5.s \ + $(SYSSRC)/s6.s $(SYSSRC)/s7.s $(SYSSRC)/s8.s +a.out: $(SYS) + $(AS) -f ptr -o a.out $(SYSSRC)/sop.s $(SYS) + $(AS) -n -f list -o a.lst $(SYSSRC)/sop.s $(SYS) # Alternative kernel: no dd, but . and .. -alt/a.out: - $(AS) -f ptr -o alt/a.out $(SYSSRC)/sop.s $(SYSSRC)/s1.s \ - $(ALTSRC)/s2.s $(SYSSRC)/s[3-8].s - $(AS) -n -f list -o alt/a.lst $(SYSSRC)/sop.s $(SYSSRC)/s1.s \ - $(ALTSRC)/s2.s $(SYSSRC)/s[3-8].s +ALTSYS= $(SYSSRC)/sop.s $(SYSSRC)/s1.s $(ALTSRC)/s2.s \ + $(SYSSRC)/s3.s $(SYSSRC)/s4.s $(SYSSRC)/s5.s \ + $(SYSSRC)/s6.s $(SYSSRC)/s7.s $(SYSSRC)/s8.s +alt/a.out: $(ALTSYS) + $(AS) -f ptr -o alt/a.out $(ALTSYS) + $(AS) -n -f list -o alt/a.lst $(ALTSYS) # Phil's bootstrap code boot.rim: $(SYSSRC)/sop.s $(OTHERSRC)/pbboot.s @@ -68,9 +72,10 @@ boot.rim: $(SYSSRC)/sop.s $(OTHERSRC)/pbboot.s # Cold boot Unix kernel: attempts to build a minimal filesystem. # Don't use this one! -coldboot: - $(AS) -f rim -o boot.rim $(SYSSRC)/sop.s $(SYSSRC)/s[1-9].s - $(AS) -n -f list -o a.lst $(SYSSRC)/sop.s $(SYSSRC)/s[1-9].s +COLDBOOT=$(SYS) $(SYSSRC)/s9.s +coldboot.rim: $(COLDBOOT) + $(AS) -f rim -o coldboot.rim $(COLDBOOT) + $(AS) -n -f list -o a.lst $(COLDBOOT) # Filesystem image image.fs: cmd others @@ -92,22 +97,56 @@ dirs: mkdir -p $(BINDIR) # The commands that came from the original scans -cmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \ - $(BINDIR)/chown $(BINDIR)/chrm $(BINDIR)/cp $(BINDIR)/ds \ - $(BINDIR)/dskres $(BINDIR)/dsksav $(BINDIR)/ed $(BINDIR)/init \ - $(BINDIR)/db $(BINDIR)/nstat $(BINDIR)/tm $(BINDIR)/dsw $(BINDIR)/apr \ - $(BINDIR)/cas $(BINDIR)/rm $(BINDIR)/rn $(BINDIR)/pd $(BINDIR)/nm \ - $(BINDIR)/roff $(BINDIR)/p $(BINDIR)/apr $(BINDIR)/salv $(BINDIR)/moo \ - $(BINDIR)/nsh $(BINDIR)/nls $(BINDIR)/nstat $(BINDIR)/un $(BINDIR)/adm +# PLEASE KEEP IN ALPHABETICAL ORDER! +cmd: dirs \ + $(BINDIR)/adm \ + $(BINDIR)/apr \ + $(BINDIR)/as \ + $(BINDIR)/cas \ + $(BINDIR)/cat \ + $(BINDIR)/check \ + $(BINDIR)/chmod \ + $(BINDIR)/chown \ + $(BINDIR)/chrm \ + $(BINDIR)/cp \ + $(BINDIR)/db \ + $(BINDIR)/ds \ + $(BINDIR)/dskres \ + $(BINDIR)/dsksav \ + $(BINDIR)/dsw \ + $(BINDIR)/ed \ + $(BINDIR)/init \ + $(BINDIR)/ln \ + $(BINDIR)/ls \ + $(BINDIR)/moo \ + $(BINDIR)/nm \ + $(BINDIR)/p \ + $(BINDIR)/rm \ + $(BINDIR)/rn \ + $(BINDIR)/roff \ + $(BINDIR)/salv \ + $(BINDIR)/sh \ + $(BINDIR)/stat \ + $(BINDIR)/tm \ + $(BINDIR)/ttt \ + $(BINDIR)/un # Alternate commands: no dd, but . and .. -altcmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \ - $(BINDIR)/chown $(BINDIR)/altchrm $(BINDIR)/cp $(BINDIR)/ds \ - $(BINDIR)/ed $(BINDIR)/altinit $(BINDIR)/altmkdir +altcmd: dirs cmd \ + $(BINDIR)/altchrm $(BINDIR)/cp $(BINDIR)/altinit $(BINDIR)/altmkdir + +$(BINDIR)/adm: $(CMDSRC)/adm.s + $(AS) $(ASARGS) -o $(BINDIR)/adm $(CMDSRC)/adm.s + +$(BINDIR)/apr: $(CMDSRC)/apr.s + $(AS) $(ASARGS) -o $(BINDIR)/apr $(CMDSRC)/apr.s $(BINDIR)/as: $(CMDSRC)/as.s $(AS) $(ASARGS) -o $(BINDIR)/as $(CMDSRC)/as.s +$(BINDIR)/bc: $(CMDSRC)/bc.s + $(AS) $(ASARGS) -o $(BINDIR)/bc $(CMDSRC)/bc.s + $(BINDIR)/cat: $(CMDSRC)/cat.s $(AS) $(ASARGS) -o $(BINDIR)/cat $(CMDSRC)/cat.s @@ -126,110 +165,116 @@ $(BINDIR)/chrm: $(CMDSRC)/chrm.s $(BINDIR)/altchrm: $(ALTSRC)/chrm.s $(AS) $(ASARGS) -o $(BINDIR)/altchrm $(ALTSRC)/chrm.s +$(BINDIR)/cas: $(CMDSRC)/cas.s + $(AS) $(ASARGS) -o $(BINDIR)/cas $(CMDSRC)/cas.s + $(BINDIR)/cp: $(CMDSRC)/cp.s $(AS) $(ASARGS) -o $(BINDIR)/cp $(CMDSRC)/cp.s -$(BINDIR)/ds: $(CMDSRC)/ds.s - $(AS) $(ASARGS) -o $(BINDIR)/ds $(CMDSRC)/ds.s - -$(BINDIR)/dskres: $(CMDSRC)/dskres.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s - $(AS) $(ASARGS) -o $(BINDIR)/dskres $(CMDSRC)/dskres.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s - -$(BINDIR)/dsksav: $(CMDSRC)/dsksav.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s - $(AS) $(ASARGS) -o $(BINDIR)/dsksav $(CMDSRC)/dsksav.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s - -$(BINDIR)/ed: $(CMDSRC)/ed1.s $(CMDSRC)/ed2.s - $(AS) $(ASARGS) -o $(BINDIR)/ed $(CMDSRC)/ed1.s $(CMDSRC)/ed2.s - -$(BINDIR)/init: $(CMDSRC)/init.s - $(AS) $(ASARGS) -o $(BINDIR)/init $(CMDSRC)/init.s - $(BINDIR)/db: $(CMDSRC)/db.s $(AS) $(ASARGS) -o $(BINDIR)/db $(CMDSRC)/db.s -# -- new stat from the scans -$(BINDIR)/nstat: $(CMDSRC)/stat.s - $(AS) $(ASARGS) -o $(BINDIR)/nstat $(CMDSRC)/stat.s - -$(BINDIR)/tm: $(CMDSRC)/tm.s - $(AS) $(ASARGS) -o $(BINDIR)/tm $(CMDSRC)/tm.s - -$(BINDIR)/cas: $(CMDSRC)/cas.s - $(AS) $(ASARGS) -o $(BINDIR)/cas $(CMDSRC)/cas.s - -# -- compile errors $(BINDIR)/dmabs: $(CMDSRC)/dmabs.s $(AS) $(ASARGS) -o $(BINDIR)/dmabs $(CMDSRC)/dmabs.s -# -- new bc from the scans -$(BINDIR)/nbc: $(CMDSRC)/bc.s - $(AS) $(ASARGS) -o $(BINDIR)/nbc $(CMDSRC)/bc.s +$(BINDIR)/ds: $(CMDSRC)/ds.s + $(AS) $(ASARGS) -o $(BINDIR)/ds $(CMDSRC)/ds.s + +DSKRES=$(CMDSRC)/dskres.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s +$(BINDIR)/dskres: $(DSKRES) + $(AS) $(ASARGS) -o $(BINDIR)/dskres $(DSKRES) + +DSKSAV=$(CMDSRC)/dsksav.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s +$(BINDIR)/dsksav: $(DSKSAV) + $(AS) $(ASARGS) -o $(BINDIR)/dsksav $(DSKSAV) $(BINDIR)/dsw: $(CMDSRC)/dsw.s $(AS) $(ASARGS) -o $(BINDIR)/dsw $(CMDSRC)/dsw.s -$(BINDIR)/apr: $(CMDSRC)/apr.s - $(AS) $(ASARGS) -o $(BINDIR)/apr $(CMDSRC)/apr.s +ED=$(CMDSRC)/ed1.s $(CMDSRC)/ed2.s +$(BINDIR)/ed: $(ED) + $(AS) $(ASARGS) -o $(BINDIR)/ed $(ED) -# -- compile errors -$(BINDIR)/adm: $(CMDSRC)/adm.s - $(AS) $(ASARGS) -o $(BINDIR)/adm $(CMDSRC)/adm.s +$(BINDIR)/init: $(CMDSRC)/init.s + $(AS) $(ASARGS) -o $(BINDIR)/init $(CMDSRC)/init.s -# -- new sh from the scans -$(BINDIR)/nsh: $(CMDSRC)/sh.s - $(AS) $(ASARGS) -o $(BINDIR)/nsh $(CMDSRC)/sh.s +$(BINDIR)/ln: $(CMDSRC)/ln.s + $(AS) $(ASARGS) -o $(BINDIR)/ln $(CMDSRC)/ln.s -$(BINDIR)/rn: $(CMDSRC)/rn.s - $(AS) $(ASARGS) -o $(BINDIR)/rn $(CMDSRC)/rn.s - -$(BINDIR)/rm: $(CMDSRC)/rm.s - $(AS) $(ASARGS) -o $(BINDIR)/rm $(CMDSRC)/rm.s - -$(BINDIR)/pd: $(CMDSRC)/pd.s - $(AS) $(ASARGS) -o $(BINDIR)/pd $(CMDSRC)/pd.s - -# -- new ls from the scans -$(BINDIR)/nls: $(CMDSRC)/ls.s - $(AS) $(ASARGS) -o $(BINDIR)/nls $(CMDSRC)/ls.s - -$(BINDIR)/nm: $(CMDSRC)/nm.s - $(AS) $(ASARGS) -o $(BINDIR)/nm $(CMDSRC)/nm.s - -$(BINDIR)/roff: $(CMDSRC)/roff.s - $(AS) $(ASARGS) -o $(BINDIR)/roff $(CMDSRC)/roff.s - -$(BINDIR)/p: $(CMDSRC)/p1.s $(CMDSRC)/p2.s $(CMDSRC)/p3.s $(CMDSRC)/p4.s $(CMDSRC)/p5.s - $(AS) $(ASARGS) -o $(BINDIR)/p $(CMDSRC)/p1.s $(CMDSRC)/p2.s $(CMDSRC)/p3.s $(CMDSRC)/p4.s $(CMDSRC)/p5.s - -$(BINDIR)/salv: $(CMDSRC)/salv.s - $(AS) $(ASARGS) -o $(BINDIR)/salv $(CMDSRC)/salv.s +$(BINDIR)/ls: $(CMDSRC)/ls.s + $(AS) $(ASARGS) -o $(BINDIR)/ls $(CMDSRC)/ls.s $(BINDIR)/moo: $(CMDSRC)/moo.s $(AS) $(ASARGS) -o $(BINDIR)/moo $(CMDSRC)/moo.s +$(BINDIR)/nm: $(CMDSRC)/nm.s + $(AS) $(ASARGS) -o $(BINDIR)/nm $(CMDSRC)/nm.s + +P=$(CMDSRC)/p1.s $(CMDSRC)/p2.s $(CMDSRC)/p3.s $(CMDSRC)/p4.s $(CMDSRC)/p5.s +$(BINDIR)/p: $(P) + $(AS) $(ASARGS) -o $(BINDIR)/p $(P) + +$(BINDIR)/rm: $(CMDSRC)/rm.s + $(AS) $(ASARGS) -o $(BINDIR)/rm $(CMDSRC)/rm.s + +$(BINDIR)/rn: $(CMDSRC)/rn.s + $(AS) $(ASARGS) -o $(BINDIR)/rn $(CMDSRC)/rn.s + +$(BINDIR)/pd: $(CMDSRC)/pd.s + $(AS) $(ASARGS) -o $(BINDIR)/pd $(CMDSRC)/pd.s + +$(BINDIR)/roff: $(CMDSRC)/roff.s + $(AS) $(ASARGS) -o $(BINDIR)/roff $(CMDSRC)/roff.s + +$(BINDIR)/salv: $(CMDSRC)/salv.s + $(AS) $(ASARGS) -o $(BINDIR)/salv $(CMDSRC)/salv.s + +$(BINDIR)/sh: $(CMDSRC)/sh.s + $(AS) $(ASARGS) -o $(BINDIR)/sh $(CMDSRC)/sh.s + +$(BINDIR)/stat: $(CMDSRC)/stat.s + $(AS) $(ASARGS) -o $(BINDIR)/stat $(CMDSRC)/stat.s + +$(BINDIR)/tm: $(CMDSRC)/tm.s + $(AS) $(ASARGS) -o $(BINDIR)/tm $(CMDSRC)/tm.s + +TTT=$(CMDSRC)/ttt1.s $(CMDSRC)/ttt2.s +$(BINDIR)/ttt: $(TTT) + $(AS) $(ASARGS) -o $(BINDIR)/ttt $(TTT) + $(BINDIR)/un: $(CMDSRC)/un.s $(AS) $(ASARGS) -o $(BINDIR)/un $(CMDSRC)/un.s -# Alternative init: no dd directory -$(BINDIR)/altinit: $(ALTSRC)/init.s - $(AS) $(ASARGS) -o $(BINDIR)/altinit $(ALTSRC)/init.s - -$(BINDIR)/altmkdir: $(ALTSRC)/wktmkdir.s - $(AS) $(ASARGS) -o $(BINDIR)/altmkdir $(ALTSRC)/wktmkdir.s - - +################ # The commands that did not come from the scans -others: dirs $(BINDIR)/sh $(BINDIR)/wktcat $(BINDIR)/wktcp $(BINDIR)/date \ - $(BINDIR)/ln $(BINDIR)/ls $(BINDIR)/mv $(BINDIR)/stat $(BINDIR)/od \ - $(BINDIR)/bc $(BINDIR)/lsd $(BINDIR)/lsl -# Alternative other commands: no dd, but . and .. -altothers: dirs $(BINDIR)/sh $(BINDIR)/wktcat $(BINDIR)/wktcp $(BINDIR)/date \ - $(BINDIR)/ln $(BINDIR)/altls $(BINDIR)/mv $(BINDIR)/stat $(BINDIR)/od +others: dirs \ + $(BINDIR)/b \ + $(BINDIR)/date \ + $(BINDIR)/mv \ + $(BINDIR)/od +# B compiler +$(BINDIR)/b: $(CMDSRC)/bl.s $(CMDSRC)/bi.s ../tools/b.c $(OTHERSRC)/b.b + $(CC) $(CCARGS) -o b ../tools/b.c + ./b $(OTHERSRC)/b.b b.s + $(AS) $(ASARGS) -o $(BINDIR)/b $(CMDSRC)/bl.s b.s $(CMDSRC)/bi.s + rm b b.s -$(BINDIR)/sh: $(OTHERSRC)/pbsh.s - $(AS) $(ASARGS) -o $(BINDIR)/sh $(OTHERSRC)/pbsh.s +$(BINDIR)/date: $(OTHERSRC)/wktdate.s + $(AS) $(ASARGS) -o $(BINDIR)/date $(OTHERSRC)/wktdate.s + +$(BINDIR)/mv: $(OTHERSRC)/wktmv.s + $(AS) $(ASARGS) -o $(BINDIR)/mv $(OTHERSRC)/wktmv.s + +$(BINDIR)/od: $(OTHERSRC)/wktod.s + $(AS) $(ASARGS) -o $(BINDIR)/od $(OTHERSRC)/wktod.s + +################ +# replacement programs (no longer in build) + +$(BINDIR)/pbsh: $(OTHERSRC)/pbsh.s + $(AS) $(ASARGS) -o $(BINDIR)/pbsh $(OTHERSRC)/pbsh.s $(BINDIR)/wktcat: $(OTHERSRC)/wktcat.s $(AS) $(ASARGS) -o $(BINDIR)/wktcat $(OTHERSRC)/wktcat.s @@ -237,39 +282,37 @@ $(BINDIR)/wktcat: $(OTHERSRC)/wktcat.s $(BINDIR)/wktcp: $(OTHERSRC)/wktcp.s $(AS) $(ASARGS) -o $(BINDIR)/wktcp $(OTHERSRC)/wktcp.s -$(BINDIR)/date: $(OTHERSRC)/wktdate.s - $(AS) $(ASARGS) -o $(BINDIR)/date $(OTHERSRC)/wktdate.s +$(BINDIR)/wktln: $(OTHERSRC)/wktln.s + $(AS) $(ASARGS) -o $(BINDIR)/wktln $(OTHERSRC)/wktln.s -$(BINDIR)/ln: $(OTHERSRC)/wktln.s - $(AS) $(ASARGS) -o $(BINDIR)/ln $(OTHERSRC)/wktln.s - -$(BINDIR)/ls: $(OTHERSRC)/wktls.s - $(AS) $(ASARGS) -o $(BINDIR)/ls $(OTHERSRC)/wktls.s +$(BINDIR)/wktls: $(OTHERSRC)/wktls.s + $(AS) $(ASARGS) -o $(BINDIR)/wktls $(OTHERSRC)/wktls.s $(BINDIR)/lsd: $(OTHERSRC)/pblsd.s $(AS) $(ASARGS) -o $(BINDIR)/lsd $(OTHERSRC)/pblsd.s -$(BINDIR)/altls: $(ALTSRC)/wktls.s - $(AS) $(ASARGS) -o $(BINDIR)/altls $(ALTSRC)/wktls.s - $(BINDIR)/lsl: $(OTHERSRC)/pblsd.s $(AS) $(ASARGS) -o $(BINDIR)/lsl $(OTHERSRC)/pblsd.s -$(BINDIR)/mv: $(OTHERSRC)/wktmv.s - $(AS) $(ASARGS) -o $(BINDIR)/mv $(OTHERSRC)/wktmv.s +$(BINDIR)/wktstat: $(OTHERSRC)/wktstat.s + $(AS) $(ASARGS) -o $(BINDIR)/wktstat $(OTHERSRC)/wktstat.s -$(BINDIR)/stat: $(OTHERSRC)/wktstat.s - $(AS) $(ASARGS) -o $(BINDIR)/stat $(OTHERSRC)/wktstat.s +################ +# Alternative init: no dd directory +$(BINDIR)/altinit: $(ALTSRC)/init.s + $(AS) $(ASARGS) -o $(BINDIR)/altinit $(ALTSRC)/init.s -$(BINDIR)/od: $(OTHERSRC)/wktod.s - $(AS) $(ASARGS) -o $(BINDIR)/od $(OTHERSRC)/wktod.s +$(BINDIR)/altmkdir: $(ALTSRC)/wktmkdir.s + $(AS) $(ASARGS) -o $(BINDIR)/altmkdir $(ALTSRC)/wktmkdir.s -# B compiler -$(BINDIR)/bc: $(CMDSRC)/bl.s $(CMDSRC)/bi.s ../tools/b.c $(OTHERSRC)/b.b - $(CC) $(CCARGS) -o b ../tools/b.c - ./b $(OTHERSRC)/b.b b.s - $(AS) $(ASARGS) -o $(BINDIR)/bc $(CMDSRC)/bl.s b.s $(CMDSRC)/bi.s - rm b b.s +# Alternative other commands: no dd, but . and .. +altothers: dirs cmd $(BINDIR)/wktcat $(BINDIR)/wktcp $(BINDIR)/date \ + $(BINDIR)/altls $(BINDIR)/mv $(BINDIR)/od + +$(BINDIR)/altls: $(ALTSRC)/wktls.s + $(AS) $(ASARGS) -o $(BINDIR)/altls $(ALTSRC)/wktls.s + +################################################################ tests: mkdir -p $(TESTDIR) diff --git a/build/alt/proto b/build/alt/proto index 6d21b0d..54aba46 100644 --- a/build/alt/proto +++ b/build/alt/proto @@ -9,7 +9,8 @@ # link l---- inumber # # The top directory's name is ignored -# numbers are in decimal (-1 for inode means last) +# inumbers are in decimal (-1 means previous file) +# uids are in octal # Contents of each directory ends with a $ on a line by itself # Format was inspired by 6th Edition mkfs # @@ -41,10 +42,10 @@ sh frwr- -1 bin/sh stat frwr- -1 bin/stat $ - ken drwr- 012 + ken drwr- 12 system l---- 3 - hello frwr- 012 fs/hello + hello frwr- 12 fs/hello $ - dmr drwr- 014 + dmr drwr- 14 system l---- 3 $ diff --git a/build/fs/sys.rc b/build/fs/sys.rc index 368f409..e98c34d 100644 --- a/build/fs/sys.rc +++ b/build/fs/sys.rc @@ -1,8 +1,8 @@ -chrm ken ops.s -ln dmr ops.s ops.s -as sop.s ops.s maksys.s -mv a.out maksys -as sop.s ops.s trysys.s -mv a.out trysys -chrm ken ops.s +rm op.s +ln dmr op.s +as sop.s op.s maksys.s +rn a.out maksys +as sop.s op.s trysys.s +rn a.out trysys +rm op.s as sop.s s1.s s2.s s3.s s4.s s5.s s6.s s7.s s8.s diff --git a/build/proto b/build/proto index 05c3b13..dc07759 100644 --- a/build/proto +++ b/build/proto @@ -7,7 +7,8 @@ # link l---- inumber # # The top directory's name is ignored -# numbers are in decimal (-1 for inode means last) +# inumbers are in decimal (-1 means previous file) +# uids are in octal # Contents of each directory ends with a $ on a line by itself # Format was inspired by 6th Edition mkfs # @@ -21,9 +22,11 @@ dd drwr- -1 4 display irwr- -1 12 pptout irwr- -1 13 adm frwr- -1 bin/adm + password frw-- -1 fs/password + adm frwr- -1 bin/adm apr frwr- -1 bin/apr as frwr- -1 bin/as - bc frwr- -1 bin/bc + b frwr- -1 bin/b cas frwr- -1 bin/cas cat frwr- -1 bin/cat check frwr- -1 bin/check @@ -40,68 +43,59 @@ dd drwr- -1 4 ed frwr- -1 bin/ed init frwr- -1 bin/init ln frwr- -1 bin/ln + link l---- -1 ls frwr- -1 bin/ls - lsd frwr- -1 bin/lsd - lsl frwr- -1 bin/lsd + list l---- -1 moo frwr- -1 bin/moo + mv frwr- -1 bin/mv nm frwr- -1 bin/nm od frwr- -1 bin/od p frwr- -1 bin/p - pd frwr- -1 bin/pd - mv frwr- -1 bin/mv - password frw-- -1 fs/password - roff frwr- -1 bin/roff - rn frwr- -1 bin/rn rm frwr- -1 bin/rm + rn frwr- -1 bin/rn + roff frwr- -1 bin/roff salv frwr- -1 bin/salv sh frwr- -1 bin/sh stat frwr- -1 bin/stat tm frwr- -1 bin/tm + ttt frwr- -1 bin/ttt + dttt l---- -1 un frwr- -1 bin/un - -# new versions, from the scans - - nsh frwr- -1 bin/nsh - nls frwr- -1 bin/nls - list l---- -1 -# nbc frwr- -1 bin/nbc - nstat frwr- -1 bin/nstat - - - $ - ken drwr- 012 + $ + ken drwr- 12 system l---- 3 - sop.s frwr- 012 ../src/sys/sop.s - s1.s frwr- 012 ../src/sys/s1.s - s2.s frwr- 012 ../src/sys/s2.s - s3.s frwr- 012 ../src/sys/s3.s - s4.s frwr- 012 ../src/sys/s4.s - s5.s frwr- 012 ../src/sys/s5.s - s6.s frwr- 012 ../src/sys/s6.s - s7.s frwr- 012 ../src/sys/s7.s - s8.s frwr- 012 ../src/sys/s8.s - maksys.s frwr- 012 ../src/sys/maksys.s - trysys.s frwr- 012 ../src/sys/trysys.s - sys.rc frwr- 012 fs/sys.rc + sop.s frwr- 12 ../src/sys/sop.s + s1.s frwr- 12 ../src/sys/s1.s + s2.s frwr- 12 ../src/sys/s2.s + s3.s frwr- 12 ../src/sys/s3.s + s4.s frwr- 12 ../src/sys/s4.s + s5.s frwr- 12 ../src/sys/s5.s + s6.s frwr- 12 ../src/sys/s6.s + s7.s frwr- 12 ../src/sys/s7.s + s8.s frwr- 12 ../src/sys/s8.s + maksys.s frwr- 12 ../src/sys/maksys.s + trysys.s frwr- 12 ../src/sys/trysys.s + sys.rc frwr- 12 fs/sys.rc $ - dmr drwr- 014 + dmr drwr- 14 system l---- 3 - as.s frwr- 014 ../src/cmd/as.s - b_readme frwr- 014 fs/b_readme - bi.s frwr- 014 ../src/cmd/bi.s - bl.s frwr- 014 ../src/cmd/bl.s - db.s frwr- 014 ../src/cmd/db.s - hello.b frwr- 014 ../src/other/hello.b - ops.s frwr- 014 ../src/other/ops.s + as.s frwr- 14 ../src/cmd/as.s + op.s frwr- 14 ../src/cmd/op.s + b_readme frwr- 14 fs/b_readme + bi.s frwr- 14 ../src/cmd/bi.s + bl.s frwr- 14 ../src/cmd/bl.s + db.s frwr- 14 ../src/cmd/db.s + hello.b frwr- 14 ../src/other/hello.b + b.b frwr- 14 ../src/other/b.b $ - doug drwr- 015 + doug drwr- 15 system l---- 3 - t1.s frwr- 015 ../src/cmd/t1.s - t2.s frwr- 015 ../src/cmd/t2.s - t3.s frwr- 015 ../src/cmd/t3.s - t4.s frwr- 015 ../src/cmd/t4.s - t5.s frwr- 015 ../src/cmd/t5.s - t6.s frwr- 015 ../src/cmd/t6.s - t7.s frwr- 015 ../src/cmd/t7.s - t8.s frwr- 015 ../src/cmd/t8.s + t1.s frwr- 15 ../src/cmd/t1.s + t2.s frwr- 15 ../src/cmd/t2.s + t3.s frwr- 15 ../src/cmd/t3.s + t4.s frwr- 15 ../src/cmd/t4.s + t5.s frwr- 15 ../src/cmd/t5.s + t6.s frwr- 15 ../src/cmd/t6.s + t7.s frwr- 15 ../src/cmd/t7.s + t8.s frwr- 15 ../src/cmd/t8.s $ diff --git a/tools/mkfs7 b/tools/mkfs7 index ac6775e..12782b2 100755 --- a/tools/mkfs7 +++ b/tools/mkfs7 @@ -513,6 +513,12 @@ sub parse_perms { return ( $filetype, $perms ); } +sub uid { + my $uid = shift; + return -1 if ($uid eq '-1'); + return oct($uid); +} + # Open the named proto file and parse it sub parse_proto_file { my $file = shift; @@ -543,17 +549,17 @@ sub parse_proto_file { if ( $type eq I_DIRECTORY ) { my ( $name, $permstr, $uid, $inum ) = @words; - make_dir( $name, $perms, $uid, $inum ); + make_dir( $name, $perms, uid($uid), $inum ); next; } if ( $type eq I_FILE ) { my ( $name, $permstr, $uid, $extfile, $inum ) = @words; - add_file( $name, $perms, $uid, $extfile, $inum ); + add_file( $name, $perms, uid($uid), $extfile, $inum ); next; } if ( $type eq I_SPECIAL ) { my ( $name, $permstr, $uid, $inum ) = @words; - add_special( $name, $perms, $uid, $inum ); + add_special( $name, $perms, uid($uid), $inum ); next; } if ( $type eq I_LINK ) {