home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 9 Archive / 09-Archive.zip / zip22.zip / acorn / swiven.s < prev    next >
Text File  |  1996-12-14  |  4KB  |  276 lines

  1. ; Copyright (C) 1990-1996 Mark Adler, Richard B. Wales, Jean-loup Gailly,
  2. ; Kai Uwe Rommel, Onno van der Linden, Sergio Monesi, Karl Davis and
  3. ; Igor Mandrichenko.
  4. ; Permission is granted to any individual or institution to use, copy, or
  5. ; redistribute this software so long as all of the original files are included,
  6. ; that it is not sold for profit, and that this copyright notice is retained.
  7. ;
  8. ; SWI veneers used by Zip/Unzip
  9. ;
  10.  
  11. r0        RN    0
  12. r1        RN    1
  13. r2        RN    2
  14. r3        RN    3
  15. r4        RN    4
  16. r5        RN    5
  17. r6        RN    6
  18. r7        RN    7
  19. r8        RN    8
  20. r9        RN    9
  21. r10        RN    10
  22. r11        RN    11
  23. r12        RN    12
  24. sp        RN    13
  25. lr        RN    14
  26. pc        RN    15
  27.  
  28. sl        RN    10
  29. fp        RN    11
  30. ip        RN    12
  31.  
  32.  
  33. XOS_Bit                EQU &020000
  34.  
  35. OS_GBPB                EQU &00000C
  36. OS_File                EQU &000008
  37. OS_FSControl            EQU &000029
  38. OS_CLI                EQU &000005
  39. OS_ReadC            EQU &000004
  40. OS_ReadVarVal            EQU &000023
  41. DDEUtils_Prefix            EQU &042580
  42. Territory_ReadCurrentTimeZone    EQU &043048
  43.  
  44.     MACRO
  45.     STARTCODE $name
  46.     EXPORT $name
  47. $name
  48.     MEND
  49.  
  50.  
  51.         AREA    |C$$code|, CODE, READONLY
  52.  
  53. ; os_error *SWI_OS_FSControl_26(char *source, char *dest, int actionmask);
  54.  
  55.     STARTCODE SWI_OS_FSControl_26
  56.  
  57.     MOV    ip, lr
  58.  
  59.     MOV    r3, r2
  60.     MOV    r2, r1
  61.     MOV    r1, r0
  62.     MOV    r0, #26
  63.  
  64.     SWI    OS_FSControl + XOS_Bit
  65.  
  66.     MOVVC    r0, #0
  67.  
  68.     MOVS    pc, ip
  69.  
  70.  
  71. ; os_error *SWI_OS_FSControl_27(char *filename, int actionmask);
  72.  
  73.     STARTCODE SWI_OS_FSControl_27
  74.  
  75.     MOV    ip, lr
  76.  
  77.     MOV    r3, r1
  78.     MOV    r1, r0
  79.     MOV    r0, #27
  80.  
  81.     SWI    OS_FSControl + XOS_Bit
  82.  
  83.     MOVVC    r0, #0
  84.  
  85.     MOVS    pc, ip
  86.  
  87.  
  88. ; os_error *SWI_OS_GBPB_9(char *dirname, void *buf, int *number,
  89. ;              int *offset, int size, char *match);
  90.  
  91.     STARTCODE SWI_OS_GBPB_9
  92.  
  93.     MOV    ip, sp
  94.     STMFD    sp!, {r2-r6,lr}
  95.     LDMIA    ip, {r5,r6}
  96.     LDR    r4, [r3]
  97.     LDR    r3, [r2]
  98.     MOV    r2, r1
  99.     MOV    r1, r0
  100.     MOV    r0, #9
  101.     SWI    OS_GBPB + XOS_Bit
  102.     LDMVSFD sp!, {r2-r6,pc}^
  103.     MOV    r0, #0
  104.     LDMFD    sp, {r5,r6}
  105.     STR    r3, [r5]
  106.     STR    r4, [r6]
  107.     LDMFD    sp!, {r2-r6,pc}^
  108.  
  109.  
  110. ; os_error *SWI_OS_File_1(char *filename, int loadaddr, int execaddr, int attrib);
  111.  
  112.     STARTCODE SWI_OS_File_1
  113.  
  114.     STMFD    sp!, {r5,lr}
  115.     MOV    r5, r3
  116.     MOV    r3, r2
  117.     MOV    r2, r1
  118.     MOV    r1, r0
  119.     MOV    r0, #1
  120.     SWI    OS_File + XOS_Bit
  121.     MOVVC    r0, #0
  122.     LDMFD    sp!, {r5,pc}^
  123.  
  124.  
  125.  
  126. ; os_error *SWI_OS_File_5(char *filename, int *objtype, int *loadaddr,
  127. ;              int *execaddr, int *length, int *attrib);
  128.  
  129.     STARTCODE SWI_OS_File_5
  130.  
  131.     STMFD    sp!, {r1-r5,lr}
  132.     MOV    r1, r0
  133.     MOV    r0, #5
  134.     SWI    OS_File + XOS_Bit
  135.     LDMVSFD sp!, {r1-r5,pc}^
  136.     LDR    lr, [sp]
  137.     TEQ    lr, #0
  138.     STRNE    r0, [lr]
  139.     LDR    lr, [sp, #4]
  140.     TEQ    lr ,#0
  141.     STRNE    r2, [lr]
  142.     LDR    lr, [sp, #8]
  143.     TEQ    lr, #0
  144.     STRNE    r3, [lr]
  145.     LDR    lr, [sp ,#24]
  146.     TEQ    lr, #0
  147.     STRNE    r4, [lr]
  148.     LDR    lr, [sp ,#28]
  149.     TEQ    lr, #0
  150.     STRNE    r5, [lr]
  151.     MOV    r0, #0
  152.     LDMFD    sp!, {r1-r5,pc}^
  153.  
  154.  
  155. ; os_error *SWI_OS_File_6(char *filename);
  156.  
  157.     STARTCODE SWI_OS_File_6
  158.  
  159.     STMFD    sp!, {r4-r5,lr}
  160.     MOV    r1, r0
  161.     MOV    r0, #6
  162.     SWI    OS_File + XOS_Bit
  163.     MOVVC    r0, #0
  164.     LDMFD    sp!, {r4-r5,pc}^
  165.  
  166.  
  167. ; os_error *SWI_OS_File_7(char *filename, int loadaddr, int execaddr, int size);
  168.  
  169.     STARTCODE SWI_OS_File_7
  170.  
  171.     STMFD    sp!, {r4-r5,lr}
  172.     MOV    r5, r3
  173.     MOV    r4, #0
  174.     MOV    r3, r2
  175.     MOV    r2, r1
  176.     MOV    r1, r0
  177.     MOV    r0, #7
  178.     SWI    OS_File + XOS_Bit
  179.     MOVVC    r0, #0
  180.     LDMFD    sp!, {r4-r5,pc}^
  181.  
  182.  
  183. ; os_error *SWI_OS_CLI(char *cmd);
  184.  
  185.     STARTCODE SWI_OS_CLI
  186.  
  187.     MOV    ip, lr
  188.     SWI    OS_CLI + XOS_Bit
  189.     MOVVC    r0, #0
  190.     MOVS    pc, ip
  191.  
  192.  
  193. ; int SWI_OS_ReadC(void);
  194.  
  195.     STARTCODE SWI_OS_ReadC
  196.  
  197.     MOV    ip, lr
  198.     SWI    OS_ReadC + XOS_Bit
  199.     MOVS    pc, ip
  200.  
  201.  
  202. ; os_error *SWI_OS_ReadVarVal(char *var, char *buf, int len, int *bytesused);
  203.  
  204.     STARTCODE SWI_OS_ReadVarVal
  205.  
  206.     STMFD    sp!, {r4,lr}
  207.     MOV    ip, r3
  208.     MOV    r3, #0
  209.     MOV    r4, #0
  210.     SWI    OS_ReadVarVal + XOS_Bit
  211.     LDMVSFD    sp!, {r4,pc}^
  212.     TEQ    ip, #0
  213.     STRNE    r2, [ip]
  214.     MOV    r0, #0
  215.     LDMFD    sp!, {r4,pc}^
  216.  
  217.  
  218. ; os_error *SWI_OS_FSControl_54(char *buffer, int dir, char *fsname, int *size);
  219.  
  220.     STARTCODE SWI_OS_FSControl_54
  221.  
  222.     STMFD    sp!, {r3-r6,lr}
  223.     LDR    r5, [r3]
  224.     MOV    r3, r2
  225.     MOV    r2, r1
  226.     MOV    r1, r0
  227.     MOV    r0, #54
  228.     SWI    OS_FSControl + XOS_Bit
  229.     LDMVSFD sp!, {r3-r6,pc}^
  230.     MOV    r0, #0
  231.     LDMFD    sp!, {r3}
  232.     STR    r5, [r3]
  233.     LDMFD    sp!, {r4-r6,pc}^
  234.  
  235.  
  236. ; os_error *SWI_OS_FSControl_37(char *pathname, char *buffer, int *size);
  237.  
  238.     STARTCODE SWI_OS_FSControl_37
  239.  
  240.     STMFD    sp!, {r2,r3-r5,lr}
  241.     LDR    r5, [r2]
  242.     MOV    r3, #0
  243.     MOV    r4, #0
  244.     MOV    r2, r1
  245.     MOV    r1, r0
  246.     MOV    r0, #37
  247.     SWI    OS_FSControl + XOS_Bit
  248.     LDMVSFD sp!, {r2,r3-r5,pc}^
  249.     MOV    r0, #0
  250.     LDMFD    sp!, {r2}
  251.     STR    r5, [r2]
  252.     LDMFD    sp!, {r3-r5,pc}^
  253.  
  254.  
  255. ; os_error *SWI_DDEUtils_Prefix(char *dir);
  256.  
  257.     STARTCODE SWI_DDEUtils_Prefix
  258.  
  259.     MOV    ip, lr
  260.     SWI    DDEUtils_Prefix + XOS_Bit
  261.     MOVVC    r0, #0
  262.     MOVS    pc, ip
  263.  
  264. ; int SWI_Read_Timezone(void);
  265.  
  266.     STARTCODE SWI_Read_Timezone
  267.  
  268.     MOV    ip, lr
  269.     SWI    Territory_ReadCurrentTimeZone + XOS_Bit
  270.     MOVVC    r0, r1
  271.     MOVVS    r0, #0
  272.     MOVS    pc, ip
  273.  
  274.  
  275.     END
  276.