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 08J LINE SOURCE<br />

F376 fBED 3834 JMP N14<br />

3835 SCROL~OO!J:N ENDP<br />

3836 ; ----------------------- ------------------­<br />

3837 ; READ_At_CURRENT<br />

3838 THIS ROUTINE READS THE ATTRIBUTE AND CHARACTER AT THE CURRENT<br />

3839 CURSOR POSITION AHO RETURNS THEM TO THE CALLER<br />

3a40<br />

; INPUT<br />

3841 (AH) :: CURRENT CRT t10DE<br />

3842 (8H) :: DISPLAY PAGE ( ALPHA HODES ONLY 1<br />

3843 (as) = DATA SEGMENT<br />

3844 (ES) = REGEN SEGMENT<br />

3845 ;OUTPUT<br />

3846 (ALI = CHAR READ<br />

3347 (AH) :: ATTRIBUTE READ<br />

3848 ; -------------------- - - -------------------­<br />

3849 ASSUME CS:CQDE.DS:DATA.ES:DATA<br />

F37D 3850 READ_AC_CURRENT PROt NEAR<br />

F37C 80FC04 3851 eMP AH,4 ; IS THIS GRAPHICS<br />

n80 7Z0B 3852 JC PI<br />

f382 80FC07 3853 CMP AH.7 ; IS THIS ew CARD<br />

F38S 7403 3854 JE PI<br />

Fl87 E9A902 3855 JMP GRAPHICS_READ<br />

FlSA 3856 PI: ; READ_AC_CONTINUE<br />

F3eA E81,o..OO 3857 CALL FINO_POSITION<br />

F38D 8BF3 3858 MOV SI,ex j ESTABLISH ADDRESSING IN 51<br />

3659<br />

3S60<br />

3861<br />

j------ WAIT FOR HORIZONTAL RETRACE<br />

F3SF 8BI66300 3862 MOV DX.AOOR_6845 ; GET BASE ADDRESS<br />

F393 83C206 3863 ADD OX.6 i POINT AT STATUS PORT<br />

F396 06 3864 PUSH ES<br />

F397 IF 386$ POP OS ; GET SEGMENT FOR QUICK ACcESS<br />

F398 3866 P2 : ; W.IT FOR RETR.CE LOW<br />

F398 EC 3867 IN AL,OX ; GET STATUS<br />

F399 ,0..801 3868 TEST AL,1 ; IS HaRZ RETRACE LOW<br />

f39B 75FB 3869 JNZ P2 ; WAIT UNTIL IT IS<br />

F39D FA 3870 CLI j NO MORE INTERRUPTS<br />

r'\<br />

F39E 3871 P3: ; WAIT FOR RETRACE HIGH<br />

F39E EC 3872 IN AL.OX ; GET STATUS<br />

f39F ,0..801 3873 TEST AL.! ; IS IT HIGH<br />

FlAl 74F8 3874 JZ P3 ; WAIT UNTIL IT IS<br />

FlA.3 AD 3875 lOOSW ; GET THE CHAR/ATTR<br />

F3A4 E9Z0Ff 3876 JMP VIDEO_RETURN<br />

3877 RE.O_AC_CURREHT ENDP<br />

3878<br />

FlA7 3879<br />

nA7 8ACF 3880 MQV CL,BH ; DISPLAY PAGE TO CX<br />

F3A9 3ZED 3881 XOR CH.CH<br />

FlAB 86Fl 3882 NOV 5I.CX ; MOVE TO SI fOR INDEX<br />

F3AO DIE6 3883 SAL 51.1 ; • 2: FOR WORD OFFSET<br />

F3AF 88845000 3884 I10V AX,[SI+ OFFSET CURSOR]OSNJ ; GET ROW/COLUMN OF THAT PAGE<br />

F3B3 330B 3885 XOR ex.ex SET START ADDRESS TO ZERO<br />

F3BS n06 3686 JCXZ P5<br />

nB7 3887 P4:<br />

F367 031£4COO 3888 ADD BX.CRT_LEN LENGTH Of BUFfeR<br />

FlBB EZFA 3889 lOOP P4<br />

FlBD 3890 ps: ; NO_PAGE<br />

F3BD E8CBFE 3891 CALL POSITlON ; DETERMINE LOCATION IN REGEN<br />

nco 0308 3892 AOO BX.AX ; ADD TO START OF REGEN<br />

F3C2 C3 3893 RET<br />

3694 FINO_POSITION Et.'OP<br />

3895 ; ----- ~----------- -----------------------­<br />

3896 ;WRITE_AC_CURRENT<br />

3897 THIS ROUTINE WRITES THE ATTRIBUTE AND CHARACTER AT<br />

3696 THE CURRENT CURSOR POSITION<br />

38'99 ; INPUT<br />

3'900 ! AH) = CURRENT CRT MODE<br />

3901 (BH) = DISPLAY PAGE<br />

3902 (CXl = COUNT OF cHARACTERS TO WRITE<br />

3903 (AU = CHAR' TO WRITE<br />

3904 tBLl = ATTRIBUTE Of CHAR TO WRITE<br />

3905 CDS) .. DATA SEGMENT<br />

3906 (ES) = REGEN SEGMENT<br />

3907 ;OUTPUT<br />

3908 NONE<br />

3909 ; --------- ------------- ---------------------­<br />

A-53

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

Saved successfully!

Ooh no, something went wrong!