home *** CD-ROM | disk | FTP | other *** search
- 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
-