home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 1 / ARM_CLUB_CD.iso / contents / apps / program / a / assembly / FilePoll / source / filepoll next >
Encoding:
Text File  |  1992-05-31  |  2.2 KB  |  135 lines

  1.                 GET %.SwiDefs
  2.  
  3.                 GBLS version
  4. version         SETS "0.02"
  5.  
  6.         ORG &8000
  7.  
  8.         ADRL r0,obeystring
  9.         ADRL r1,obeybuffer
  10.         MOV r2,#&80
  11.         MOV r3,#0
  12.         MOV r4,#0
  13.         SWI OS_ReadVarVal
  14.         STR r2,obeylen
  15.  
  16.         SWI OS_GetEnv
  17.  
  18. cli_skip
  19.         LDRB r2,[r0]
  20.         CMP r2,#32
  21.         BCC cli_args
  22.         CMP r2,#'-'
  23.         ADD r0,r0,#1
  24.         BNE cli_skip
  25.  
  26. cli_args
  27.         MOV r1,r0
  28.         STR r0,fsp_adr
  29.  
  30.         MOV r0,#5
  31.         SWI OS_File
  32.         STR r4,len
  33.         MOV r4,r4,LSR #5
  34.         CMP r4,#&400
  35.         MOVCC r4,#&400
  36.         STR r4,poll_len
  37.  
  38.         CMP r0,#1
  39.         SWINE OS_Exit
  40.  
  41.         LDR r0,poll_len
  42.         ADRL r1,task_name2
  43.         MOV r2,#11
  44.         SWI OS_ConvertHex8
  45.  
  46.         MOV r0,#200
  47.         LDR r1,task_id
  48.         ADR r2,task_name
  49.         SWI Wimp_Initialise
  50.         STR r1,handle
  51.  
  52.         MOV r0,#&40
  53.         LDR r1,fsp_adr
  54.         SWI OS_Find
  55.         STR r0,chan
  56.  
  57.         SWI OS_GetEnv
  58.         MOV r1,r2
  59.         LDR r0,fsp_adr
  60.         SWI OS_WriteEnv
  61.  
  62.         MOV r1,#&8000
  63.         LDR r0,len
  64.         STR r1,ptr_adr
  65.         ADD r1,r1,r0
  66.         TST r1,#3
  67.         BICNE r1,r1,#3
  68.         ADDNE r1,r1,#4
  69.         MOV r4,r1
  70.         ADRL r2,doit_code
  71.         ADRL r3,end
  72.  
  73. movecode
  74.         LDRB r0,[r2],#1
  75.         STRB r0,[r1],#1
  76.         CMP r2,r3
  77.         BNE movecode
  78.         MOV pc,r4
  79.  
  80.  
  81. doit_code
  82. load_loop
  83.         MOV r0,#0
  84.         ADR r1,task_block
  85.         SWI Wimp_Poll
  86.         CMP r0,#0
  87.         BNE load_loop
  88.  
  89.         MOV r0,#4
  90.         LDR r1,chan
  91.         LDR r2,ptr_adr
  92.         LDR r3,poll_len
  93.         SWI OS_GBPB
  94.         STR r2,ptr_adr
  95.         BCC load_loop
  96.  
  97.         MOV r0,#0
  98.         SWI OS_Find
  99.  
  100.         LDR r0,handle
  101.         LDR r1,task_id
  102.         SWI Wimp_CloseDown
  103.  
  104.         ADRL r0,obeystring
  105.         ADRL r1,obeybuffer
  106.         LDR r2,obeylen
  107.         MOV r3,#0
  108.         MOV r4,#0
  109.         SWI OS_SetVarVal
  110.  
  111.         MOV lk,#&8000
  112.         MOV pc,lk
  113.  
  114.  
  115. handle          & 0
  116. fsp_adr         & 0
  117. len
  118. ptr_adr         & 0
  119. poll_len        & 0
  120. chan            & 0
  121. obeybuffer      % &80
  122. obeylen         & 0
  123.  
  124. obeystring      = "Obey$Dir",0
  125.                 ALIGN
  126.  
  127. task_id         = "TASK"
  128. task_name       = "FilePoll_"
  129. task_name2
  130.                 ALIGN
  131. task_block      % &100
  132. end
  133.  
  134.         END
  135.