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 />

r""\<br />

EE52: 800£410080 2639 OR oISKETTE_STATUS. TIME_OUT<br />

££57 59 2640 POP CX<br />

EE58 SA 2641 POP OX ; SET ERROR CODE AND RESTORE REGS<br />

EES9 56 2.642 POP AX ; DISCARD THE RETUF!N ADDRESS<br />

EESA F9 2643 STC ; INDICATE ERROR TO CALLER<br />

EES9 C3 2644 Rn <br />

2645 <br />

EESC 2646 J25: <br />

EESC 33C9 2647 XOR cx.cx ; RESET THE COUUT <br />

EESE 2648 J26: <br />

EESE EC ~649 IN .u,ox ; GET THE STATUS<br />

EESF AB80 2650 TEST AL.OBOH J IS IT READY<br />

fE61 7504 2651 J"" J27 I YES. GO OUTPUT<br />

fE63 E2F9 2652 LOOP J2. J COUNT omm AHD TRY AGAIN<br />

fE65 EBEB 2653 J"P J2' J ERROR CONDITION<br />

fE67 2654 J2:7: ; OUTPUT<br />

fE67 84C4 2655 t10V AL,AH • GET BYTE TO OUTPUT<br />

E£69 BAF501 2656 ""V DX,03F5H ; DATA PORT<br />

Efbe EE 2657 OUT OX.AL ; OUTPUT THE BYTE<br />

EE60 59 2:658 POP CX ; RECOVER REGISTERS<br />

fE6E 5A 2659 POP OX<br />

EE6F C3 2.660 Rn ; CY = 0 FROM TEST INSTRUCTION<br />

2661 NEt_OUTPUT ENOP<br />

2662 ; -----------------------------------------­<br />

2663 ; GET_PARM<br />

2664 I THIS ROUTINE fETCHES THE IHOEXED POINTER FROM<br />

2665 I THE DISK_BASE BLOCK POINTED AT BY THE DATA<br />

2666 I VAF!IABLE DISK_POINTER<br />

2667 ; A eYTE FROM THAT TABLE IS THEN HOVED INTO AH,<br />

2668 ; THE INDEX OF THAT BYTE BEING THE PARrt IN ex<br />

2669 ; ENTRY -­<br />

2670 BX = INDEX OF BYTE TO BE FETCHED * 2<br />

2671 IF THE lOW BIT OF ex IS ON. THE BYTE IS IMMEDIATELY<br />

2672 OUTPUT TO THE NEC CONTROLLER<br />

2673 EXIT -­<br />

2674 AH = THAT BYTE fROM BLOCK<br />

2675 ; -------------------------------------------­<br />

r""\<br />

EE70 2676 GET_PARl1 PROC t~EAR <br />

E£70 IE 2677 PUSH as SAVE SEGMENT <br />

EE71 2BCO 2678 SUB AX.AX J ZERO TO AX <br />

EE73 8E08 2679 "OV OS,AX<br />

2680 ASSUME OS:ABSO<br />

E£75 C5367800 2681 LOS 51 ,DISK_POINTER ; POINT TO BLOCK<br />

EE79 DIES 2682 SHR ax,l ; DIVIDE BX BY 2. AND SET flAG FOR EXIT<br />

EE7B 8A20 2683 "OV AH,lSI+BXl ; GET THE WORD<br />

EE7D IF 2684 POP OS j RESTORE SEGMENT<br />

r""\<br />

268S ASSUME OS:OATA<br />

EE7E 72C4 2686 JC NEC_OUTPUT ; IF FLAG SET, OUTPUT TO CONTROLLER<br />

EE80 C3 2687 RET ; RETURN TO CALLER<br />

2688 GET_PARI1 ENOP<br />

2689 ;-------------------------------------------­<br />

2690 ; SEEK<br />

2691 THIS ROUTINE WILL MOVE THE HEAD ON THE NAMED DRIVE<br />

2692 TO THE NAMED TRACK. IF THE DRIVE HAS NOT BEEN ACCESSED<br />

2693 SINCE THE DRIVE RESET COMMAND WAS ISSUED, THE DRIVE WILL BE<br />

2694 RECALIBRATED.<br />

2695 ; INPUT<br />

.2:696 (DU = DRrVE TO SEEK ON<br />

2697 (CH) = TRACK TO SEEK TO<br />

2698 ; OUTPUT<br />

2699 CY = 0 SUCCESS<br />

2700 CY = 1 FAILURE -- DISKETTE_STAn../S SET ACCORDINGLY<br />

2701 (AX I DESTROYED<br />

2702 ; ---------------------------------- ---------­<br />

EE81 2703 SEEK PROC HEAR<br />

EE8l· 8001 2704 MV AL,1 ; ESTABLISH MASK fOR RECAL TEST<br />

EE63 51 2705 PUSH CX ; SAVE INPUT VALUES<br />

EE84 8ACA 2706 ""V CL,OL ; GET DRIVE VALUE INTO CL<br />

EE86 D2CO 2707 ROL AL,CL ; SHIFT IT BY THE DRIVE VALUE<br />

EE88 59 2708 POP CX ; RECOVER TRACK VALUE<br />

EE89 84063EOO 2709 TEST AL,SEEK_STATUS ; TEST FOR REeAL REQUIRED<br />

EE8D 7513 2710 JIlZ J2. -; NO_RECAl<br />

EE8F 06063EOO 2711 OR SEEK_STATUS,AL ; TURn ON THE HO RECAL BIT IN FLAG<br />

EE93 6407 2712 "OV AH ,07H i RECALIBRATE COMMAND<br />

EE95 E6ACFF 2713 CALL NEC_OUTPUT<br />

EE98 6AE2 2714- "OV AH,DL<br />

EE9A E6A7FF 2715 CALL tlEC_OUTPUT ; OUTPUT THE DRIVE HUMBER<br />

A-37

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

Saved successfully!

Ooh no, something went wrong!