1
0
mirror of https://github.com/DoctorWkt/unix-jun72.git synced 2026-02-14 03:54:52 +00:00
Files
DoctorWkt.unix-jun72/pages/e11-01
tim.newsham fca66172e8 - fix a bug in the sh.s code that was garbled in the printout.
- now installing sh.s as /bin/sh in the rf0 image.
2008-05-11 02:00:34 +00:00

56 lines
1.4 KiB
Plaintext

/ sh -- command interpreter
mov sp,r5
mov r5,shellarg / save orig sp in shellarg
cmpb *2(r5),$'- / was this sh calleZd by init or loginx~
bne 2f / no
sys intr; 0 / yes, turn off interrupts
sys quit; 0
2:
sys getuid / who is user
tst r0 / is it superuser
bne 2f / no
movb $'#,at / yes, set new prompt symbol
2:
cmp (r5),$1 / tty input?
ble newline / yes, call with '-(or with no command
/ file name)
clr r0 / no, set ttv
sys close / close it
mov 4(r5),0f / get new file name
sys open; 0:..; 0 / open it
bec 1f / branch if no error
jsr r5,error / error in file name
<Input not found\n\0>; .even
sys exit
1:
clr at / clear prompt character, if reading non-tty
/ input file
newline:
tst at / is there a prompt symbol
beq newcom / no
mov $1,r0 / yes
sys write; at; 2. / print prompt
newcom:
mov shellarg,sp /
mov $parbuf,r3 / initialize command list area
mov $parp,r4 / initialize command list pointers
clr infile / initialize alternate input
clr outfile / initialize alternate output
clr glflag / initialize global flag
newarg:
jsr pc,blank / squeeze out leading blanks
jsr r5,delim / is new character a ; \n or &
br 2f / yes
mov r3,-(sp) / no, push arg pointer onto stack
cmp r0,$'< / new input file?
bne 1f / no
mov (sp),infile / yes, save arg pointer
clr (sp) / clear pointer
br 3f
1:
cmp r0,$'> / new output file?
bne newchar / no
mov (sp),outfile / yes, save arg pointer
clr (sp) / clear pointer
br 3f