home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 9 Archive / 09-Archive.zip / unzip52.zip / acorn / swiven.s < prev   
Text File  |  1996-04-18  |  4KB  |  259 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.  
  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_CLI(char *cmd);
  177.  
  178.     STARTCODE SWI_OS_CLI
  179.  
  180.     MOV    ip, lr
  181.     SWI    OS_CLI + XOS_Bit
  182.     MOVVC    r0, #0
  183.     MOVS    pc, ip
  184.  
  185.  
  186. ; int SWI_OS_ReadC(void);
  187.  
  188.     STARTCODE SWI_OS_ReadC
  189.  
  190.     MOV    ip, lr
  191.     SWI    OS_ReadC + XOS_Bit
  192.     MOVS    pc, ip
  193.  
  194.  
  195. ; os_error *SWI_OS_ReadVarVal(char *var, char *buf, int len, int *bytesused);
  196.  
  197.     STARTCODE SWI_OS_ReadVarVal
  198.  
  199.     STMFD    sp!, {r4,lr}
  200.     MOV    ip, r3
  201.     MOV    r3, #0
  202.     MOV    r4, #0
  203.     SWI    OS_ReadVarVal + XOS_Bit
  204.     LDMVSFD    sp!, {r4,pc}^
  205.     TEQ    ip, #0
  206.     STRNE    r2, [ip]
  207.     MOV    r0, #0
  208.     LDMFD    sp!, {r4,pc}^
  209.  
  210.  
  211. ; os_error *SWI_OS_FSControl_54(char *buffer, int dir, char *fsname, int *size);
  212.  
  213.     STARTCODE SWI_OS_FSControl_54
  214.  
  215.     STMFD    sp!, {r3-r6,lr}
  216.     LDR    r5, [r3]
  217.     MOV    r3, r2
  218.     MOV    r2, r1
  219.     MOV    r1, r0
  220.     MOV    r0, #54
  221.     SWI    OS_FSControl + XOS_Bit
  222.     LDMVSFD sp!, {r3-r6,pc}^
  223.     MOV    r0, #0
  224.     LDMFD    sp!, {r3}
  225.     STR    r5, [r3]
  226.     LDMFD    sp!, {r4-r6,pc}^
  227.  
  228.  
  229. ; os_error *SWI_OS_FSControl_37(char *pathname, char *buffer, int *size);
  230.  
  231.     STARTCODE SWI_OS_FSControl_37
  232.  
  233.     STMFD    sp!, {r2,r3-r5,lr}
  234.     LDR    r5, [r2]
  235.     MOV    r3, #0
  236.     MOV    r4, #0
  237.     MOV    r2, r1
  238.     MOV    r1, r0
  239.     MOV    r0, #37
  240.     SWI    OS_FSControl + XOS_Bit
  241.     LDMVSFD sp!, {r2,r3-r5,pc}^
  242.     MOV    r0, #0
  243.     LDMFD    sp!, {r2}
  244.     STR    r5, [r2]
  245.     LDMFD    sp!, {r3-r5,pc}^
  246.  
  247.  
  248. ; os_error *SWI_DDEUtils_Prefix(char *dir);
  249.  
  250.     STARTCODE SWI_DDEUtils_Prefix
  251.  
  252.     MOV    ip, lr
  253.     SWI    DDEUtils_Prefix + XOS_Bit
  254.     MOVVC    r0, #0
  255.     MOVS    pc, ip
  256.  
  257.  
  258.     END
  259.