52 lines
1.0 KiB
ArmAsm
52 lines
1.0 KiB
ArmAsm
#include "fxcg50/asm_utils.h"
|
|
|
|
.text
|
|
|
|
!---
|
|
! Public
|
|
!---
|
|
|
|
/* _bios_dtext() (Bdisp_PrintMiniMini): display string */
|
|
function(_bios_dtext):
|
|
! prologue
|
|
sts.l pr, @-r15
|
|
mov.l r8, @-r15
|
|
|
|
! prepare space for the syscall prototype
|
|
add #-4, r15
|
|
mov r15, r0 ! *x
|
|
add #-4, r15
|
|
mov r15, r1 ! *y
|
|
add #-4, r15
|
|
mov r15, r2 ! color
|
|
add #-4, r15
|
|
mov r15, r3 ! mode2
|
|
|
|
! setup info
|
|
mov.l r4, @r0 ! *x
|
|
mov.l r5, @r1 ! *y
|
|
mov.l r6, @r2 ! color
|
|
mov #0, r8 ! mode1
|
|
mov.l r8, @r3 ! mode2
|
|
|
|
! invoke syscall
|
|
mov r0, r4 ! *x
|
|
mov r1, r5 ! *y
|
|
mov r7, r6 ! text
|
|
mov r8, r7 ! mode1
|
|
mov.l 1f, r2 ! syscall trampoline code
|
|
mov.w 2f, r0 ! syscall ID
|
|
jsr @r2
|
|
nop
|
|
|
|
! restore stack and exit (epilogue)
|
|
add #16, r15
|
|
mov.l @r15+, r8
|
|
lds.l @r15+, pr
|
|
rts
|
|
nop
|
|
|
|
.balign 4
|
|
1: .long FXCG50_SYSCALL_TRAMPOLINE
|
|
2: .word 0x021b
|