New installation mechanism
This commit is contained in:
		
							parent
							
								
									4274cb903c
								
							
						
					
					
						commit
						53bfe9cfa0
					
				
					 8 changed files with 25 additions and 167 deletions
				
			
		|  | @ -1,6 +1,2 @@ | ||||||
| LIST | LIST | ||||||
| Makefile |  | ||||||
| compmodule |  | ||||||
| head_em.s |  | ||||||
| libem_s.a | libem_s.a | ||||||
| end.s |  | ||||||
|  |  | ||||||
|  | @ -28,7 +28,6 @@ exg.s | ||||||
| fef.s | fef.s | ||||||
| fif.s | fif.s | ||||||
| gto.s | gto.s | ||||||
| hlt.s |  | ||||||
| iaar.s | iaar.s | ||||||
| aar.s | aar.s | ||||||
| ilar.s | ilar.s | ||||||
|  | @ -61,7 +60,6 @@ sbf.s | ||||||
| sbi.s | sbi.s | ||||||
| set.s | set.s | ||||||
| setfl.s | setfl.s | ||||||
| sigtrp.s |  | ||||||
| sim.s | sim.s | ||||||
| sli.s | sli.s | ||||||
| sri.s | sri.s | ||||||
|  |  | ||||||
|  | @ -2,146 +2,11 @@ | ||||||
| ! $Header$ | ! $Header$ | ||||||
| .sect .text | .sect .text | ||||||
| .define mon~ | .define mon~ | ||||||
| .extern sigtrp~,save~,retu~,save1~ |  | ||||||
| 
 | 
 | ||||||
| indir	= 0 |  | ||||||
| fork	= 2 |  | ||||||
| getpid	= 024 |  | ||||||
| sigtrp	= 060 |  | ||||||
| EBADMON = 031 | EBADMON = 031 | ||||||
| 
 | 
 | ||||||
| HBMASK	= 0177400 |  | ||||||
| REG01M	= 030 |  | ||||||
| REG1M	= 020 |  | ||||||
| ERRMASK	= 040 |  | ||||||
| 
 |  | ||||||
| ! Associated with every monitor call is a descriptor. |  | ||||||
| ! The low order three bits describe how values are returned, |  | ||||||
| ! the next two bits specify if arguments are expected in |  | ||||||
| ! r0 and/or r1, the next bit is not used, and the next |  | ||||||
| ! three bits specify the number of arguments disregarding |  | ||||||
| ! arguments in registers. |  | ||||||
| 
 |  | ||||||
| mon~: | mon~: | ||||||
| 	cmp	02(sp),$sigtrp |  | ||||||
| 	bne	1f |  | ||||||
| 	jmp	sigtrp~ |  | ||||||
| 1:	jsr	pc,save~ |  | ||||||
| 	mov	(sp)+,r4 |  | ||||||
| 	mov	r4,r2 |  | ||||||
| 	asl	r4 |  | ||||||
| 	mov	args(r4),r3 |  | ||||||
| 	mov	r3,r4 |  | ||||||
| 	bit	$ERRMASK,r4 |  | ||||||
| 	bne	err |  | ||||||
| 	cmp	r2,$fork |  | ||||||
| 	bne	2f |  | ||||||
| 	jbr	fork~ |  | ||||||
| 2:	bic	$HBMASK,r2 |  | ||||||
| 	bis	$0104400,r2 ! sys = 0104400 |  | ||||||
| 	mov	r2,9f |  | ||||||
| 	bit	$REG01M,r3 |  | ||||||
| 	beq	1f |  | ||||||
| 	mov	(sp)+,r0 |  | ||||||
| 	bit	$REG1M,r3 |  | ||||||
| 	beq	1f |  | ||||||
| 	mov	(sp)+,r1 |  | ||||||
| 1:	ash	$-6,r3 |  | ||||||
| 	beq	2f |  | ||||||
| 	mov	$[9f+2],r2 |  | ||||||
| 1:	mov	(sp)+,(r2)+ |  | ||||||
| 	sob	r3,1b |  | ||||||
| 2:	sys	indir ; .data2 9f
 |  | ||||||
