home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / programs / filing / filer_patch / Library / LHA / Patch < prev   
Encoding:
Text File  |  1996-05-23  |  1.7 KB  |  45 lines

  1. In   lha-old
  2. Out  !Run
  3. Type Absolute
  4. Ver  1.00d
  5.  
  6. @ &A590
  7. ; ro_to_generic
  8. ; > r0 -> string
  9. ; < r0 unchanged, string modified
  10. ; exchange . and /
  11.    MOV     r4,r0                         ; r4->string
  12.                                          ; Skipped a R6=0
  13.    MOV     r5,#0                         ; offset within string
  14.    B       $eoloop                       ; do as a while loop
  15. $loop
  16.    LDRB    r0,[r4,r5]                    ; get byte
  17.    CMP     r0,#ASC(".")                  ; is it . ?
  18.    CMPNE   r0,#ASC("/")                  ; how about / instead ?
  19.    EOREQ   r0,r0,#ASC(".") EOR ASC("/")  ; if either swap them (nice code ;-)
  20.    STREQB  r0,[r4,r5]                    ; store back
  21.    CMP     r0,#ASC(":")                  ; is it colon ? if so, ignore before
  22.    BNE     $notcolon
  23.    ADD     r0,r4,r5                      ; r0=current position
  24.    ADD     r1,r0,#1                      ; r1=next position
  25.    MOV     r0,r4                         ; r0=start of string
  26.    BL      &1270C                        ; strcpy
  27.    MOV     r5,#0                         ; start again through this substring
  28. $notcolon
  29.    ADD     r5,r5,#1
  30. $eoloop
  31.    MOV     r0,r4                         ; get start of string
  32.    BL      &12750                        ; r0 = strlen
  33.    CMP     r0,r5                         ; are we at end ?
  34.    BHI     $loop                         ; if so, exit
  35. $exit
  36.    LDMDB   r11,{r4-r7,r11,r13,pc}^       ; return
  37.  
  38. @ &9E58
  39.    MOVEQ   r0,#ASC("/")                  ; RO extensions are /, not _ now
  40.                                          ; (for ms->ro)
  41. @ &9f3c
  42.    MOVEQ   r0,#ASC("/")                  ; RO extensions are /, not _ now
  43.                                          ; (for generic->ro)
  44.  
  45.