	AREA |SWI$$Code|, CODE, READONLY, PIC

sp      RN      13
lr      RN      14
pc      RN      15

        GET     hdr.apcs

	EXPORT  xspch_ready[LEAF]

xspch_ready
	STMFD	R13!,{LR}
	MOV	R12,R0
	SWI	&62B80
        Return  ,,VS
	TEQS	R12,#0
	STRNE	R0,[R12]
	MOV	R0,#0
        Return


	EXPORT	datavox_read_address[LEAF]
datavox_read_address
	SWI	&44388
	MOV	R0,R1
        Return  ,LinkNotStacked

;
; font_apply_fields is broken as of Font Manager 3.36 - it corrupts R5-R7
; OSLib doesn't know this.
;
	EXPORT font_apply_fields[LEAF]

font_apply_fields
	STMFD	R13!,{R5-R7}
	SWI	&400A7
	MOV	R0,R3
	LDMFD   R13!,{R5-R7}
        Return  ,LinkNotStacked

	EXPORT xfont_apply_fields[LEAF]

xfont_apply_fields
	STMFD	R13!,{R5-R7}
        MOV     R12,R14
	SWI	&600A7
        BVS     %FT01
        LDR     R14,[R13,#12]
        TEQ     R14,#0
        STRNE   R3,[R14]
        MOV     R0,#0
01	LDMFD   R13!,{R5-R7}
  [ {CONFIG}=26
	MOVS 	PC,R12
  |
	MOV	PC,R12
  ]

        EXPORT  serviceinternational_alphabet_mapping
serviceinternational_alphabet_mapping
        STR     R4,[R13,#-4]!
        MOV     R12,R1
        MOV     R1,#&43
        MOV     R2,#8
        MOV     R3,R0
        SWI     &30
        TEQ     R12,#0
        STRNE   R4,[R12]
        LDR     R4,[R13],#4
        MOV     R0,R1
        Return  ,LinkNotStacked


        EXPORT xqtmload_memory
        EXPORT xqtmload_file
xqtmload_memory
xqtmload_file
        SWI     &67E40
        MOVVC   R0,#0
  [ {CONFIG}=26
	MOVS 	PC,R14
  |
        MOV     PC,R14
  ]

        EXPORT qtm_stereo[LEAF]
qtm_stereo
        SWI     &47E4D
        MOV     R0,R1
  [ {CONFIG}=26
	MOVS 	PC,R14
  |
        MOV     PC,R14
  ]

        EXPORT qtm_play_raw_sample[LEAF]

qtm_play_raw_sample
        STMFD   R13!,{R4-R6}
        ADD     R12,R13,#12
        LDMIA   R12,{R4-R6}
        SWI     &47E57
        LDMFD   R13!,{R4-R6}
  [ {CONFIG}=26
	MOVS 	PC,R14
  |
        MOV     PC,R14
  ]

        EXPORT qtm_register_sample[LEAF]

qtm_register_sample
        STMFD   R13!,{R4-R6}
        ADD     R12,R13,#12
        LDMIA   R12,{R4-R6}
        SWI     &47E5A
        LDMFD   R13!,{R4-R6}
  [ {CONFIG}=26
	MOVS 	PC,R14
  |
        MOV     PC,R14
  ]

        EXPORT qtm_sound_control[LEAF]

qtm_sound_control
        SWI     &47E58
        LDR     R12,[R13]
        TEQ     R3,#0
        STRNE   R1,[R3]
        TEQ     R12,#0
        STRNE   R2,[R12]
  [ {CONFIG}=26
	MOVS 	PC,R14
  |
        MOV     PC,R14
  ]

        EXPORT qtm_music_options[LEAF]

qtm_music_options
        MOV     R12,R2
        STR     R3,[R13,#-4]!
        SWI     &47E5E
        LDR     R0,[R13],#4
        TEQ     R12,#0
        STRNE   R1,[R12]
        TEQ     R0,#0
        STRNE   R3,[R0]
        MOV     R0,R2
  [ {CONFIG}=26
	MOVS 	PC,R14
  |
        MOV     PC,R14
  ]


        EXPORT qtm_music_interrupt[LEAF]

qtm_music_interrupt
        SWI     &47E5F
        MOV     R0,R1
        TEQS    R3,#0
        STRNE   R2,[R3]
  [ {CONFIG}=26
	MOVS 	PC,R14
  |
        MOV     PC,R14
  ]

        EXPORT  music_interrupt_start
        EXPORT  music_interrupt_end

music_interrupt_start
count   DCD     0
        TEQ     R0,#0
        MOVNE   PC,R14
        STR     R14,[R13,#-4]!
        LDR     R14,count
        ADD     R14,R14,#1
        STR     R14,count
        LDR     PC,[R13],#4
music_interrupt_end

 [ {FALSE}
        IMPORT  |Stub$$Data$$Base|
        EXPORT  heap_used
heap_used
        LDR     a1, =|Stub$$Data$$Base|
        LDR     a2, [a1, #&6D4] ; userHeap
        LDR     a3, [a1, #&6D0] ; totalFree
        SUB     a1, a2, a3
        MOV     PC,R14

        EXPORT  heap_low
heap_low
        LDR     a1, =|Stub$$Data$$Base|
        LDR     a1, [a1, #&6BC]
        MOV     PC,R14

        EXPORT  heap_high
heap_high
        LDR     a1, =|Stub$$Data$$Base|
        LDR     a1, [a1, #&6C0]
        MOV     PC,R14
 ]

	END
