22 lines
		
	
	
	
		
			421 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			22 lines
		
	
	
	
		
			421 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
#
 | 
						|
#include "asm.h"
 | 
						|
 | 
						|
! Calls a BIOS routine which returns its value in A.
 | 
						|
!   a = BIOS offset
 | 
						|
 | 
						|
.define call_bios_a
 | 
						|
call_bios_a:
 | 
						|
	pop h		   ! pop return address
 | 
						|
	pop d          ! pop parameter (possibly junk)
 | 
						|
	push d
 | 
						|
	push h
 | 
						|
	push b         ! save FP as we'll corrupt it
 | 
						|
 | 
						|
    mov b, d       ! put parameter in BC
 | 
						|
    mov c, e
 | 
						|
    call call_bios_raw
 | 
						|
    
 | 
						|
    pop b
 | 
						|
    mov e, a       ! put result in DE
 | 
						|
    mvi d, 0
 | 
						|
    ret
 |