| 	bcs	2f |  | ||||||
| 	clr	r3 |  | ||||||
| 4:	asr	r4 |  | ||||||
| 	bcc	1f |  | ||||||
| 	mov	r0,-(sp) |  | ||||||
| 1:	asr	r4 |  | ||||||
| 	bcc	1f |  | ||||||
| 	mov	r1,-(sp) |  | ||||||
| 1:	asr	r4 |  | ||||||
| 	bcc	1f |  | ||||||
| 	clr	-(sp) |  | ||||||
| 1:	jmp	retu~ |  | ||||||
| 2:	mov	r0,-(sp) |  | ||||||
| 	mov	r0,-(sp) |  | ||||||
| 	jmp	retu~ |  | ||||||
| fork~: |  | ||||||
| 	sys	fork |  | ||||||
| 	br	1f |  | ||||||
| 	bcs	2b |  | ||||||
| 	clr	r1 |  | ||||||
| 	br	4b |  | ||||||
| 1:	mov	$1,r1 |  | ||||||
| 	br	4b |  | ||||||
| err: |  | ||||||
| 	mov	$EBADMON,-(sp) | 	mov	$EBADMON,-(sp) | ||||||
| 	jsr	pc,trp~ | 	jsr	pc,trp~ | ||||||
| 	tst	(sp)+ | 	tst	(sp)+ | ||||||
| 	jmp	retu~ | 	rts	pc | ||||||
| .sect .data |  | ||||||
| .align 1
 |  | ||||||
| 9: .space 12 |  | ||||||
| args:	.data2 ERRMASK	! 0 : error |  | ||||||
| 	.data2 010	! 1 : exit(st); ---
 |  | ||||||
| 	.data2 07	! 2 : fork(); e10
 |  | ||||||
| 	.data2 0215	! 3 : read(addr,nb,fild); e-0
 |  | ||||||
| 	.data2 0215	! 4 : write(addr,nb,fild); e-0
 |  | ||||||
| 	.data2 0205	! 5 : open(str,flag); e-0
 |  | ||||||
| 	.data2 014	! 6 : close(fild); e--
 |  | ||||||
| 	.data2 07	! 7 : wait(); e10
 |  | ||||||
| 	.data2 0205	! 8 : creat(str,mode); e-0
 |  | ||||||
| 	.data2 0204	! 9 : link(str1,str2); e--
 |  | ||||||
| 	.data2 0104	!10 : unlink(str); e--
 |  | ||||||
| 	.data2 ERRMASK	!11 : error |  | ||||||
| 	.data2 0104	!12 : chdir(str); e--
 |  | ||||||
| 	.data2 03	!13 : time(); -10
 |  | ||||||
| 	.data2 0304	!14 : mknod(str,mode,addr); e--
 |  | ||||||
| 	.data2 0204	!15 : chmod(str,mode); e--
 |  | ||||||
| 	.data2 0304	!16 : chown(str,owner,grp); e--
 |  | ||||||
| 	.data2 ERRMASK	!17 : error |  | ||||||
| 	.data2 0204	!18 : stat(str,buf); e--
 |  | ||||||
| 	.data2 0217	!19 : lseek(high,low,fild); e10
 |  | ||||||
| 	.data2 01	!20 : getpid(); --0
 |  | ||||||
| 	.data2 0304	!21 : mount(str1,str2,fl); e--
 |  | ||||||
| 	.data2 0104	!22 : umount(str); e--
 |  | ||||||
| 	.data2 014	!23 : setuid(uid); e--
 |  | ||||||
| 	.data2 03	!24 : getuid(); -01
 |  | ||||||
| 	.data2 024	!25 : stime(high,low); e--
 |  | ||||||
| 	.data2 0315	!26 : ptrace(pid,addr,req,d); e-0
 |  | ||||||
| 	.data2 011	!27 : alarm(sec); --0
 |  | ||||||
| 	.data2 0114	!28 : fstat(buf,fild); e--
 |  | ||||||
| 	.data2 0	!29 : pause(); ---
 |  | ||||||
| 	.data2 0204	!30 : utime(str,timep); e--
 |  | ||||||
