home *** CD-ROM | disk | FTP | other *** search
/ Acorn User 11 / AUCD11B.iso / LANGUAGES / WraithSet / AwkStuff / MawkSrc / a / sys
Encoding:
Text File  |  1999-11-06  |  2.1 KB  |  82 lines

  1. ; system functions  Asm Assembler
  2.  
  3.  
  4.         AREA SYSFUNC,CODE
  5.         EXPORT getvarval
  6.         EXPORT ftype
  7.         EXPORT exist
  8.         EXPORT iflater
  9.  
  10.  
  11. buf:
  12.         RESB 256
  13.         
  14. ; get string value of a system variable              
  15. getvarval:
  16.                stmfd sp!,{r4,r5,link}
  17.                adr r1,buf
  18.                mov r5,r0
  19.                mvn r2,#0
  20.                mov r3,#0
  21.                mov r4,#3  ; convert to string
  22.                swi &20023     ; XOS_ReadVarVal
  23.                cmp r2,#0  ; does variable exist
  24.                moveq r0,r2  ; if not return null string pointer
  25.                ldmeqfd sp!,{r4,r5,pc}
  26.                mov r0,r5
  27.                mov r2,#256
  28.                mov r3,#0
  29.                mov r4,#3
  30.                swi &20023
  31.                mov r0,r1
  32.                mov r1,#0
  33.                strb r1,[r0,r2]
  34.                ldmfd sp!,{r4,r5,pc}
  35.                
  36. ; get filetype as a number
  37. ftype:
  38.                stmfd sp!,{r4-r6,link}
  39.                mov r1,r0
  40.                mov r0,#23
  41.                swi 8 ; OS_File
  42.                mov r0,r6
  43.                ldmfd sp!,{r4-r6,pc}
  44.                
  45. ; get existence of file
  46. exist:
  47.                stmfd sp!,{r4-r6,link}
  48.                mov r1,r0
  49.                mov r0,#23
  50.                swi 8 ; OS_File
  51.                ldmfd sp!,{r4-r6,pc}
  52.  
  53. ; compare filestamps               
  54. iflater:
  55.                stmfd sp!,{r4-r9,link}              
  56.                mov r7,r1
  57.                mov r1,r0
  58.                mov r0,#23
  59.                swi 8 ; OS_File
  60.                cmp r0,#1
  61.                mvnne r0,#0
  62.                bne error
  63.                mov r8,r2
  64.                mov r9,r3
  65.                mov r1,r7
  66.                mov r0,#23
  67.                swi 8 ; OS_File
  68.                cmp r0,#1
  69.                mvnne r0,#0
  70.                bne error
  71.                cmp r8,r2
  72.                movcc r0,#0
  73.                movgt r0,#1
  74.                ldmnefd sp!,{r4-r9,pc}
  75.                cmp r9,r3
  76.                movcc r0,#0
  77.                movcs r0,#1
  78. error:               
  79.                ldmfd sp!,{r4-r9,pc}     ; exit with -1 either arg not a file
  80.                
  81.                               
  82.