;Entry_ADFEmulateFDC
;-------------------
;Force emulation of a specific FDC, 710/711 or 1772
;
;Entry:
; R0 - Command tail
; R1 - parameter count
; R12 - pointer to module private word

.Entry_ADFEmulateFDC
 TEQ     R1, #0				;resetting?
 BEQ     Check_FDC_Type			;YES

 STMFD   R13!, {R0-R4, R12, R14}
 LDR     R12, [R12, #0]
 
 MOV     R1, R0				;command tail
 MOV     R0, #10			;assume base 10 number
 SWI     XOS_ReadUnsigned		;read the value PRM1-460
 ADDVS   R13, R13, #4			;drop R0
 LDMVSFD R13!, {R1-R4, R12, PC}		;exit on error
					;R2=FDC number
 MOV     R1, #1772
 TEQ     R2, R1				;emulate 1772?
.know_FDC_type
 MOVEQ   R0, #Error_Sector_CRC_1772	;YES
 MOVEQ   R1, #Error_Sector_Not_Found_1772
 MOVEQ   R2, #Error_Mark_Not_Found_1772
 MOVEQ   R4, #1
 MOVNE   R0, #Error_Sector_CRC		;NO
 MOVNE   R1, #Error_Sector_Not_Found
 MOVNE   R2, #Error_Mark_Not_Found
 MOVNE   R4, #0
 STRB    R0, [R12, #FDC_Error_Sector_CRC - VARS]
 STRB    R1, [R12, #FDC_Error_Sector_Not_Found - VARS]
 STRB    R2, [R12, #FDC_Error_Mark_Not_Found - VARS]
 STRB    R4, [R12, #emulate_1772 - VARS]
LDMFD   R13!, {R0-R4, R12, PC}


.Check_FDC_Type
 STMFD   R13!, {R0-R4, R12, R14}
 ADR     R12, VARS

 MOV     R0, #2
 SWI     XOS_ReadSysInfo
 AND     R1, R1, #&FF
 ORRS    R1, R1, R0			;R1=R0=0?
 B       know_FDC_type			;EQ if 1772, NE for 710/711
