25.03.2015 Views

IBM 5150 PC Technical Reference (6025005, August, 1981) (PDF)

IBM 5150 PC Technical Reference (6025005, August, 1981) (PDF)

IBM 5150 PC Technical Reference (6025005, August, 1981) (PDF)

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

LOC OBJ LINE SOURCE<br />

Ef'tD £67200 2716 CAll CHK_STAT_2 ; GET THE INTERUPT AND SENSE INT STATUS<br />

fEAG 7229 2717 JC J32 ; SEEK_ERROR<br />

2718<br />

fEA2 2721 J28:<br />

2719 ;----­ DRIVE IS IN SYHCH WITH CONTROLLER. SEEK TO TRACK<br />

2nD<br />

fEAt 840F 2722 HOY AH,OfH ; SEEK COt1t1AND TO NEe<br />

EEA4 E89DFF 2723 C.6.LL tlfC_OUTPUT<br />

EfA7 6A£2 2724 HOY AH,Dl ; DR lYE NUMBER<br />

EfA9 E896FF 2725 CALL NEC_OUTPUT<br />

£EAC 8AE5 2726 MOV AH,CH ; TRACK tu1BER<br />

EEAE £893FF 2727 CALL NEC_OUTPUT<br />

fEB 1 £85£00 2728 CAll CHK_STAT_2 J GET ENDING INTERRUPT AND SENSE STATUS<br />

2729<br />

2730 ;----- WAIT FOR HEAD SUTlE<br />

2731<br />

EE84 9t 2732 PUSHF ; SAYE STATUS FLAGS<br />

fEes B81200 2733 HOY BX,l8 ; GET HEAD SETTLE PARAMETER<br />

fEB8 f8BSFF 2734 CALL GET_PARM<br />

fEBB 51 2.735 PUSH CX ; SAVE REGISTER<br />

fE8C 2736 J29: ; HEAD_SETTlE<br />

EEBC 892602 2737 MOV CX,550 ; 1 HS lOOP<br />

fEBf OAE4­ 2736 OR AH,AH ; TEST FOR TIME EXPIRED<br />

EECI 740b 2739 JZ J31<br />

EEe] E2FE 2740 J30: LOOP J30 ; DELAY FOR 1 NS<br />

EEtS FEce 2741 DEC AH ; DECREMENT THE COUNT<br />

EEe7 ESFl 2742 JMP J'9 ; DO IT SONE NOR E<br />

EEC9 2743 J31:<br />

EfC9 59 2744 POP ex ; RECOVER STATE<br />

EEeA 90 2745 POPF<br />

fEeB 2746 J32: ; SEEK_ERROR<br />

EEeB C3 2747 RET ; RETURN TO CALLER<br />

2748 SEEK ENOP<br />

2749 ; --------------------------­----------------­<br />

2750 ; DNA_SETUP<br />

2751 THIS ROUTINE SETS UP THE DNA FOR READ/WRITE/VERIFY<br />

2752 OPERATIONS.<br />

2753 I INPUT<br />

2754 (AL) = NOOE BYTE FOR THE DNA<br />

2755 (ES:BX) - ADDRESS TO READI'WRlTE THE DATA<br />

2756 ; OUTPUT<br />

2757 {AXI DESTROYED<br />

2756<br />

eEee 2759 DNA_SETUP PROC NEAR<br />

EEce 51 2760 PUSH CX ; SAVE THE REGISTER<br />

EECD Eboe 2761 OUT DMA+12.AL ; SET THE FIRST/LAST F/F<br />

eEeF E60a 2762 OUT ONA+Il.AL ; OUTPUT THE MOOE BYTE<br />

fEDl aceD 2763 HOV AX,ES ; GET THE ES VALUE<br />

fED3 8104 2764 MDV CL,4 ; SHIFT COUNT<br />

fEOS 03eo 2765 ROL AX.CL ; ROTATE LEFT<br />

fED7 8A£8 2766 HOV CH .AL ; GET HIGHEST NYBLE OF ES TO CH<br />

EED9 24FO 2767 AND AL.OFOH ; ZERO THE LOW NYBBLE FROM SEGMENT<br />

fEoe 03e] 2766 ADD Ax.ex ; TEST FOR CARRY FROM ADDITION<br />

EEOD 7302 2769 JNC J33<br />

HOF FEes 2770 INC CH I CARRY MEANS HIGH 4 BITS MUST BE INC<br />

fEEL 2771 J33:<br />

fEEl 50 2772 PUSH AX ; SAVE START ADDRESS<br />

fEEZ £604­ 2773 OUT DMA+4.AL ; OUTPUT LOW ADDRESS<br />

EEE4 8AC4­ 2774 NOV AL,AH<br />

EEE6 £604 2775 OUT DHA+4,AL I OUTPUT HIGH ADDRESS<br />

fEES 8ACS 2776 HOV AL.CH ; GET HIGH 4 BITS<br />

fEEA 240F 2777 MiD AL.OFH<br />

EEEC E681 2778 OUT oalH,At ; OUTPUT THE HIGH 4 BITS TO PAGE REGISTER<br />

2779<br />

2780 ;------ DETERMINE COUNT<br />

2761<br />

EEEE 8Af6 2782 MOY AH,DH ; NUNBER OF SECTORS<br />

EEFO 2ACO 2783 sua AL,Al ; TINES 256 INTO AX<br />

EEFt 01E8 2784 SHR AX,I • SECTORS * 128 INTO AX<br />

EEF4 50 2765 PUSH AX<br />

EEF5 880600 2766 MOV BX,6 ; GET THE BYTES/SECTOR F'ARH<br />

fEFS Ea7sFF 2787 CALL GET_PARM<br />

EHB BAce 2788 HOV Cl,AH ; USE AS SHIFT Coutrr {(I=128. 1=256 ETC)<br />

fEFO 58 2789 POP AX<br />

fEFE 03EO 2790 SHL AX.CL ; MULTIPLY BY CORRECT AMOUNT<br />

EFOO 48 2791 DEC AX ; -1 FOR DMA VALUE<br />

EF01 50 2792 PUSH AX ; SAVE COUNT VALUE<br />

A-38

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!