55 lines
		
	
	
	
		
			698 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			698 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
#
 | 
						|
! $Source$
 | 
						|
! $State$
 | 
						|
! $Revision$
 | 
						|
 | 
						|
! Declare segments (the order is important).
 | 
						|
 | 
						|
.sect .text
 | 
						|
.sect .rom
 | 
						|
.sect .data
 | 
						|
.sect .bss
 | 
						|
 | 
						|
.sect .text
 | 
						|
 | 
						|
! Calls a BDOS routine.
 | 
						|
 | 
						|
.define _cpm_bdos
 | 
						|
_cpm_bdos:
 | 
						|
	push b
 | 
						|
	
 | 
						|
	lda _cpm_a_register
 | 
						|
	
 | 
						|
	lhld _cpm_bc_register
 | 
						|
	mov b, h
 | 
						|
	mov c, l
 | 
						|
	
 | 
						|
	lhld _cpm_de_register
 | 
						|
	mov d, h
 | 
						|
	mov e, l
 | 
						|
	
 | 
						|
	lhld _cpm_hl_register
 | 
						|
	
 | 
						|
	call 5
 | 
						|
	
 | 
						|
	shld _cpm_hl_register
 | 
						|
	
 | 
						|
	mov h, d
 | 
						|
	mov l, e
 | 
						|
	shld _cpm_de_register
 | 
						|
	
 | 
						|
	mov h, b
 | 
						|
	mov l, c
 | 
						|
	shld _cpm_bc_register
 | 
						|
	
 | 
						|
	sta _cpm_a_register
 | 
						|
	
 | 
						|
	pop b
 | 
						|
	ret
 | 
						|
 | 
						|
.sect .bss
 | 
						|
.define _cpm_a_register, _cpm_bc_register, _cpm_de_register, _cpm_hl_register
 | 
						|
.comm _cpm_a_register, 1
 | 
						|
.comm _cpm_bc_register, 2
 | 
						|
.comm _cpm_de_register, 2
 | 
						|
.comm _cpm_hl_register, 2
 |