D12write:
	MOVX	@DPTR, A
	NOP				; Delay a little so that we don't violate
	NOP				; the back-to-back timing of D12
	NOP
	NOP
	RET
D12command:				; Send command to D12
	MOV	DPTR, #D12address	; Point to D12 Command Register
	CALL	D12write
	DEC	DPL			; Return with DPTR -> D12 Data Register
	RET
D12GetStatus:				; Get Status.  Also clears interrupt
	CALL	D12command
					; Fall ino D12read
D12read:				; Input from D12 component
	MOVX	A, @DPTR
	NOP				; Delay a little so that we don't violate
	NOP				; the back-to-back timing of D12
	NOP
	NOP
	RET