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
 |