| 	.data2 ERRMASK	!31 : error |  | ||||||
| 	.data2 ERRMASK	!32 : error |  | ||||||
| 	.data2 0204	!33 : access(str,mode): e-- |  | ||||||
| 	.data2 010	!34 : nice(incr); ---
 |  | ||||||
| 	.data2 0100	!35 : ftime(bufp); ---
 |  | ||||||
| 	.data2 0	!36 : sync(); ---
 |  | ||||||
| 	.data2 0114	!37 : kill(sig,pid); e--
 |  | ||||||
| 	.data2 ERRMASK	!38 : error |  | ||||||
| 	.data2 ERRMASK	!39 : error |  | ||||||
| 	.data2 ERRMASK	!40 : error |  | ||||||
| 	.data2 025	!41 : dup(fild,newfild); e-0
 |  | ||||||
| 	.data2 07	!42 : pipe(); e10
 |  | ||||||
| 	.data2 0100	!43 : times(buf); ---
 |  | ||||||
| 	.data2 0400	!44 : profil(buff,siz,off,sc); ---
 |  | ||||||
| 	.data2 ERRMASK	!45 : error |  | ||||||
| 	.data2 014	!46 : setgid(gid); e--
 |  | ||||||
| 	.data2 03	!47 : getgid(); -01
 |  | ||||||
| 	.data2 0	!48 : sigtrp(trap,sig); e-0; SPECIAL TREATMENT
 |  | ||||||
| 	.data2 ERRMASK	!49 : error |  | ||||||
| 	.data2 ERRMASK	!50 : error |  | ||||||
| 	.data2 0104	!51 : acct(file); e--
 |  | ||||||
| 	.data2 0304	!52 : phys(seg,siz,phaddr); e--
 |  | ||||||
| 	.data2 0104	!53 : lock(flag); e--
 |  | ||||||
| 	.data2 0304	!54 : ioctl(fild,req,argp); e--
 |  | ||||||
| 	.data2 ERRMASK	!55 : error |  | ||||||
| 	.data2 0204	!56 : mpxcall(cmd,vec); e--
 |  | ||||||
| 	.data2 ERRMASK	!57 : error |  | ||||||
| 	.data2 ERRMASK	!58 : error |  | ||||||
| 	.data2 0304	!59 : exece(name,argv,envp); e--
 |  | ||||||
| 	.data2 0104	!60 : umask(complmode); e--
 |  | ||||||
| 	.data2 0104	!61 : chroot(str); e--
 |  | ||||||
|  |  | ||||||
|  | @ -23,9 +23,9 @@ prf~: | ||||||
| 	mov	r1,-(sp) | 	mov	r1,-(sp) | ||||||
| 	mov	r0,-(sp) | 	mov	r0,-(sp) | ||||||
| 	mov	$fmt,-(sp) | 	mov	$fmt,-(sp) | ||||||
| 	jsr	pc,_printf | 	jsr	pc,printf~ | ||||||
| 	add	$010,sp | 	add	$010,sp | ||||||
| 	jsr	pc,_printf | 	jsr	pc,printf~ | ||||||
| 	jmp	retu~ | 	jmp	retu~ | ||||||
| 1:	mov	$name,r0 | 1:	mov	$name,r0 | ||||||
| 	br	2b | 	br	2b | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ | ||||||
| 
 | 
 | ||||||
| write	= 4 | write	= 4 | ||||||
| 
 | 
 | ||||||
| _printf: | printf~: | ||||||
| 	mov	r2,-(sp) | 	mov	r2,-(sp) | ||||||
| 	mov	r3,-(sp) | 	mov	r3,-(sp) | ||||||
| 	mov	r4,-(sp) | 	mov	r4,-(sp) | ||||||
|  | @ -51,11 +51,11 @@ printn: | ||||||
| ready: | ready: | ||||||
| 	movb	r0,(r4)+ | 	movb	r0,(r4)+ | ||||||
| 	sub	$buff,r4 | 	sub	$buff,r4 | ||||||
| 	mov	$01,r0 | 	mov	r4,-(sp) | ||||||
| 	mov	$buff,9f | 	mov	$buff,-(sp) | ||||||
| 	mov	r4,9f+2 | 	mov	$01,-(sp) | ||||||
| 	sys	write | 	jsr	__write | ||||||
| 9:	.data2 0, 0 | 	add	$06,sp | ||||||
| 	mov	(sp)+,r4 | 	mov	(sp)+,r4 | ||||||
| 	mov	(sp)+,r3 | 	mov	(sp)+,r3 | ||||||
| 	mov	(sp)+,r2 | 	mov	(sp)+,r2 | ||||||
|  |  | ||||||
|  | @ -1,27 +1,26 @@ | ||||||
| .sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
 | .sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
 | ||||||
