home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 9 Archive / 09-Archive.zip / unzip531.zip / acorn / swiven.s < prev   
Text File  |  1997-03-22  |  4KB  |  282 lines

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