Albert Koelmans latest version
This commit is contained in:
parent
0a1b11973a
commit
ad800075eb
4 changed files with 1017 additions and 0 deletions
3
mach/arm/libmon/LIST
Normal file
3
mach/arm/libmon/LIST
Normal file
|
@ -0,0 +1,3 @@
|
|||
libros_s.a
|
||||
svc.s
|
||||
swi.s
|
15
mach/arm/libmon/Makefile
Normal file
15
mach/arm/libmon/Makefile
Normal file
|
@ -0,0 +1,15 @@
|
|||
all:
|
||||
|
||||
install:
|
||||
../../install libros_s.a tail_ros
|
||||
|
||||
cmp:
|
||||
-../../compare libros_s.a tail_ros
|
||||
|
||||
clean:
|
||||
|
||||
opr :
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@arch pv libros_s.a | pr -h `pwd`/libros_s.a
|
905
mach/arm/libmon/svc.s
Normal file
905
mach/arm/libmon/svc.s
Normal file
|
@ -0,0 +1,905 @@
|
|||
.define _EmMon, _EmTrp
|
||||
|
||||
.sect .text
|
||||
|
||||
_EmMon:
|
||||
LDR R11,[R12]
|
||||
CMP R11,#1
|
||||
BNE _2
|
||||
!
|
||||
! EXIT
|
||||
!
|
||||
LDR R2,[R12,#4]
|
||||
MOV R1,#0x41
|
||||
ADD R1,R1,#0x4200
|
||||
ADD R1,R1,#0x450000
|
||||
ADD R1,R1,#0x58000000
|
||||
SWI 17 ! os_exit
|
||||
_2:
|
||||
CMP R11,#3
|
||||
BNE _3
|
||||
!
|
||||
! READ
|
||||
!
|
||||
MOV R0,#4
|
||||
LDR R1,[R12,#4] !fildes
|
||||
CMP R1,#5
|
||||
BGE _22
|
||||
!
|
||||
! READ FROM THE KEYBOARD
|
||||
!
|
||||
LDR R0,[R12,#8] !buffer
|
||||
MOV R10,R0
|
||||
LDR R1,[R12,#12] ! char count
|
||||
CMP R1,#256
|
||||
MOV.CS R1,#255 !OS_Readline max
|
||||
MOV R2,#0
|
||||
MOV R3,#126
|
||||
SWI 14 !OS_READLINE
|
||||
! CR TO LF
|
||||
LDR.B R0,[R10,R1]
|
||||
CMP R0,#13
|
||||
BNE _23
|
||||
MOV R0,#10
|
||||
STR.B R0,[R10,R1]
|
||||
_23:
|
||||
ADD R1,R1,#1 ! INC BUFFER COUNT
|
||||
STMFD R12<,{R1}
|
||||
MOV R0,#0
|
||||
STMFD R12<,{R0}
|
||||
MOV R15,R14
|
||||
_22:
|
||||
! READ FROM A FILE
|
||||
LDR R2,[R12,#8]
|
||||
LDR R3,[R12,#12]
|
||||
STR R5,_savreg
|
||||
STR R4,_savreg2
|
||||
MOV R5,R3
|
||||
SWI 12 !os_gbpb
|
||||
SUB R5,R5,R3
|
||||
STMFD R12<,{R5}
|
||||
MOV R5,#0
|
||||
STMFD R12<,{R5}
|
||||
LDR R5,_savreg
|
||||
LDR R4,_savreg2
|
||||
MOV R15,R14
|
||||
_3:
|
||||
CMP R11,#4
|
||||
BNE _4
|
||||
!
|
||||
! WRITE
|
||||
!
|
||||
LDR R1,[R12,#4]
|
||||
CMP R1,#5
|
||||
BGE _33
|
||||
! WRITE TO THE SCREEN
|
||||
LDR R0,[R12,#8]
|
||||
LDR R1,[R12,#12]
|
||||
SWI 70 !os_writeN
|
||||
! APPEND CR TO LINE ENDING WITH LF
|
||||
LDR R0,[R12,#12]
|
||||
SUB R0,R0,#1
|
||||
LDR R1,[R12,#8]
|
||||
LDR.B R2,[R1,R0]
|
||||
CMP R2,#10
|
||||
SWI.EQ 269 !OUTPUT CR
|
||||
LDR R1,[R12,#12]
|
||||
STMFD R12<,{R1}
|
||||
MOV R1,#0
|
||||
STMFD R12<,{R1}
|
||||
MOV R15,R14
|
||||
_33:
|
||||
! WRITE TO A FILE
|
||||
MOV R0,#2
|
||||
LDR R2,[R12,#8]
|
||||
LDR R3,[R12,#12]
|
||||
STR R5,_savreg
|
||||
STR R4,_savreg2
|
||||
SWI 12 !os_gbpb
|
||||
LDR R1,[R12,#12] !always success
|
||||
STMFD R12<,{R1}
|
||||
LDR R5,_savreg
|
||||
LDR R4,_savreg2
|
||||
MOV R0,#0
|
||||
STMFD R12<,{R0}
|
||||
MOV R15,R14
|
||||
_4:
|
||||
CMP R11,#5
|
||||
BNE _5
|
||||
!
|
||||
! OPEN
|
||||
!
|
||||
LDR R2,[R12,#8]
|
||||
CMP R2,#0
|
||||
BNE _46
|
||||
MOV R0,#67 !READ ONLY
|
||||
BAL _45
|
||||
_46:
|
||||
CMP R2,#2
|
||||
BNE _44
|
||||
MOV R0,#195 !UPDATE, FILE MUST EXIST
|
||||
BAL _45
|
||||
_44:
|
||||
MOV R0,#131 !CREATE AND OPEN FOR UPDATE
|
||||
_45:
|
||||
LDR R1,[R12,#4] !FILE NAME
|
||||
MOV R2,#0 !NO PATH
|
||||
SWI 0x2000D !Xos_find
|
||||
MOV.VS R0,#0
|
||||
CMP R0,#0 !MAP ERROR CODES
|
||||
MOV.EQ R0,#-1
|
||||
STMFD R12<,{R0}
|
||||
MOV R2,#0
|
||||
STMFD R12<,{R2}
|
||||
MOV R15,R14
|
||||
_5:
|
||||
CMP R11,#6
|
||||
BNE _6
|
||||
!
|
||||
! CLOSE
|
||||
!
|
||||
MOV R0,#0
|
||||
LDR R1,[R12,#4]
|
||||
CMP R1,#5
|
||||
BLT _51 !IGNORE IF NOT FILE
|
||||
SWI 0x2000D !Xos_find (IGNORE ERRORS)
|
||||
_51:
|
||||
MOV R0,#0
|
||||
! STMFD R12<,{R0} !not sure...
|
||||
STMFD R12<,{R0}
|
||||
MOV R15,R14
|
||||
_6:
|
||||
CMP R11,#8
|
||||
BNE _7
|
||||
!
|
||||
! CREAT
|
||||
!
|
||||
BAL _44
|
||||
_7:
|
||||
CMP R11,#10
|
||||
BNE _8
|
||||
!
|
||||
! UNLINK
|
||||
!
|
||||
! note that on UNIX, unlink may be
|
||||
! done on an open file. This would
|
||||
! cause an error on RiscOs, which is ignored
|
||||
MOV R0,#6
|
||||
LDR R1,[R12,#4]
|
||||
STR R5,_savreg
|
||||
STR R4,_savreg2
|
||||
CMP R1,#5
|
||||
SWI.GE 0x20008 !os_file
|
||||
LDR R5,_savreg
|
||||
LDR R4,_savreg2
|
||||
MOV R8,#0
|
||||
! STMFD R12<,{R8} ! not sure...
|
||||
STMFD R12<,{R8}
|
||||
MOV R15,R14
|
||||
_8:
|
||||
CMP R11,#12
|
||||
BNE _9
|
||||
!
|
||||
! CHDIR
|
||||
!
|
||||
MOV R0,#0
|
||||
LDR R1,[R12,#4]
|
||||
SWI 41 !os_fscontrol
|
||||
MOV R0,#0
|
||||
STMFD R12<,{R0} !not sure...
|
||||
STMFD R12<,{R0}
|
||||
MOV R15,R14
|
||||
_9:
|
||||
CMP R11,#19
|
||||
BNE _10
|
||||
!
|
||||
! LSEEK
|
||||
!
|
||||
MOV R0,#0 !FIRST GET CURRENT PTR
|
||||
LDR R1,[R12,#4]
|
||||
SWI 9 !OS_ARGS
|
||||
MOV R11,R2
|
||||
LDR R3,[R12,#12] !NOW DO THE LSEEK
|
||||
CMP R3,#2
|
||||
BEQ _92
|
||||
CMP R3,#1
|
||||
BEQ _91
|
||||
LDR R1,[R12,#4]
|
||||
LDR R2,[R12,#8]
|
||||
_90:
|
||||
MOV R0,#1
|
||||
SWI 9 !os_args
|
||||
BAL _99
|
||||
_92:
|
||||
MOV R0,#2
|
||||
LDR R1,[R12,#4]
|
||||
SWI 9 !os_args
|
||||
LDR R8,[R12,#8]
|
||||
ADD R2,R2,R8
|
||||
LDR R1,[R12,#4]
|
||||
BAL _90
|
||||
_91:
|
||||
MOV R0,#0
|
||||
LDR R1,[R12,#4]
|
||||
SWI 9 !os_args
|
||||
LDR R3,[R12,#8]
|
||||
ADD R2,R1,R3
|
||||
BAL _90
|
||||
_99:
|
||||
STMFD R12<,{R11}
|
||||
MOV R0,#0
|
||||
STMFD R12<,{R0}
|
||||
MOV R15,R14
|
||||
_10:
|
||||
CMP R11, #54
|
||||
BNE _1001
|
||||
!
|
||||
! IOCTL
|
||||
! always returns 0
|
||||
!
|
||||
MOV R0, #0
|
||||
STMFD R12<, {R0}
|
||||
MOV R15, R14
|
||||
!
|
||||
! TIMES
|
||||
!
|
||||
_1001:
|
||||
CMP R11, #43
|
||||
BNE _1003
|
||||
ADR R1,_17
|
||||
MOV R0,#3
|
||||
STR R0,[R1]
|
||||
MOV R0,#14
|
||||
SWI 7 !OS_WORD
|
||||
ADR R0,_17
|
||||
LDR R0,[R0]
|
||||
MOV R1,#0
|
||||
LDR R2,[R12,#4]
|
||||
STR R0,[R2]
|
||||
STR R0,[R2,#4] ! utime = stime
|
||||
STR R1,[R2,#8]
|
||||
STR R1,[R2,#12]
|
||||
STMFD R12<,{R1}
|
||||
MOV R15,R14
|
||||
!
|
||||
! GETPID
|
||||
! returns random number (clock ticks)
|
||||
!
|
||||
_1003:
|
||||
CMP R11, #20
|
||||
BNE _1002
|
||||
ADR R1,_17
|
||||
MOV R0,#3
|
||||
STR R0,[R1]
|
||||
MOV R0,#14
|
||||
SWI 7 !OS_WORD
|
||||
ADR R0,_17
|
||||
LDR R0,[R0]
|
||||
AND R0,R0,#0xFF
|
||||
STMFD R12<,{R0}
|
||||
MOV R15,R14
|
||||
!
|
||||
! EXECE
|
||||
! ONLY FIRST PARAMETER IS USED
|
||||
!
|
||||
_1002:
|
||||
CMP R11, #59
|
||||
BNE _1000
|
||||
LDR R0,[R12,#4]
|
||||
SWI 5 !OS_CLI
|
||||
MOV R0,#0
|
||||
STMFD R12<,{R0}
|
||||
MOV R15,R14
|
||||
!
|
||||
! NOT IMPLEMENTED CALLS
|
||||
! ---------------------
|
||||
! THESE CALLS MAY REQUIRE DIFFERENT
|
||||
! STACK HANDLING (THERE MAY BE BUGS HERE!!)
|
||||
! (the number of return values does not always
|
||||
! correspond to the Ack manual)
|
||||
!
|
||||
_1000:
|
||||
CMP R11,#7
|
||||
BNE _9726
|
||||
ADR R0,_9607
|
||||
BAL _9352
|
||||
_9726:
|
||||
CMP R11,#26
|
||||
BNE _9727
|
||||
ADR R0,_9626
|
||||
BAL _9352
|
||||
_9727:
|
||||
CMP R11,#27
|
||||
BNE _9741
|
||||
ADR R0,_9627
|
||||
BAL _9352
|
||||
_9741:
|
||||
CMP R11,#41
|
||||
BNE _9742
|
||||
ADR R0,_9641
|
||||
BAL _9352
|
||||
_9742:
|
||||
CMP R11,#42
|
||||
BNE _9748
|
||||
ADR R0,_9642
|
||||
BAL _9352
|
||||
_9748:
|
||||
CMP R11,#48
|
||||
BNE _9760
|
||||
ADR R0,_9648
|
||||
BAL _9352
|
||||
_9760:
|
||||
CMP R11,#60
|
||||
BNE _9709
|
||||
ADR R0,_9660
|
||||
BAL _9352
|
||||
_9709:
|
||||
CMP R11,#9
|
||||
BNE _9714
|
||||
ADR R0,_9609
|
||||
BAL _9351
|
||||
_9714:
|
||||
CMP R11,#14
|
||||
BNE _9715
|
||||
ADR R0,_9614
|
||||
BAL _9351
|
||||
_9715:
|
||||
CMP R11,#15
|
||||
BNE _9716
|
||||
ADR R0,_9615
|
||||
BAL _9351
|
||||
_9716:
|
||||
CMP R11,#16
|
||||
BNE _9718
|
||||
ADR R0,_9616
|
||||
BAL _9351
|
||||
_9718:
|
||||
CMP R11,#18
|
||||
BNE _9720
|
||||
ADR R0,_9618
|
||||
BAL _9351
|
||||
_9720:
|
||||
CMP R11,#20
|
||||
BNE _9721
|
||||
ADR R0,_9620
|
||||
BAL _9351
|
||||
_9721:
|
||||
CMP R11,#21
|
||||
BNE _9722
|
||||
ADR R0,_9621
|
||||
BAL _9351
|
||||
_9722:
|
||||
CMP R11,#22
|
||||
BNE _9723
|
||||
ADR R0,_9622
|
||||
BAL _9351
|
||||
_9723:
|
||||
CMP R11,#23
|
||||
BNE _9724
|
||||
ADR R0,_9623
|
||||
BAL _9351
|
||||
_9724:
|
||||
CMP R11,#24
|
||||
BNE _9725
|
||||
ADR R0,_9624
|
||||
BAL _9351
|
||||
_9725:
|
||||
CMP R11,#25
|
||||
BNE _9728
|
||||
ADR R0,_9625
|
||||
BAL _9351
|
||||
_9728:
|
||||
CMP R11,#28
|
||||
BNE _9729
|
||||
ADR R0,_9628
|
||||
BAL _9351
|
||||
_9729:
|
||||
CMP R11,#29
|
||||
BNE _9730
|
||||
ADR R0,_9629
|
||||
BAL _9351
|
||||
_9730:
|
||||
CMP R11,#30
|
||||
BNE _9733
|
||||
ADR R0,_9630
|
||||
BAL _9351
|
||||
_9733:
|
||||
CMP R11,#33
|
||||
BNE _9734
|
||||
ADR R0,_9633
|
||||
BAL _9351
|
||||
_9734:
|
||||
CMP R11,#34
|
||||
BNE _9735
|
||||
ADR R0,_9634
|
||||
BAL _9351
|
||||
_9735:
|
||||
CMP R11,#35
|
||||
BNE _9736
|
||||
ADR R0,_9635
|
||||
BAL _9351
|
||||
_9736:
|
||||
CMP R11,#36
|
||||
BNE _9737
|
||||
ADR R0,_9636
|
||||
BAL _9351
|
||||
_9737:
|
||||
CMP R11,#37
|
||||
BNE _9744
|
||||
ADR R0,_9637
|
||||
BAL _9351
|
||||
_9744:
|
||||
CMP R11,#44
|
||||
BNE 9746
|
||||
ADR R0,_9644
|
||||
BAL _9351
|
||||
_9746:
|
||||
CMP R11,#46
|
||||
BNE 9747
|
||||
ADR R0,_9646
|
||||
BAL _9351
|
||||
_9747:
|
||||
CMP R11,#47
|
||||
BNE 9751
|
||||
ADR R0,_9647
|
||||
BAL _9351
|
||||
_9751:
|
||||
CMP R11,#51
|
||||
BNE 9753
|
||||
ADR R0,_9651
|
||||
BAL _9351
|
||||
_9753:
|
||||
CMP R11,#53
|
||||
BNE 9756
|
||||
ADR R0,_9653
|
||||
BAL _9351
|
||||
_9756:
|
||||
CMP R11,#56
|
||||
BNE 9761
|
||||
ADR R0,_9656
|
||||
BAL _9351
|
||||
_9761:
|
||||
ADR R0,_9661
|
||||
BAL _9351
|
||||
|
||||
|
||||
.sect .data
|
||||
_14:
|
||||
.data4 0
|
||||
.data4 0
|
||||
_15:
|
||||
.asciz "Monitor call "
|
||||
.data4 0
|
||||
.align 4
|
||||
_16:
|
||||
.asciz ": not implemented"
|
||||
.data4 0
|
||||
.align 4
|
||||
_17:
|
||||
.data4 3
|
||||
.data4 0
|
||||
.align 4
|
||||
|
||||
.sect .text
|
||||
|
||||
_EmTrp:
|
||||
SWI 3 !OS_NEWLINE
|
||||
LDR R11,[R12]
|
||||
!
|
||||
! deal with ignore mask here
|
||||
! (not yet implemented)
|
||||
!
|
||||
CMP R11,#0
|
||||
BNE _9101
|
||||
ADR R0,_9000
|
||||
BAL _9200
|
||||
_9101:
|
||||
CMP R11,#1
|
||||
BNE _9102
|
||||
ADR R0,_9001
|
||||
BAL _9200
|
||||
_9102:
|
||||
CMP R11,#2
|
||||
BNE _9103
|
||||
ADR R0,_9002
|
||||
BAL _9200
|
||||
_9103:
|
||||
CMP R11,#3
|
||||
BNE _9104
|
||||
ADR R0,_9003
|
||||
BAL _9200
|
||||
_9104:
|
||||
CMP R11,#4
|
||||
BNE _9105
|
||||
ADR R0,_9004
|
||||
BAL _9200
|
||||
_9105:
|
||||
CMP R11,#5
|
||||
BNE _9106
|
||||
ADR R0,_9005
|
||||
BAL _9200
|
||||
_9106:
|
||||
CMP R11,#6
|
||||
BNE _9107
|
||||
ADR R0,_9006
|
||||
BAL _9200
|
||||
_9107:
|
||||
CMP R11,#7
|
||||
BNE _9108
|
||||
ADR R0,_9007
|
||||
BAL _9200
|
||||
_9108:
|
||||
CMP R11,#8
|
||||
BNE _9109
|
||||
ADR R0,_9008
|
||||
BAL _9200
|
||||
_9109:
|
||||
CMP R11,#9
|
||||
BNE _9110
|
||||
ADR R0,_9009
|
||||
BAL _9200
|
||||
_9110:
|
||||
CMP R11,#10
|
||||
BNE _9111
|
||||
ADR R0,_9010
|
||||
BAL _9200
|
||||
_9111:
|
||||
CMP R11,#11
|
||||
BNE _9112
|
||||
ADR R0,_9011
|
||||
BAL _9200
|
||||
_9112:
|
||||
CMP R11,#12
|
||||
BNE _9113
|
||||
ADR R0,_9012
|
||||
BAL _9200
|
||||
_9113:
|
||||
CMP R11,#13
|
||||
BNE _9114
|
||||
ADR R0,_9013
|
||||
BAL _9200
|
||||
_9114:
|
||||
CMP R11,#14
|
||||
BNE _9115
|
||||
ADR R0,_9014
|
||||
BAL _9200
|
||||
_9115:
|
||||
CMP R11,#15
|
||||
BNE _9116
|
||||
ADR R0,_9015
|
||||
BAL _9200
|
||||
_9116:
|
||||
CMP R11,#16
|
||||
BNE _9117
|
||||
ADR R0,_9016
|
||||
BAL _9200
|
||||
_9117:
|
||||
CMP R11,#17
|
||||
BNE _9118
|
||||
ADR R0,_9017
|
||||
BAL _9200
|
||||
_9118:
|
||||
CMP R11,#18
|
||||
BNE _9119
|
||||
ADR R0,_9018
|
||||
BAL _9200
|
||||
_9119:
|
||||
CMP R11,#19
|
||||
BNE _9120
|
||||
ADR R0,_9019
|
||||
BAL _9200
|
||||
_9120:
|
||||
CMP R11,#20
|
||||
BNE _9121
|
||||
ADR R0,_9020
|
||||
BAL _9200
|
||||
_9121:
|
||||
CMP R11,#21
|
||||
BNE _9122
|
||||
ADR R0,_9021
|
||||
BAL _9200
|
||||
_9122:
|
||||
CMP R11,#22
|
||||
BNE _9123
|
||||
ADR R0,_9022
|
||||
BAL _9200
|
||||
_9123:
|
||||
CMP R11,#23
|
||||
BNE _9124
|
||||
ADR R0,_9023
|
||||
BAL _9200
|
||||
_9124:
|
||||
CMP R11,#24
|
||||
BNE _9125
|
||||
ADR R0,_9024
|
||||
BAL _9200
|
||||
_9125:
|
||||
CMP R11,#25
|
||||
BNE _9126
|
||||
ADR R0,_9025
|
||||
BAL _9200
|
||||
_9126:
|
||||
CMP R11,#26
|
||||
BNE _9127
|
||||
ADR R0,_9026
|
||||
BAL _9200
|
||||
_9127:
|
||||
CMP R11,#27
|
||||
BNE _9128
|
||||
ADR R0,_9027
|
||||
BAL _9200
|
||||
_9128:
|
||||
CMP R11,#127
|
||||
BGT _9129
|
||||
ADR R0,_9028
|
||||
SWI 2 !OS_WRITE0
|
||||
MOV R0,R11
|
||||
ADR R1,_12
|
||||
MOV R2,#5
|
||||
SWI 217 !CONVERT
|
||||
SUB R1,R1,R0
|
||||
SWI 70 !WRITEN
|
||||
BAL _9300
|
||||
_9129:
|
||||
ADR R0,_11
|
||||
SWI 2 !OS_WRITE0
|
||||
MOV R0,R11
|
||||
ADR R1,_12
|
||||
MOV R2,#5
|
||||
SWI 217 !CONVERT
|
||||
SUB R1,R1,R0
|
||||
SWI 70 !WRITEN
|
||||
BAL _9300
|
||||
_9200: SWI 2
|
||||
_9300:
|
||||
ADR R0, _Lineno
|
||||
LDR R0,[R0]
|
||||
CMP R0,#0
|
||||
BEQ _9301
|
||||
MOV R10,R0
|
||||
ADR R0,_9050
|
||||
SWI 2
|
||||
MOV R0,R10
|
||||
ADR R1,_12
|
||||
MOV R2,#5
|
||||
SWI 217
|
||||
SUB R1,R1,R0
|
||||
SWI 70
|
||||
SWI 3
|
||||
BAL _9302
|
||||
_9301:
|
||||
ADR R0,_9501
|
||||
SWI 2
|
||||
SWI 3
|
||||
_9302:
|
||||
MOV R0,#1
|
||||
STMFD R12<,{R0}
|
||||
STMFD R12<,{R0}
|
||||
BAL.L _EmMon
|
||||
_9351:
|
||||
SWI 2 !WRITE0
|
||||
ADR R0,_16
|
||||
SWI 2 !OS_WRITE0
|
||||
SWI 3 !NEWLINE
|
||||
MOV R0, #0
|
||||
STMFD R12<,{R0}
|
||||
MOV R15,R14
|
||||
_9352:
|
||||
SWI 2 !WRITE0
|
||||
ADR R0,_16
|
||||
SWI 2 !OS_WRITE0
|
||||
SWI 3 !NEWLINE
|
||||
MOV R0, #0
|
||||
STMFD R12<,{R0}
|
||||
STMFD R12<,{R0}
|
||||
MOV R15,R14
|
||||
|
||||
|
||||
.sect.data
|
||||
_11:
|
||||
.asciz "Trap "
|
||||
.align 4
|
||||
_12:
|
||||
.data4 0
|
||||
.data4 0
|
||||
_9000:
|
||||
.asciz "Array bound error "
|
||||
.align 4
|
||||
_9001:
|
||||
.asciz "Range bound error "
|
||||
.align 4
|
||||
_9002:
|
||||
.asciz "Set bound error "
|
||||
.align 4
|
||||
_9003:
|
||||
.asciz "Integer overflow "
|
||||
.align 4
|
||||
_9004:
|
||||
.asciz "Floating overflow "
|
||||
.align 4
|
||||
_9005:
|
||||
.asciz "Floating underflow "
|
||||
.align 4
|
||||
_9006:
|
||||
.asciz "Divide by 0 "
|
||||
.align 4
|
||||
_9007:
|
||||
.asciz "Divide by 0.0 "
|
||||
.align 4
|
||||
_9008:
|
||||
.asciz "Undefined integer "
|
||||
.align 4
|
||||
_9009:
|
||||
.asciz "Undefined float "
|
||||
.align 4
|
||||
_9010:
|
||||
.asciz "Conversion error "
|
||||
.align 4
|
||||
_9011:
|
||||
.asciz "unknown trap "
|
||||
.align 4
|
||||
_9012:
|
||||
.asciz "unknown trap "
|
||||
.align 4
|
||||
_9013:
|
||||
.asciz "unknown trap "
|
||||
.align 4
|
||||
_9014:
|
||||
.asciz "unknown trap "
|
||||
.align 4
|
||||
_9015:
|
||||
.asciz "unknown trap "
|
||||
.align 4
|
||||
_9016:
|
||||
.asciz "Stack overflow "
|
||||
.align 4
|
||||
_9017:
|
||||
.asciz "Heap overflow "
|
||||
.align 4
|
||||
_9018:
|
||||
.asciz "Illegal instruction "
|
||||
.align 4
|
||||
_9019:
|
||||
.asciz "Illegal size argument "
|
||||
.align 4
|
||||
_9020:
|
||||
.asciz "Case error "
|
||||
.align 4
|
||||
_9021:
|
||||
.asciz "Addressing non-existent memory "
|
||||
.align 4
|
||||
_9022:
|
||||
.asciz "Bad pointer used "
|
||||
.align 4
|
||||
_9023:
|
||||
.asciz "Program counter out of range "
|
||||
.align 4
|
||||
_9024:
|
||||
.asciz "Bad argument of LAE "
|
||||
.align 4
|
||||
_9025:
|
||||
.asciz "Bad monitor call "
|
||||
.align 4
|
||||
_9026:
|
||||
.asciz "Argument of LIN too high "
|
||||
.align 4
|
||||
_9027:
|
||||
.asciz "GOTO decriptor error "
|
||||
.align 4
|
||||
_9028:
|
||||
.asciz "Language run-time trap "
|
||||
.align 4
|
||||
_9501:
|
||||
.asciz " (line number unknown)"
|
||||
.align 4
|
||||
_9050:
|
||||
.asciz " at line "
|
||||
.align 4
|
||||
|
||||
_9607:
|
||||
.asciz "Wait"
|
||||
.align 4
|
||||
_9609:
|
||||
.asciz "Link"
|
||||
.align 4
|
||||
_9614:
|
||||
.asciz "Mknod"
|
||||
.align 4
|
||||
_9615:
|
||||
.asciz "Chmod"
|
||||
.align 4
|
||||
_9616:
|
||||
.asciz "Chown"
|
||||
.align 4
|
||||
_9618:
|
||||
.asciz "Stat"
|
||||
.align 4
|
||||
_9620:
|
||||
.asciz "Getpid"
|
||||
.align 4
|
||||
_9621:
|
||||
.asciz "Mount"
|
||||
.align 4
|
||||
_9622:
|
||||
.asciz "Umount"
|
||||
.align 4
|
||||
_9623:
|
||||
.asciz "Setuid"
|
||||
.align 4
|
||||
_9624:
|
||||
.asciz "Getuid"
|
||||
.align 4
|
||||
_9625:
|
||||
.asciz "Stime"
|
||||
.align 4
|
||||
_9626:
|
||||
.asciz "Ptrace"
|
||||
.align 4
|
||||
_9627:
|
||||
.asciz "Alarm"
|
||||
.align 4
|
||||
_9628:
|
||||
.asciz "Fstat"
|
||||
.align 4
|
||||
_9629:
|
||||
.asciz "Pause"
|
||||
.align 4
|
||||
_9630:
|
||||
.asciz "Utime"
|
||||
.align 4
|
||||
_9633:
|
||||
.asciz "Access"
|
||||
.align 4
|
||||
_9634:
|
||||
.asciz "Nice"
|
||||
.align 4
|
||||
_9635:
|
||||
.asciz "Ftime"
|
||||
.align 4
|
||||
_9636:
|
||||
.asciz "Sync"
|
||||
.align 4
|
||||
_9637:
|
||||
.asciz "Kill"
|
||||
.align 4
|
||||
_9641:
|
||||
.asciz "Dup"
|
||||
.align 4
|
||||
_9642:
|
||||
.asciz "Pipe"
|
||||
.align 4
|
||||
_9644:
|
||||
.asciz "Profil"
|
||||
.align 4
|
||||
_9646:
|
||||
.asciz "Setgid"
|
||||
.align 4
|
||||
_9647:
|
||||
.asciz "Getgid"
|
||||
.align 4
|
||||
_9648:
|
||||
.asciz "Sigtrp"
|
||||
.align 4
|
||||
_9651:
|
||||
.asciz "Acct"
|
||||
.align 4
|
||||
_9653:
|
||||
.asciz "Lock"
|
||||
.align 4
|
||||
_9656:
|
||||
.asciz "Mpxcall"
|
||||
.align 4
|
||||
_9660:
|
||||
.asciz "Umask"
|
||||
.align 4
|
||||
_9661:
|
||||
.asciz "Chroot"
|
||||
.align 4
|
||||
|
||||
.sect .data
|
||||
_savreg:
|
||||
.data4 0
|
||||
_savreg2:
|
||||
.data4 0
|
||||
|
||||
|
94
mach/arm/libmon/swi.s
Normal file
94
mach/arm/libmon/swi.s
Normal file
|
@ -0,0 +1,94 @@
|
|||
.define _Swi, _Swix, _bbc_get, _bbc_vduw, _bbc_vdu
|
||||
.sect .text
|
||||
|
||||
! Swi(code, regpt)
|
||||
|
||||
_Swi:
|
||||
ADR R11,_100
|
||||
LDR R10,[R11]
|
||||
LDR R9,[R12]
|
||||
AND R10,R10,#0xFF000000
|
||||
AND R9,R9,#0xFFFFFF
|
||||
ORR R10,R10,R9
|
||||
STR R10,[R11]
|
||||
LDR R11,[R12,#4] ! PT TO REGS
|
||||
STMFD R12<,{R4,R5,R6,R7}
|
||||
LDR R0,[R11,#0]
|
||||
LDR R1,[R11,#4]
|
||||
LDR R2,[R11,#8]
|
||||
LDR R3,[R11,#12]
|
||||
LDR R4,[R11,#16]
|
||||
LDR R5,[R11,#20]
|
||||
LDR R6,[R11,#24]
|
||||
LDR R7,[R11,#28]
|
||||
LDR R8,[R11,#32]
|
||||
LDR R9,[R11,#36]
|
||||
_100:
|
||||
SWI 0
|
||||
STR R0,[R11,#0]
|
||||
STR R1,[R11,#4]
|
||||
STR R2,[R11,#8]
|
||||
STR R3,[R11,#12]
|
||||
STR R4,[R11,#16]
|
||||
STR R5,[R11,#20]
|
||||
STR R6,[R11,#24]
|
||||
STR R7,[R11,#28]
|
||||
STR R8,[R11,#32]
|
||||
STR R9,[R11,#36]
|
||||
LDMFD R12<,{R4,R5,R6,R7}
|
||||
MOV.S R15,R14
|
||||
|
||||
_Swix:
|
||||
ADR R11,_101
|
||||
LDR R10,[R11]
|
||||
LDR R9,[R12]
|
||||
AND R10,R10,#0xFF000000
|
||||
AND R9,R9,#0xFFFFFF
|
||||
ORR R10,R10,R9
|
||||
ORR R10,R10,#0x20000
|
||||
STR R10,[R11]
|
||||
LDR R11,[R12,#4]
|
||||
STMFD R12<,{R4,R5,R6,R7}
|
||||
LDR R0,[R11,#0]
|
||||
LDR R1,[R11,#4]
|
||||
LDR R2,[R11,#8]
|
||||
LDR R3,[R11,#12]
|
||||
LDR R4,[R11,#16]
|
||||
LDR R5,[R11,#20]
|
||||
LDR R6,[R11,#24]
|
||||
LDR R7,[R11,#28]
|
||||
LDR R8,[R11,#32]
|
||||
LDR R9,[R11,#36]
|
||||
_101:
|
||||
SWI 0
|
||||
STR R0,[R11,#0]
|
||||
STR R1,[R11,#4]
|
||||
STR R2,[R11,#8]
|
||||
STR R3,[R11,#12]
|
||||
STR R4,[R11,#16]
|
||||
STR R5,[R11,#20]
|
||||
STR R6,[R11,#24]
|
||||
STR R7,[R11,#28]
|
||||
STR R8,[R11,#32]
|
||||
STR R9,[R11,#36]
|
||||
MOV.VC R0, #0
|
||||
LDMFD R12<,{R4,R5,R6,R7}
|
||||
MOV.S R15,R14
|
||||
|
||||
! the rest is for Acorn compatibility
|
||||
|
||||
_bbc_get:
|
||||
SWI 4 ! READC
|
||||
MOV.S R15,R14
|
||||
|
||||
_bbc_vduw:
|
||||
LDR R0,[R12]
|
||||
SWI 0 !WRITEC
|
||||
MOV R0,R0,LSR #8
|
||||
SWI 0
|
||||
MOV.S R15,R14
|
||||
|
||||
_bbc_vdu:
|
||||
LDR R0,[R12]
|
||||
SWI 0
|
||||
MOV.S R15,R14
|
Loading…
Reference in a new issue