New installation mechanism
This commit is contained in:
parent
dc2ab49b32
commit
0cc2f6e317
9 changed files with 195 additions and 29 deletions
|
@ -2,13 +2,9 @@ Action
|
||||||
READ_ME
|
READ_ME
|
||||||
as
|
as
|
||||||
cv
|
cv
|
||||||
libbc
|
|
||||||
libcc
|
|
||||||
libem
|
|
||||||
libfp
|
|
||||||
libm2
|
|
||||||
liboc
|
|
||||||
libpc
|
|
||||||
libros
|
|
||||||
ncg
|
ncg
|
||||||
top
|
top
|
||||||
|
libem
|
||||||
|
libfp
|
||||||
|
libend
|
||||||
|
libmon
|
||||||
|
|
|
@ -10,27 +10,12 @@ end
|
||||||
name "ARM cv program"
|
name "ARM cv program"
|
||||||
dir cv
|
dir cv
|
||||||
end
|
end
|
||||||
name "ARM C libraries"
|
|
||||||
dir libcc
|
|
||||||
end
|
|
||||||
name "ARM Pascal libraries"
|
|
||||||
dir libpc
|
|
||||||
end
|
|
||||||
name "ARM EM library"
|
name "ARM EM library"
|
||||||
dir libem
|
dir libem
|
||||||
end
|
end
|
||||||
name "ARM RiscOs library"
|
name "ARM RiscOs library"
|
||||||
dir libros
|
dir libmon
|
||||||
end
|
end
|
||||||
name "ARM floating point library"
|
name "ARM floating point library"
|
||||||
dir libfp
|
dir libfp
|
||||||
end
|
end
|
||||||
name "ARM Modula 2 library"
|
|
||||||
dir libm2
|
|
||||||
end
|
|
||||||
name "ARM Occam libraries"
|
|
||||||
dir liboc
|
|
||||||
end
|
|
||||||
name "ARM Basic libraries"
|
|
||||||
dir libbc
|
|
||||||
end
|
|
||||||
|
|
|
@ -1,5 +1,2 @@
|
||||||
LIST
|
LIST
|
||||||
Makefile
|
|
||||||
end.s
|
|
||||||
head_em.s
|
|
||||||
libem_s.a
|
libem_s.a
|
||||||
|
|
|
@ -1,2 +1 @@
|
||||||
Makefile
|
|
||||||
byte_order.h
|
byte_order.h
|
||||||
|
|
3
mach/arm/libmon/.distr
Normal file
3
mach/arm/libmon/.distr
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
LIST
|
||||||
|
head_em.s
|
||||||
|
libros_s.a
|
|
@ -1,3 +1,3 @@
|
||||||
libros_s.a
|
libmon_s.a
|
||||||
svc.s
|
svc.s
|
||||||
swi.s
|
swi.s
|
||||||
|
|
178
mach/arm/libmon/head_em.s
Normal file
178
mach/arm/libmon/head_em.s
Normal 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
4
mach/arm/mach_params
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
MACH=arm
|
||||||
|
SUF=s
|
||||||
|
ASAR=arch
|
||||||
|
RANLIB=:
|
4
mach/em22/mach_params
Normal file
4
mach/em22/mach_params
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
MACH=em22
|
||||||
|
SUF=m
|
||||||
|
ASAR=arch
|
||||||
|
RANLIB=:
|
Loading…
Reference in a new issue