;=========================================================================== ; Copyright (c) 1990-2000 Info-ZIP. All rights reserved. ; ; See the accompanying file LICENSE, version 2000-Apr-09 or later ; (the contents of which are also included in unzip.h) for terms of use. ; If, for some reason, all these files are missing, the Info-ZIP license ; also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html ;=========================================================================== ; SWI veneers used by Zip/Unzip ; r0 RN 0 r1 RN 1 r2 RN 2 r3 RN 3 r4 RN 4 r5 RN 5 r6 RN 6 r7 RN 7 r8 RN 8 r9 RN 9 r10 RN 10 r11 RN 11 r12 RN 12 sp RN 13 lr RN 14 pc RN 15 sl RN 10 fp RN 11 ip RN 12 XOS_Bit EQU &020000 OS_GBPB EQU &00000C OS_File EQU &000008 OS_FSControl EQU &000029 OS_CLI EQU &000005 OS_ReadC EQU &000004 OS_ReadVarVal EQU &000023 DDEUtils_Prefix EQU &042580 Territory_ReadCurrentTimeZone EQU &043048 MimeMap_Translate EQU &050B00 MACRO STARTCODE $name EXPORT $name $name MEND AREA |C$$code|, CODE, READONLY ; os_error *SWI_OS_FSControl_26(char *source, char *dest, int actionmask); STARTCODE SWI_OS_FSControl_26 MOV ip, lr MOV r3, r2 MOV r2, r1 MOV r1, r0 MOV r0, #26 SWI OS_FSControl + XOS_Bit MOVVC r0, #0 MOVS pc, ip ; os_error *SWI_OS_FSControl_27(char *filename, int actionmask); STARTCODE SWI_OS_FSControl_27 MOV ip, lr MOV r3, r1 MOV r1, r0 MOV r0, #27 SWI OS_FSControl + XOS_Bit MOVVC r0, #0 MOVS pc, ip ; os_error *SWI_OS_GBPB_9(char *dirname, void *buf, int *number, ; int *offset, int size, char *match); STARTCODE SWI_OS_GBPB_9 MOV ip, sp STMFD sp!, {r2-r6,lr} LDMIA ip, {r5,r6} LDR r4, [r3] LDR r3, [r2] MOV r2, r1 MOV r1, r0 MOV r0, #9 SWI OS_GBPB + XOS_Bit LDMVSFD sp!, {r2-r6,pc}^ MOV r0, #0 LDMFD sp, {r5,r6} STR r3, [r5] STR r4, [r6] LDMFD sp!, {r2-r6,pc}^ ; os_error *SWI_OS_File_1(char *filename, int loadaddr, int execaddr, int attrib); STARTCODE SWI_OS_File_1 STMFD sp!, {r5,lr} MOV r5, r3 MOV r3, r2 MOV r2, r1 MOV r1, r0 MOV r0, #1 SWI OS_File + XOS_Bit MOVVC r0, #0 LDMFD sp!, {r5,pc}^ ; os_error *SWI_OS_File_5(char *filename, int *objtype, int *loadaddr, ; int *execaddr, int *length, int *attrib); STARTCODE SWI_OS_File_5 STMFD sp!, {r1-r5,lr} MOV r1, r0 MOV r0, #5 SWI OS_File + XOS_Bit LDMVSFD sp!, {r1-r5,pc}^ LDR lr, [sp] TEQ lr, #0 STRNE r0, [lr] LDR lr, [sp, #4] TEQ lr ,#0 STRNE r2, [lr] LDR lr, [sp, #8] TEQ lr, #0 STRNE r3, [lr] LDR lr, [sp ,#24] TEQ lr, #0 STRNE r4, [lr] LDR lr, [sp ,#28] TEQ lr, #0 STRNE r5, [lr] MOV r0, #0 LDMFD sp!, {r1-r5,pc}^ ; os_error *SWI_OS_File_6(char *filename); STARTCODE SWI_OS_File_6 STMFD sp!, {r4-r5,lr} MOV r1, r0 MOV r0, #6 SWI OS_File + XOS_Bit MOVVC r0, #0 LDMFD sp!, {r4-r5,pc}^ ; os_error *SWI_OS_File_7(char *filename, int loadaddr, int execaddr, int size); STARTCODE SWI_OS_File_7 STMFD sp!, {r4-r5,lr} MOV r5, r3 MOV r4, #0 MOV r3, r2 MOV r2, r1 MOV r1, r0 MOV r0, #7 SWI OS_File + XOS_Bit MOVVC r0, #0 LDMFD sp!, {r4-r5,pc}^ ; os_error *SWI_OS_File_8(char *dirname); STARTCODE SWI_OS_File_8 STMFD sp!, {r4,lr} MOV r1, r0 MOV r4, #0 MOV r0, #8 SWI OS_File + XOS_Bit MOVVC r0, #0 LDMFD sp!, {r4,pc}^ ; os_error *SWI_OS_File_18(char *filename, int filetype); STARTCODE SWI_OS_File_18 STMFD sp!, {r4-r5,lr} MOV r2, r1 MOV r1, r0 MOV r0, #18 SWI OS_File + XOS_Bit MOVVC r0, #0 LDMFD sp!, {r4-r5,pc}^ ; os_error *SWI_OS_CLI(char *cmd); STARTCODE SWI_OS_CLI MOV ip, lr SWI OS_CLI + XOS_Bit MOVVC r0, #0 MOVS pc, ip ; int SWI_OS_ReadC(void); STARTCODE SWI_OS_ReadC MOV ip, lr SWI OS_ReadC + XOS_Bit MOVS pc, ip ; os_error *SWI_OS_ReadVarVal(char *var, char *buf, int len, int *bytesused); STARTCODE SWI_OS_ReadVarVal STMFD sp!, {r4,lr} MOV ip, r3 MOV r3, #0 MOV r4, #0 SWI OS_ReadVarVal + XOS_Bit LDMVSFD sp!, {r4,pc}^ TEQ ip, #0 STRNE r2, [ip] MOV r0, #0 LDMFD sp!, {r4,pc}^ ; os_error *SWI_OS_FSControl_54(char *buffer, int dir, char *fsname, int *size); STARTCODE SWI_OS_FSControl_54 STMFD sp!, {r3-r6,lr} LDR r5, [r3] MOV r3, r2 MOV r2, r1 MOV r1, r0 MOV r0, #54 SWI OS_FSControl + XOS_Bit LDMVSFD sp!, {r3-r6,pc}^ MOV r0, #0 LDMFD sp!, {r3} STR r5, [r3] LDMFD sp!, {r4-r6,pc}^ ; os_error *SWI_OS_FSControl_37(char *pathname, char *buffer, int *size); STARTCODE SWI_OS_FSControl_37 STMFD sp!, {r2,r3-r5,lr} LDR r5, [r2] MOV r3, #0 MOV r4, #0 MOV r2, r1 MOV r1, r0 MOV r0, #37 SWI OS_FSControl + XOS_Bit LDMVSFD sp!, {r2,r3-r5,pc}^ MOV r0, #0 LDMFD sp!, {r2} STR r5, [r2] LDMFD sp!, {r3-r5,pc}^ ; os_error *SWI_DDEUtils_Prefix(char *dir); STARTCODE SWI_DDEUtils_Prefix MOV ip, lr SWI DDEUtils_Prefix + XOS_Bit MOVVC r0, #0 MOVS pc, ip ; int SWI_Read_Timezone(void); STARTCODE SWI_Read_Timezone MOV ip, lr SWI Territory_ReadCurrentTimeZone + XOS_Bit MOVVC r0, r1 MOVVS r0, #0 MOVS pc, ip ; int SWI_MimeMap_Translate(char *ext); STARTCODE SWI_MimeMap_Translate MOV ip,lr MOV r1, r0 MOV r0, #3 MOV r2, #0 SWI MimeMap_Translate + XOS_Bit MOVVC r0, r3 MVNVS r0, #0 ; return -1 on error MOVS pc, ip END