Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. ;===========================================================================
  2. ; Copyright (c) 1990-2000 Info-ZIP.  All rights reserved.
  3. ;
  4. ; See the accompanying file LICENSE, version 2000-Apr-09 or later
  5. ; (the contents of which are also included in unzip.h) for terms of use.
  6. ; If, for some reason, all these files are missing, the Info-ZIP license
  7. ; also may be found at:  ftp://ftp.info-zip.org/pub/infozip/license.html
  8. ;===========================================================================
  9. ; SWI veneers used by Zip/Unzip
  10. ;
  11.  
  12. r0              RN      0
  13. r1              RN      1
  14. r2              RN      2
  15. r3              RN      3
  16. r4              RN      4
  17. r5              RN      5
  18. r6              RN      6
  19. r7              RN      7
  20. r8              RN      8
  21. r9              RN      9
  22. r10             RN      10
  23. r11             RN      11
  24. r12             RN      12
  25. sp              RN      13
  26. lr              RN      14
  27. pc              RN      15
  28.  
  29. sl              RN      10
  30. fp              RN      11
  31. ip              RN      12
  32.  
  33.  
  34. XOS_Bit                         EQU &020000
  35.  
  36. OS_GBPB                         EQU &00000C
  37. OS_File                         EQU &000008
  38. OS_FSControl                    EQU &000029
  39. OS_CLI                          EQU &000005
  40. OS_ReadC                        EQU &000004
  41. OS_ReadVarVal                   EQU &000023
  42. DDEUtils_Prefix                 EQU &042580
  43. Territory_ReadCurrentTimeZone   EQU &043048
  44. MimeMap_Translate               EQU &050B00
  45.  
  46.         MACRO
  47.         STARTCODE $name
  48.         EXPORT $name
  49. $name
  50.         MEND
  51.  
  52.  
  53.                 AREA    |C$$code|, CODE, READONLY
  54.  
  55. ; os_error *SWI_OS_FSControl_26(char *source, char *dest, int actionmask);
  56.  
  57.         STARTCODE SWI_OS_FSControl_26
  58.  
  59.         MOV     ip, lr
  60.  
  61.         MOV     r3, r2
  62.         MOV     r2, r1
  63.         MOV     r1, r0
  64.         MOV     r0, #26
  65.  
  66.         SWI     OS_FSControl + XOS_Bit
  67.  
  68.         MOVVC   r0, #0
  69.  
  70.         MOVS    pc, ip
  71.  
  72.  
  73. ; os_error *SWI_OS_FSControl_27(char *filename, int actionmask);
  74.  
  75.         STARTCODE SWI_OS_FSControl_27
  76.  
  77.         MOV     ip, lr
  78.  
  79.         MOV     r3, r1
  80.         MOV     r1, r0
  81.         MOV     r0, #27
  82.  
  83.         SWI     OS_FSControl + XOS_Bit
  84.  
  85.         MOVVC   r0, #0
  86.  
  87.         MOVS    pc, ip
  88.  
  89.  
  90. ; os_error *SWI_OS_GBPB_9(char *dirname, void *buf, int *number,
  91. ;                         int *offset, int size, char *match);
  92.  
  93.         STARTCODE SWI_OS_GBPB_9
  94.  
  95.         MOV     ip, sp
  96.         STMFD   sp!, {r2-r6,lr}
  97.         LDMIA   ip, {r5,r6}
  98.         LDR     r4, [r3]
  99.         LDR     r3, [r2]
  100.         MOV     r2, r1
  101.         MOV     r1, r0
  102.         MOV     r0, #9
  103.         SWI     OS_GBPB + XOS_Bit
  104.         LDMVSFD sp!, {r2-r6,pc}^
  105.         MOV     r0, #0
  106.         LDMFD   sp, {r5,r6}
  107.         STR     r3, [r5]
  108.         STR     r4, [r6]
  109.         LDMFD   sp!, {r2-r6,pc}^
  110.  
  111.  
  112. ; os_error *SWI_OS_File_1(char *filename, int loadaddr, int execaddr, int attrib);
  113.  
  114.         STARTCODE SWI_OS_File_1
  115.  
  116.         STMFD   sp!, {r5,lr}
  117.         MOV     r5, r3
  118.         MOV     r3, r2
  119.         MOV     r2, r1
  120.         MOV     r1, r0
  121.         MOV     r0, #1
  122.         SWI     OS_File + XOS_Bit
  123.         MOVVC   r0, #0
  124.         LDMFD   sp!, {r5,pc}^
  125.  
  126.  
  127.  
  128. ; os_error *SWI_OS_File_5(char *filename, int *objtype, int *loadaddr,
  129. ;                         int *execaddr, int *length, int *attrib);
  130.  
  131.         STARTCODE SWI_OS_File_5
  132.  
  133.         STMFD   sp!, {r1-r5,lr}
  134.         MOV     r1, r0
  135.         MOV     r0, #5
  136.         SWI     OS_File + XOS_Bit
  137.         LDMVSFD sp!, {r1-r5,pc}^
  138.         LDR     lr, [sp]
  139.         TEQ     lr, #0
  140.         STRNE   r0, [lr]
  141.         LDR     lr, [sp, #4]
  142.         TEQ     lr ,#0
  143.         STRNE   r2, [lr]
  144.         LDR     lr, [sp, #8]
  145.         TEQ     lr, #0
  146.         STRNE   r3, [lr]
  147.         LDR     lr, [sp ,#24]
  148.         TEQ     lr, #0
  149.         STRNE   r4, [lr]
  150.         LDR     lr, [sp ,#28]
  151.         TEQ     lr, #0
  152.         STRNE   r5, [lr]
  153.         MOV     r0, #0
  154.         LDMFD   sp!, {r1-r5,pc}^
  155.  
  156.  
  157. ; os_error *SWI_OS_File_6(char *filename);
  158.  
  159.         STARTCODE SWI_OS_File_6
  160.  
  161.         STMFD   sp!, {r4-r5,lr}
  162.         MOV     r1, r0
  163.         MOV     r0, #6
  164.         SWI     OS_File + XOS_Bit
  165.         MOVVC   r0, #0
  166.         LDMFD   sp!, {r4-r5,pc}^
  167.  
  168.  
  169. ; os_error *SWI_OS_File_7(char *filename, int loadaddr, int execaddr, int size);
  170.  
  171.         STARTCODE SWI_OS_File_7
  172.  
  173.         STMFD   sp!, {r4-r5,lr}
  174.         MOV     r5, r3
  175.         MOV     r4, #0
  176.         MOV     r3, r2
  177.         MOV     r2, r1
  178.         MOV     r1, r0
  179.         MOV     r0, #7
  180.         SWI     OS_File + XOS_Bit
  181.         MOVVC   r0, #0
  182.         LDMFD   sp!, {r4-r5,pc}^
  183.  
  184.  
  185. ; os_error *SWI_OS_File_8(char *dirname);
  186.  
  187.         STARTCODE SWI_OS_File_8
  188.  
  189.         STMFD   sp!, {r4,lr}
  190.         MOV     r1, r0
  191.         MOV     r4, #0
  192.         MOV     r0, #8
  193.         SWI     OS_File + XOS_Bit
  194.         MOVVC   r0, #0
  195.         LDMFD   sp!, {r4,pc}^
  196.  
  197.  
  198. ; os_error *SWI_OS_File_18(char *filename, int filetype);
  199.  
  200.         STARTCODE SWI_OS_File_18
  201.  
  202.         STMFD   sp!, {r4-r5,lr}
  203.         MOV     r2, r1
  204.         MOV     r1, r0
  205.         MOV     r0, #18
  206.         SWI     OS_File + XOS_Bit
  207.         MOVVC   r0, #0
  208.         LDMFD   sp!, {r4-r5,pc}^
  209.  
  210.  
  211. ; os_error *SWI_OS_CLI(char *cmd);
  212.  
  213.         STARTCODE SWI_OS_CLI
  214.  
  215.         MOV     ip, lr
  216.         SWI     OS_CLI + XOS_Bit
  217.         MOVVC   r0, #0
  218.         MOVS    pc, ip
  219.  
  220.  
  221. ; int SWI_OS_ReadC(void);
  222.  
  223.         STARTCODE SWI_OS_ReadC
  224.  
  225.         MOV     ip, lr
  226.         SWI     OS_ReadC + XOS_Bit
  227.         MOVS    pc, ip
  228.  
  229.  
  230. ; os_error *SWI_OS_ReadVarVal(char *var, char *buf, int len, int *bytesused);
  231.  
  232.         STARTCODE SWI_OS_ReadVarVal
  233.  
  234.         STMFD   sp!, {r4,lr}
  235.         MOV     ip, r3
  236.         MOV     r3, #0
  237.         MOV     r4, #0
  238.         SWI     OS_ReadVarVal + XOS_Bit
  239.         LDMVSFD sp!, {r4,pc}^
  240.         TEQ     ip, #0
  241.         STRNE   r2, [ip]
  242.         MOV     r0, #0
  243.         LDMFD   sp!, {r4,pc}^
  244.  
  245.  
  246. ; os_error *SWI_OS_FSControl_54(char *buffer, int dir, char *fsname, int *size);
  247.  
  248.         STARTCODE SWI_OS_FSControl_54
  249.  
  250.         STMFD   sp!, {r3-r6,lr}
  251.         LDR     r5, [r3]
  252.         MOV     r3, r2
  253.         MOV     r2, r1
  254.         MOV     r1, r0
  255.         MOV     r0, #54
  256.         SWI     OS_FSControl + XOS_Bit
  257.         LDMVSFD sp!, {r3-r6,pc}^
  258.         MOV     r0, #0
  259.         LDMFD   sp!, {r3}
  260.         STR     r5, [r3]
  261.         LDMFD   sp!, {r4-r6,pc}^
  262.  
  263.  
  264. ; os_error *SWI_OS_FSControl_37(char *pathname, char *buffer, int *size);
  265.  
  266.         STARTCODE SWI_OS_FSControl_37
  267.  
  268.         STMFD   sp!, {r2,r3-r5,lr}
  269.         LDR     r5, [r2]
  270.         MOV     r3, #0
  271.         MOV     r4, #0
  272.         MOV     r2, r1
  273.         MOV     r1, r0
  274.         MOV     r0, #37
  275.         SWI     OS_FSControl + XOS_Bit
  276.         LDMVSFD sp!, {r2,r3-r5,pc}^
  277.         MOV     r0, #0
  278.         LDMFD   sp!, {r2}
  279.         STR     r5, [r2]
  280.         LDMFD   sp!, {r3-r5,pc}^
  281.  
  282.  
  283. ; os_error *SWI_DDEUtils_Prefix(char *dir);
  284.  
  285.         STARTCODE SWI_DDEUtils_Prefix
  286.  
  287.         MOV     ip, lr
  288.         SWI     DDEUtils_Prefix + XOS_Bit
  289.         MOVVC   r0, #0
  290.         MOVS    pc, ip
  291.  
  292. ; int SWI_Read_Timezone(void);
  293.  
  294.         STARTCODE SWI_Read_Timezone
  295.  
  296.         MOV     ip, lr
  297.         SWI     Territory_ReadCurrentTimeZone + XOS_Bit
  298.         MOVVC   r0, r1
  299.         MOVVS   r0, #0
  300.         MOVS    pc, ip
  301.  
  302.  
  303. ; int SWI_MimeMap_Translate(char *ext);
  304.  
  305.         STARTCODE SWI_MimeMap_Translate
  306.         MOV     ip,lr
  307.         MOV     r1, r0
  308.         MOV     r0, #3
  309.         MOV     r2, #0
  310.         SWI     MimeMap_Translate + XOS_Bit
  311.         MOVVC   r0, r3
  312.         MVNVS   r0, #0 ; return -1 on error
  313.         MOVS    pc, ip
  314.  
  315.  
  316.         END
  317.