| .sect .text | .sect .text | ||||||
| .define strhp~ | .define strhp~ | ||||||
| .extern trp~,reghp~,_end | .extern trp~,reghp~ | ||||||
| ! $Header$ | ! $Header$ | ||||||
| indir	= 0 |  | ||||||
| 
 | 
 | ||||||
| break	= 021 |  | ||||||
| EHEAP	= 021 | EHEAP	= 021 | ||||||
| 
 | 
 | ||||||
| strhp~: | strhp~: | ||||||
| 	mov	(sp)+,r0 | 	mov	(sp)+,r0 | ||||||
| 	mov	(sp)+,r1 | 	mov	(sp)+,r1 | ||||||
|  | 	mov	r0,-(sp) | ||||||
| 	mov	r1,reghp~ | 	mov	r1,reghp~ | ||||||
| 	cmp	r1,2f+2 | 	cmp	r1,2f+2 | ||||||
| 	blos	1f | 	blos	1f | ||||||
| 	add	$01777,r1 | 	add	$01777,r1 | ||||||
| 	bic	$01777,r1 | 	bic	$01777,r1 | ||||||
| 	mov	r1,2f+2 | 	mov	r1,-(sp) | ||||||
| 	sys	indir ; .data2 2f
 | 	jsr	__brk | ||||||
| 	bcs	3f | 	tst	(sp)+ | ||||||
| 1:	jmp	(r0) | 	tst	r0 | ||||||
|  | 	blt	3f | ||||||
|  | 1:	rts	pc | ||||||
| 3:	mov	$EHEAP,-(sp) | 3:	mov	$EHEAP,-(sp) | ||||||
| 	jsr	pc,trp~ | 	jsr	pc,trp~ | ||||||
| 	jmp	(r0) | 	rts	pc | ||||||
| .sect .data |  | ||||||
| 2:	sys	break; .data2 _end
 |  | ||||||
|  |  | ||||||
|  | @ -3,11 +3,10 @@ | ||||||
| .define trp~,fat~ | .define trp~,fat~ | ||||||
| .extern trppc~,trpim~,savearea,retar | .extern trppc~,trpim~,savearea,retar | ||||||
| ! $Header$ | ! $Header$ | ||||||
| 	write=4 |  | ||||||
| 
 | 
 | ||||||
| fat~: | fat~: | ||||||
| 	jsr     pc,trp~ | 	jsr     pc,trp~ | ||||||
| 	.data2 4
 | 	jsr	__exit | ||||||
| 
 | 
 | ||||||
| trp~: | trp~: | ||||||
| 	mov     r0,-(sp) | 	mov     r0,-(sp) | ||||||
|  | @ -86,10 +85,12 @@ trp~: | ||||||
| 	bisb	r3,-(r1) | 	bisb	r3,-(r1) | ||||||
| 	ash	$-3,r0 | 	ash	$-3,r0 | ||||||
| 	sob	r2,1b | 	sob	r2,1b | ||||||
| 	mov	$2,r0 | 	mov	$013,-(sp) | ||||||
| 	sys	write;.data2 buf, 013
 | 	mov	$buf,-(sp) | ||||||
| 	.data2 4
 | 	mov	$2,-(sp) | ||||||
| 
 | 	jsr	__write | ||||||
|  | 	add	$6,sp | ||||||
|  | 	jsr	__exit | ||||||
| .sect .data | .sect .data | ||||||
| retar:	.space 16 | retar:	.space 16 | ||||||
| retend: | retend: | ||||||
|  |  | ||||||
|  | @ -1,2 +1 @@ | ||||||
| Makefile |  | ||||||
| table | table | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue