New installation mechanism

This commit is contained in:
ceriel 1991-09-02 14:03:15 +00:00
parent dc2ab49b32
commit 0cc2f6e317
9 changed files with 195 additions and 29 deletions

View file

@ -2,13 +2,9 @@ Action
READ_ME
as
cv
libbc
libcc
libem
libfp
libm2
liboc
libpc
libros
ncg
top
libem
libfp
libend
libmon

View file

@ -10,27 +10,12 @@ end
name "ARM cv program"
dir cv
end
name "ARM C libraries"
dir libcc
end
name "ARM Pascal libraries"
dir libpc
end
name "ARM EM library"
dir libem
end
name "ARM RiscOs library"
dir libros
dir libmon
end
name "ARM floating point library"
dir libfp
end
name "ARM Modula 2 library"
dir libm2
end
name "ARM Occam libraries"
dir liboc
end
name "ARM Basic libraries"
dir libbc
end

View file

@ -1,5 +1,2 @@
LIST
Makefile
end.s
head_em.s
libem_s.a

View file

@ -1,2 +1 @@
Makefile
byte_order.h

3
mach/arm/libmon/.distr Normal file
View file

@ -0,0 +1,3 @@
LIST
head_em.s
libros_s.a

View file

@ -1,3 +1,3 @@
libros_s.a
libmon_s.a
svc.s
swi.s

178
mach/arm/libmon/head_em.s Normal file
View file

@ -0,0 +1,178 @@
! head_em.s
.define begdat,begbss,hol0,argv,envp,_RegHp,_incptflag
.define _Lineno,_Filna,_IgnoreMask,_TrpReg
.sect .text
.sect .rom
.sect .data
.sect .bss
.sect .text
.base 0x8000
ADR R0,begbss
ADR R1,_endbss
MOV R2,#0
ADR R3,_incptflag
STR R2,[R3]
1:
STR R2,[R0],#4
CMP R0,R1
BLT 1B
! the next 2 lines are OS specific:
SWI 16 ! OS_Getenv
SUB R12, R1, #8 ! Get end of ram
! R0 points to command string
! (argv,argc) code for C
! or Pascal file names
MOV R9,R0 ! save pt in R0
MOV R8,#0 ! string length
len:
LDR.B R7,[R9],#1
CMP R7,#0
ADD.NE R8,R8,#1
BNE len
MOV R7,R8 ! save len in R7
! round up to multiple of 4
ADD R8,R8,#4
MVN R6, #3 !FFFFFFFC
AND R8,R8,R6
! make room on stack
SUB R12,R12,R8 ! word aligned
! now determine argc
! OS intercepts blank lines, so
! there must be at least one arg
MOV R9,R0
MOV R6,#0 ! holds argc
MOV R5,#0 ! char count
loop1:
CMP R5,R7
BGT next1
LDR.B R4,[R9],#1
ADD R5,R5,#1
CMP R4,#32
BEQ loop1 !skip spaces
ADD R6,R6,#1 ! new arg
nospace1:
CMP R5,R7
BGT next1
LDR.B R4,[R9],#1
ADD R5,R5,#1
CMP R4,#32
BNE nospace1
CMP R5,R7
BCC loop1
! BEQ loop1
next1:
! store argc
ADR R5,argc
STR R6,[R5]
! copy the string
! onto the stack
MOV R9,R0 !source
MOV R2,R12 !dest
MOV R3,R7 !#chars
loop2:
LDR.B R4,[R9],#1
STR.B R4,[R2],#1
SUB.S R3,R3,#1
BNE loop2
MOV R4, #0 ! zero terminator
STR.B R4,[R2]
! create space on the stack for
! the pointers to individual args
MOV R11, R12 ! string pt
MOV R8,R6,LSL #2
SUB R12,R12,R8
! save pointer to argv[0]
ADR R1,argv
STR R12,[R1]
! determine argv[0] .. argv[argc-1]
! and store on stack
! R11 = start of string
! R7 = string lenth
! R12 = stack pointer
! R6 = argc
MOV R9, #0 !char count
MOV R8, #0 !arg count
MOV R5,R11
loop3:
CMP R9,R7
BGT next2
LDR.B R4,[R5],#1
ADD R9,R9,#1
CMP R4,#32
BEQ loop3
CMP R9,R7
BGT next2
SUB R4,R5,#1 !compensate for incr
STR R4,[R12,R8,LSL #2]
ADD R8,R8,#1
nospace2:
CMP R9,R7
BGT next2
LDR.B R4,[R5],#1
ADD R9,R9,#1
CMP R4,#32
BNE nospace2
CMP R9,R7
BCC loop3
! BEQ loop3
! finally, replace spaces by 0
next2:
MOV R5,R11 !string ptr
MOV R6,R7 !string length
MOV R3,#0
loop4:
CMP R6,#0
BEQ next3
LDR.B R4,[R5]
CMP R4,#32
STR.EQ.B R3,[R5]
ADD R5,R5,#1
SUB R6,R6,#1
BAL loop4
next3:
ADR R11, envp
STMFD R12<,{R11}
ADR R11,argv
LDR R11,[R11]
STMFD R12<,{R11}
ADR R11, argc
LDR R11,[R11]
STMFD R12<,{R11}
BAL.L __m_a_i_n
MOV R11,#0
STMFD R12<,{R11}
MOV R11,#1
STMFD R12<,{R11}
BAL.L _EmMon
.sect .bss
begbss:
.sect .data
begdat:
hol0:
.data4 0
.data4 0
argv:
.data4 0
envp:
.data4 0
argc:
.data4 0
2:
.asciz 'PROGRAM'
.align
_RegHp:
.data4 _endbss
_Lineno:
.data4 0
_Filna:
.data4 0
_IgnoreMask:
.data4 0
_TrpReg:
.data4 0
_incptflag:
.data4 0

4
mach/arm/mach_params Normal file
View file

@ -0,0 +1,4 @@
MACH=arm
SUF=s
ASAR=arch
RANLIB=:

4
mach/em22/mach_params Normal file
View file

@ -0,0 +1,4 @@
MACH=em22
SUF=m
ASAR=arch
RANLIB=: