home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ARM Club 3
/
TheARMClub_PDCD3.iso
/
hensa
/
appmanager
/
b068_1
/
s
/
startup
next >
Wrap
Text File
|
1992-01-26
|
7KB
|
350 lines
AREA |main|,CODE,DATA
KEEP
GET %.SwiDefs
GBLS version
version SETS "0.04"
debug * 0
[ debug<>0
version SETS "$version":CC:" (debug)"
]
ENTRY
start
ShowStr 16,"StartUp ($version)"
ADRL sp,stack
SWI OS_GetEnv
ADRL r2,os_cmd
cli_skip
LDRB r1,[r0]
CMP r1,#32
BCC cli_args
CMP r1,#'-'
ADDNE r0,r0,#1
BNE cli_skip
cli_args
LDRB r1,[r0],#1
CMP r1,#32
MOVCC r1,#13
STRB r1,[r2],#1
CMP r1,#13
BNE cli_args
ADRL r0,os_template
ADRL r1,os_cmd
ADRL r2,os_params
MOV r3,#&100
SWI OS_ReadArgs
LDR r1,os_params+16
CMP r1,#0
LDRNEB r0,[r1,#1]
LDRNEB r2,[r1,#2]
ORRNE r0,r0,r2,ASL #8
LDRNEB r2,[r1,#3]
ORRNE r0,r0,r2,ASL #16
LDRNEB r2,[r1,#4]
ORRNE r1,r0,r2,ASL #24
STRNE r1,cmdtime
LDR r1,os_params+4
CMP r1,#0
LDRNEB r0,[r1,#1]
LDRNEB r2,[r1,#2]
ORRNE r0,r0,r2,ASL #8
LDRNEB r2,[r1,#3]
ORRNE r0,r0,r2,ASL #16
LDRNEB r2,[r1,#4]
ORRNE r1,r0,r2,ASL #24
STRNE r1,pause
LDR r1,os_params+8
CMP r1,#0
LDRNEB r0,[r1,#1]
LDRNEB r2,[r1,#2]
ORRNE r0,r0,r2,ASL #8
LDRNEB r2,[r1,#3]
ORRNE r0,r0,r2,ASL #16
LDRNEB r2,[r1,#4]
ORRNE r1,r0,r2,ASL #24
CMP r1,#0
STRNE r1,perpoll
LDR r1,os_params
CMP r1,#0
LDRNEB r2,[r1]
LDRNEB r0,[r1,#1]
ORRNES r2,r2,r0,ASL #8
BEQ shutdown
LDRB r4,[r1,#2]!
CMP r4,#'+'
BNE not_file
ADD r1,r1,#1
SUBS r2,r2,#1
BEQ shutdown
not_file
ADRL r3,oscmd
get_fsp
LDRB r0,[r1],#1
STRB r0,[r3],#1
SUBS r2,r2,#1
BNE get_fsp
MOV r0,#13
STRB r0,[r3]
CMP r4,#'+'
BNE not_file2
ADRL r1,oscmd
LDR r0,os_params+24
CMP r0,#0
BNE file_load
MOV r0,#&40
SWI OS_Find
STR r0,chan
CMP r0,#0
BNE not_file2
B shutdown
file_load
MOV r0,#5
SWI OS_File
ADRL r10,end
STR r10,cache_ptr
ADD r10,r10,r4
STR r10,cache_end
ADRL r0,start
SUB r0,r10,r0
MOV r1,#-1
SWI Wimp_SlotSize
MOV r0,#&FF
ADRL r1,oscmd
ADRL r2,end
MOV r3,#0
SWI OS_File
B not_file3
not_file2
ADRL r0,start
ADRL r10,end
SUB r0,r10,r0
MOV r1,#-1
SWI Wimp_SlotSize
not_file3
LDR r0,pause
ADRL r1,task_block2
MOV r2,#11
SWI OS_ConvertCardinal4
MOV r0,#200 ; Sigh
ADRL r1,task_id
LDR r1,[r1]
ADRL r2,task_block
SWI Wimp_Initialise
STR r1,task_handle
ShowStr 18,"Task Handle"
Show 1,2,Hex
wimp_loop
ADRL r1,task_block
LDR r3,pause
CMP r3,#0
MOVEQ r0,#0
SWIEQ Wimp_Poll
SWINE OS_ReadMonotonicTime
ADDNE r2,r0,r3
MOVNE r0,#0
SWINE Wimp_PollIdle
CMP r0,#17
CMPNE r0,#18
BEQ wimp_msg
CMP r0,#0
BNE wimp_loop
LDR r0,os_params+24
CMP r0,#0
BNE cache_cmd
LDR r1,chan
CMP r1,#0
BEQ single_cmd
LDR r3,perpoll
LDR r4,cmdtime
CMP r4,#0
SWINE OS_ReadMonotonicTime
ADDNE r4,r4,r0
do_next_chan
ADRL r2,oscmd
get_chan_cmd
SWI OS_BGet
BCS chan_eof
CMP r0,#32
MOVCC r0,#13
STRB r0,[r2],#1
CMP r0,#13
BNE get_chan_cmd
ADRL r0,oscmd
LDR r2,os_params+20
CMP r2,#0
SWIEQ Wimp_StartTask
SWINE OS_CLI
repeat_chan
SUBS r3,r3,#1
BNE do_next_chan
CMP r4,#0
BEQ wimp_loop
SWI OS_ReadMonotonicTime
CMP r0,r4
MOVCC r3,#1
BCC do_next_chan
B wimp_loop
chan_eof
LDR r0,os_params+12
CMP r0,#0
BEQ shutdown
MOV r0,#1
MOV r2,#0
SWI OS_Args
B repeat_chan
cache_cmd
LDR r5,cache_end
LDR r6,cache_ptr
LDR r3,perpoll
LDR r4,cmdtime
CMP r4,#0
SWINE OS_ReadMonotonicTime
ADDNE r4,r4,r0
do_next_cache
ADRL r2,oscmd
get_cache_cmd
CMP r6,r5
BEQ cache_eof
LDRB r0,[r6],#1
CMP r0,#32
MOVCC r0,#13
STRB r0,[r2],#1
CMP r0,#13
BNE get_cache_cmd
ADRL r0,oscmd
LDR r2,os_params+20
CMP r2,#0
SWIEQ Wimp_StartTask
SWINE OS_CLI
repeat_cache
SUBS r3,r3,#1
BNE do_next_cache
CMP r4,#0
STREQ r6,cache_ptr
BEQ wimp_loop
SWI OS_ReadMonotonicTime
CMP r0,r4
MOVCC r3,#1
BCC do_next_cache
STR r6,cache_ptr
B wimp_loop
cache_eof
LDR r0,os_params+12
CMP r0,#0
BEQ shutdown
ADRL r6,end
B repeat_cache
single_cmd
LDR r3,perpoll
do_single_again
ADRL r0,oscmd
LDR r1,os_params+20
CMP r1,#0
SWIEQ Wimp_StartTask
SWINE OS_CLI
SUBS r3,r3,#1
BNE do_single_again
LDR r0,os_params+12
CMP r0,#0
BNE wimp_loop
shutdown
LDR r1,chan
CMP r1,#0
MOVNE r0,#0
SWINE OS_Find
LDR r0,task_handle
LDR r1,task_id
SWI Wimp_CloseDown
SWI OS_Exit
wimp_msg
LDR r0,[r1,#16]
CMP r0,#0
BNE wimp_loop
B shutdown
task_handle % 4
chan & 0
pause & 0
cmdtime & 0
perpoll & 1
cache_ptr & 0
cache_end & 0
task_id = "TASK"
task_block = "StartUp_"
ALIGN
task_block2 % &100
os_cmd % &100
oscmd % &100
os_params % &100
os_template = "/g,pause/e,perpoll/e,repeat/s,cmdtime/e,oscli/s,cache/s",13
ALIGN
% &100
stack
end
END