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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

lOC OBJ LINE SOURCE<br />

FtC7 3458 VIDEO_RETURN:<br />

FIC7 Sf 3459 POP 01<br />

Flce 5E 346. POP S!<br />

flC9 58 3461 POP BX<br />

FICA 3462 MIS: j VlOEO_RETURN_C<br />

FICA 59 3463 pOP CX<br />

Fica SA 3464 POP ox<br />

Flee IF 3465 POP DS<br />

fleD 07 3466 POP ES I RECOVER SEGMENTS<br />

Fle( Cf 3467 IRET ; ALL DONE<br />

3468 SET_MODE ENIlP<br />

3469 ; .-­--­-----------------------..-------------­<br />

3470 1 SET_CTYf'E<br />

3471 THIS ROUTINE SETS THE CURSOR VALUE<br />

3472 I INPUT<br />

3473 I (eXI HAS CURSOR VALUE CH-Sf.ART LINE, CL-STOP LINE<br />

3474 j OUTPUT<br />

3475 NONE<br />

3476 ; ------------------­ --­ -------­ -­ -­ -­ --------<br />

FIeF 3477 PROt NEAR<br />

FIeF 840A 3418 AH,10 J 6845 REGISTER FOR CURSOR SET<br />

FIOI 890E6000 3479 HOV CURSOR_f1ODE ,CX ; SAVE IN DATA AReA<br />

FID5 £80200 3480 CALL M16 J OUTPUT ex REG<br />

FID8 EBED 3481 JHP<br />

3482<br />

3483 i -----­ THIS ROUTINE OUTPUTS THE ex REGISTER TO THE 6845 REGS HAMED IN AH<br />

3484<br />

FIDA 3485 N16:<br />

FIDA 8B166300 3486 HOV oX,ADDR_6845 , ADDRESS REGISTER<br />

FIDE 6AC4 3487 HOV AL,AH i GET VALUE<br />

FlED EE 3488 OUT DX,AL ; REGISTER SET<br />

FIEI 42 3489 INC OX ; DATA REGISTER<br />

FJE2 8AC5 3490 11.0V AL,CH i DATA<br />

F1E4 EE 3491 OUT OX,AL<br />

FIES 4A 3492 DEC DX<br />

FIE6 8AC4 3493 HOV AL,AH<br />

FlEB FEtD 3494 INC AL ; POINT TO OTHER DATA REGISTER<br />

FlEA EE 3495 OUT OX,AL J SET FOR SECOND REGISTER<br />

FlEB 42 3496 INC OX<br />

FlEe 6ACl 3497 MOV AL ,CL ; SECOND DATA VALUE<br />

FlEE EE 3498 OUT OX.Al<br />

FIEF C3 3499 RET ; ALL DONE<br />

3500 SET_CTYPE nmp<br />

350 I ; --------------------------­ -----------­ ----­<br />

3502 J SET_CPOS<br />

3503 THIS ROUTINE SETS THE CURRENT CURSOR POSITION TO THE<br />

3504 NEW X-Y VAI.UES PASSED<br />

3505 INPUT<br />

3506 ox - ROW.COLUMN OF NEW CURSOR<br />

3507 BH - DISPLAY PAGE OF CURSOR<br />

3508 ; OUTPUT<br />

3509 I CURSOR IS SET AT 6845 IF DISPLAY PAGE IS CURRENT DISPLAY<br />

3510 i ----..-------------­ ------­ ---­ -­ -­ ----­ ----­<br />

FIFO 3511 SET_CPOS PROC NEAR<br />

FIFO BACF 3512 HOV CL,BH<br />

FIF2 3ZED 3513 XO. CH,CH I ESTABLISH LOOP COUHT<br />

FIF4 DlEl 3514 SAL CX.l I WORO OFFSET<br />

FIF6 88Fl 3515 HOV SI,CX ; USE INDEX REGISTER<br />

FIF8 89945000 3516 MOV (SI+OFFSET CURSOR_POSNI,OX ; SAVE THE POINTER<br />

FIFC 383E6200 3517 CMP<br />

Floa 7505 3518 JHZ HI7 ; SET_CPOS_RETURN<br />

F202 88C2 3519 I10V AX,OX ; GET ROW/COLUMN TO AX<br />

F204 E80200 352. CAl.l HIS ; CURSOR_SET<br />

F207 3521 M17: I SET_CPOS_RETURN<br />

F207 'f;BBE 3522 JHP<br />

3523 ENOP<br />

3524<br />

3525 ;------ SET CURSOR POSITION, AX HAS ROW/COLUMN FOR CURSOR<br />

3526<br />

F209 3521 MI8 PRoe NEAR<br />

F209 £87FOO 3528 CALL POSITION ; DETERMINE I.OCATION IN REGEN BUFFER<br />

FlOC 88C8 3529 MOV eX,AX<br />

F20E 030[4EOO 3530 ADO CX,CRT_START ; ADD IN THE START ADDRESS FOR THIS PAGE<br />

F212 01F9 3531 SAR CX,l ; DIVIDE BY 2 FOR CHAR ONLY COUNT<br />

F214 640E 3532 MOV AH.14 ; REGISTER NUI1BER fOR CURSOR<br />

A-48

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

Saved successfully!

Ooh no, something went wrong!