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)
LOC OBJ LINE SOURCE F2Al n08 F2A3 80FC07 f2Ab 7403 FlAB E9F301 flAB fZAB 53 f2AC saCl FUE E83900 F2Bl 7433 F2:83 03FO F2:85 8AE6 F287 2:AE3 F2.89 F289 E87500 FZBC 03F5 FZBE 03FO F2:CO FEee F2C2 7SFS F2:C4 F2C4 58 F2CS· B020 F2C7 F2C7 E87000 F2eA 03FO Flee FEC8 F2CE 75F7 F200 F200 884000 F2:03 8ED8 F205 803E490007 F2DA 7407 F2DC A06500 FlOf SADeD3 F2E2 EE FtE3 F2f3 E9EIFE F2E6 F2E6 SADE F2:E8 EeDA FlEA f2EA 803E490002 FtEF 7219 FtF 1 803E490003 F2Fb 7712 FHS 52 F2F9 SADAa] F2FC 50 F2FD F2FO EC FtFE A808 F30D 74F8 F302 B025 F304 BA0803 F307 EE noe 58 n09 5A nOA ES7EFF noD 03064EOO F311 88f8 FlU 8BFO Fl15 2801 F3l7 fEe6 F319 FEe2 F318 32EO F310 882E4AOO F321 03EO F3Z3 8AC3 F325 F6264AOO F3Z9 03eO 3684 JC HI ; HANDLE SEPARATELY 3685 CMP AH.7 ; TEST FOR BW CARD ~8. JE HI 3687 JMP 3688 Nl: ; UP_CotnIHUE 3689 PUSH ex j SAVE FILL ATTRIBUTE IN 8H 3690 NOV AX.CX I UPPER lEFT POSITION 3691 CAll SCROLL_POSITION i DO SETUP FOR SCROLL 3692 JZ N7 I BLANK_FIELD 3693 ADD SI,AX ; FROM ADDRESS 3694 NOV AH,DH ; • ROWS IN BLOCK 3695 SUB AH,Bl ; # ROWS TO BE MOVED 3696 3697 CAll HID ; MOVE ONE ROW 3698 ADD SI.B? 3699 ADD DI,B? ; POINT TO NEXT LINE IN BLOCK 3700 DEC All ; COUNT OF LINES TO HOVE 3701 JHZ H' 3702 H3: ; CLEAR_ENTRY 3703 pop AX J RECOVER ATTRIBUTE IN AH 3704 NOV AL, • I FILL WITH BLANKS 3705 J CLEAR_lOOP 3706 CALL Nil ; CLEAR THE ROW 3707 ADD DI,B? ; POINT TO NEXT LINE 3708 DEC BL ; COUNTER OF LINES TO SCROLL 3709 JNZ H4 ; CLEAR_lOOP 3710 NS: ; SCROLL_END 3711 MOV AX,OATA ; GET LOCATION 3712 MOV OS,AX 3713 CNP CRT_HODE,7 ; IS THIS THE BLACK AND WHITE CARD 3714 JE ~16 ; IF SO, SKIP THE MODE RESET 3715 NOV AL.CRT_tfODE_SET ~ GET THE VALUE OF THE MODE SET 3716 NOV DX,0308H ; ALWAYS SET COLOR CARD PORT 3717 OUT DX,AL 3718 3719 JMP 3720 N7: ; BLANK_FIELD 3721 NOV BL,OH GET ROW COUNT 3722 JMP H' ; GO CLEAR THAT AREA 3723 ENDP 3724 3725 ; ----- HANllE COMMON SCROLL SET UP HERE 3726 3127 SCROll_POSITION PROC NEAR 3128 CM? CRT_MOOE,2 I TEST FOR SPECIAL CASE HERE 3129 J8 N9 ; HAVE TO HANDLE 80X25 SEPARATELY 3730 CMP CRT_MODE, 3 3731 JA N9 3732 3733 j ----- 80X2S COLOR CARD SCROll 3734 3735 PUSH OX 3736 MOV oX,30AH ; GUARANTEED TO BE COLOR CARD HERE 3737 PUSH AX 3738 i WAIT_DISP_ENABLE 3739 IN AL,oX ; GET PORT 3740 TEST AL.S ; WAIT FOR VERTICAL RETRACE 3741 JZ H8 ; WAIT_DISP_ENABLE 3742 NOV AL,25H 3743 MOV OX , 030SH 3744 OUT OX.Al ; TURN OFF VIDEO 3745 POP AX i DURING VERTICAL RETRACE 3746 POP OX 3747 N9: CALL POSITION ; CONVERT TO REGEN POINTER 3748 ADD AX.CRT_START ; OFFSET OF ACTIVE PAGE 3749 HOV OI,AX ; TO ADDRESS FOR SCROll 3750 HOV 5I,AX ; fROM ADDRESS fOR SCROLL 3751 SUB OX,CX ; OX = #ROWS, WCOLS IN BLOCK 3752 INC DH 3753 INC Dl J INCREMENT FOR 0 ORIGIN 3754 XOR CH,CH J SET HIGH BYTE OF COUNT TO ZERO 3755 MOV BP,CRT_COLS ; GET NUMBER OF COLUMNS IN DISPLAY 3756 AOO BP,BP ; TIMES 2 FOP ATTRIBUTE BYTE 3757 MOV AL,Bl ; GET LINE COUNT 3758 MUl BYTE PTR CRT_COLS ; DETERMINE OFFSET TO FROM ADDRESS 3759 ADD AX,AX ; *2 FOR ATTRIBUTE BYTE A-51
LOC OBJ LINE SOURCE F32B 06 3760 PUSH ES ESTABLISH ADDRESSING TO REGEN BUFFER F3ZC IF 3761 pop OS FOR BOTH POINTERS F32:0 SOFBOO 3762 CMP BL.O o SCROll MEANS BLANK FIELD F330 C3 3763 RET ; RETURN WITH FUGS SET 3764 SCROLL_POSITION ENOP 3765 3766 j------ MOVE_ROW F331 3767 HIO PROC NEAR f331 SACA 3768 MOV Cl,Dl • GET • OF eOLS TO MOVE F333 56 3769 PUSH 51 F334 57 3770 PUSH 01 I SAVE START ADDRESS F33S F3 3171 REP MOVSW ; MOVE THAT LlUE ON SCREEN F336 A5 F337 SF 3772 POP 01 F336 Sf 3773 POP 51 I RECOVER ADDRESSES F339 C3 3774 RET 3775 HID ENDP 3776 3777 j------ CLEAR_ROW F33A 3778 HII PROC NEAR F33A SACA 3779 MOV Cl.Dl I GET I CCUJMNS TO CLEAR F33C 57 3780 PUSH 01 F33D F3 3781 REP STQSW I STORE THE fILL CHARACTER F33E AS F33f SF 3782 pop 01 F340 C3 3783 RET 3784 Nil ENDP 3765 ;-------------------------- --- --- 3766 ; SCROLL_DOWN 3787 THIS ROUTINE MOVES THE CHARACTERS WITHIN A DEFINED 3788 BLOCK DOWN ON THE SCREEN, FILLING THE TOP LINES 3789 WITH A DEFINED CHARACTER 3790 ; INPUT 3791 (AH I = CURRENT CRT MODE 3792 (All = NUMBER OF LINES TO SCROLL 3793 (CX I = UPPER LEFT CaRtIER OF REGION 3794 (OX) = LOWER RIGHT CORNER OF REGION 3795 (BHJ = FILL CHARACTER 3796 (OS I = DATA SEGMENT 3791 'ESJ = REGEN SEGMENT 3798 ;OUPUT 3799 NOHE - SCREEN IS SCROllED 3800 ; -- --- ---- ------------------------ F341 3801 SCROLL_DO~N FROC NEAR f341 FD 1802 STD ; DIRECTION FOR SCROLL DOWN f342 8AD8 3803 NOV BL,AL ; LINE COUtIT TO BL F344 80FC04 3804 CMP AH,4 ; TEST FOR GRAPHICS F347 7208 3805 JC HI2 F349 80FC01 3806 CNP AH,7 i TEST FOR BW CARD F34C 7403 3S07 JE HI2 F34E E9A601 3808 JMP GRAPHICS_DOWN F351 1809 NI2.: ; CONTINUE_DOWN F351 53 3810 FUSH BX ; SAVE ATTRIBUTE IN 8H F352 8BCZ 3811 NOV AX,OX ; LOWER RIGHT CORNER F354 E893FF 3812. CALL SCROll.POSITION ; GET REGEN LOCATION F357 742.0 3811 JZ HI. F3S9 2BfD 3814 SUB SI,AX ; SI IS FROM ADDRESS f358 8AE6 3815 MOV AH,OH ; GET TOTAL II ROWS F35D un 3816 SUB AH,Bl ; COUNT TO MOVE IN SCROLL F35F 3817 N13: F3SF E8CFFF 3816 CALL NID ; MOVE ONE ROW F362 2.BF5 3819 SUB SI,ep F364 2BFD 3820 SUB DI,BP F366 fEce 3821 DEC AH F368 75F5 3622 J~lZ HI3 F36A 3823 N14: F36A 58 3824 POP AX t RECOVER ATTRIBUTE IN AH F368 B020 3825 MOV AL, • F36D 3826 N15: F36D ESCAFF 3827 CAlL HII ; CLEAR ONE ROW F370 2BFa 3828 SUB aI,BP ; GO TO NEXT ROW F372 FEee 3829 DEC 8L F374 75F7 3830 JNZ HIS F376 E957FF 3831 JMP HS ; SCROll.END F379 3832 N16: F379 8ADE 3833 HOY BL,DH A-52
- Page 195 and 196: lOC OBJ LINE SOURCE STITlE( ROM BIO
- Page 197 and 198: LOC OBJ LINE SOURCE 0068 ?! 155 De
- Page 199 and 200: LOC OBJ LINE SOURCE E09E BBf5 EOAO
- Page 201 and 202: lOC OBJ LINE SOURCE £179 E2FD 462
- Page 203 and 204: LOC OBJ LINE SOURCE E278 7408 612 J
- Page 205 and 206: lOC OBJ LINE SOURCE 755 ; ---------
- Page 207 and 208: LOC OSJ LINE SOU RCE E42B 7440 900
- Page 209 and 210: lOC OBJ LINE SOURCE ESIE 884000 E52
- Page 211 and 212: LaC OBJ LINE SOURCE E613 803E120001
- Page 213 and 214: LaC OSJ LINE SOURCE E6EC eSOAOE E6E
- Page 215 and 216: LaC OBJ LINE SOURCE E7SF 1505 .402:
- Page 217 and 218: LaC OBJ LINE SOURCE 1659 ASSUME CS:
- Page 219 and 220: LOC OBJ LINE SOURCE E994 8E08 1798
- Page 221 and 222: LOC 08J LINE SOURCE £"91 474849 EA
- Page 223 and 224: LaC OBJ LINE SOURCE E890 E99700 E89
- Page 225 and 226: LOC 08J LINE SOURCE 2255 ;-- INT 13
- Page 227 and 228: LOC OS! LINE SOURCE 2407 ;------ DI
- Page 229 and 230: lOC OBJ LINE SOURCE (Eol 7438 fE03
- Page 231 and 232: LOC OBJ LINE SOURCE Ef'tD £67200 2
- Page 233 and 234: LOC OBJ LINE SOURCE 2870 I ~- -----
- Page 235 and 236: LOC (lBJ LINE SOURCE 3007 j --- INT
- Page 237 and 238: laC OBJ LINE SOURCE 3157 (AH}=6 SCR
- Page 239 and 240: lOC OBJ LINE SOURt.:E FOA43828ZDOAI
- Page 241 and 242: lOC OBJ LINE SOURCE FtC7 3458 VIDEO
- Page 243: LOC OBJ LINE SOURCE F260 750E f2:62
- Page 247 and 248: LOC OBJ LINE SOURCE F3Cl 3910 NEAR
- Page 249 and 250: laC OBJ LINE SOURCE 1'460 80HfE F46
- Page 251 and 252: LOC OBJ LINE SOURCE F4FF BSFB 4213
- Page 253 and 254: LOC OBJ LINE SOURCE 4359 j------ IM
- Page 255 and 256: LOC OBJ LINE SOURCE F689 57 4511 PU
- Page 257 and 258: lOC OBJ LINE SOLIRCE 4662 THE 0 COL
- Page 259 and 260: LOC OBJ LINE SOURCE F7Cl 8AC4 F7e]
- Page 261 and 262: LaC OBJ LINE SOURCE F840 4967 EQUIP
- Page 263 and 264: LOC OBJ LINE SOURCE F8DA E304 5116
- Page 265 and 266: LOC OBJ LINE SOURCE F97E EBF9 5268
- Page 267 and 268: LOC OBJ LINE SOURCE H20 C3 5415 RET
- Page 269 and 270: LOC OBJ LINE SOURCE fC46 0030300000
- Page 271 and 272: LOC OBJ LINE SOURCE FEBS 833E6E0018
- Page 273 and 274: lOC OBJ LINE SOURCE 5866 ;.*.-•
- Page 275 and 276: A-82 NOTES
- Page 277 and 278: 8088 REGISTER MODEL AX: AH Al ACCUM
- Page 279 and 280: MEMORY SEGMENTATION MODEL LOGICAL
- Page 281 and 282: XCHG =Exchange RegisterImemory with
- Page 283 and 284: SBB = Subtract with borrow Reg./mem
- Page 285 and 286: AND = And Reg./memory and register
- Page 287 and 288: Indirect within segment 11111111 mo
- Page 289 and 290: 8088 CONDITIONAL TRANSFER OPERATION
- Page 291 and 292: BOBBINSTRUCTION SET MATRIX LO HI 0
- Page 293 and 294: INSTRUCTION SET INDEX Mnemonic Pag
LOC OBJ LINE SOURCE<br />
F2Al n08<br />
F2A3 80FC07<br />
f2Ab 7403<br />
FlAB E9F301<br />
flAB<br />
fZAB 53<br />
f2AC saCl<br />
FUE E83900<br />
F2Bl 7433<br />
F2:83 03FO<br />
F2:85 8AE6<br />
F287 2:AE3<br />
F2.89<br />
F289 E87500<br />
FZBC 03F5<br />
FZBE 03FO<br />
F2:CO FEee<br />
F2C2 7SFS<br />
F2:C4<br />
F2C4 58<br />
F2CS· B020<br />
F2C7<br />
F2C7 E87000<br />
F2eA 03FO<br />
Flee FEC8<br />
F2CE 75F7<br />
F200<br />
F200 884000<br />
F2:03 8ED8<br />
F205 803E490007<br />
F2DA 7407<br />
F2DC A06500<br />
FlOf SADeD3<br />
F2E2 EE<br />
FtE3<br />
F2f3 E9EIFE<br />
F2E6<br />
F2E6 SADE<br />
F2:E8 EeDA<br />
FlEA<br />
f2EA 803E490002<br />
FtEF 7219<br />
FtF 1 803E490003<br />
F2Fb 7712<br />
FHS 52<br />
F2F9 SADAa]<br />
F2FC 50<br />
F2FD<br />
F2FO EC<br />
FtFE A808<br />
F30D 74F8<br />
F302 B025<br />
F304 BA0803<br />
F307 EE<br />
noe 58<br />
n09 5A<br />
nOA ES7EFF<br />
noD 03064EOO<br />
F311 88f8<br />
FlU 8BFO<br />
Fl15 2801<br />
F3l7 fEe6<br />
F319 FEe2<br />
F318 32EO<br />
F310 882E4AOO<br />
F321 03EO<br />
F3Z3 8AC3<br />
F325 F6264AOO<br />
F3Z9 03eO<br />
3684 JC HI ; HANDLE SEPARATELY<br />
3685 CMP AH.7 ; TEST FOR BW CARD<br />
~8. JE HI<br />
3687 JMP<br />
3688 Nl: ; UP_CotnIHUE<br />
3689 PUSH ex j SAVE FILL ATTRIBUTE IN 8H<br />
3690 NOV AX.CX I UPPER lEFT POSITION<br />
3691 CAll SCROLL_POSITION i DO SETUP FOR SCROLL<br />
3692 JZ N7 I BLANK_FIELD<br />
3693 ADD SI,AX ; FROM ADDRESS<br />
3694 NOV AH,DH ; • ROWS IN BLOCK<br />
3695 SUB AH,Bl ; # ROWS TO BE MOVED<br />
3696<br />
3697 CAll HID ; MOVE ONE ROW<br />
3698 ADD SI.B?<br />
3699 ADD DI,B? ; POINT TO NEXT LINE IN BLOCK<br />
3700 DEC All ; COUNT OF LINES TO HOVE<br />
3701 JHZ<br />
H'<br />
3702 H3: ; CLEAR_ENTRY<br />
3703 pop AX J RECOVER ATTRIBUTE IN AH<br />
3704 NOV AL, • I FILL WITH BLANKS<br />
3705 J CLEAR_lOOP<br />
3706 CALL Nil ; CLEAR THE ROW<br />
3707 ADD DI,B? ; POINT TO NEXT LINE<br />
3708 DEC BL ; COUNTER OF LINES TO SCROLL<br />
3709 JNZ H4 ; CLEAR_lOOP<br />
3710 NS: ; SCROLL_END<br />
3711 MOV AX,OATA ; GET LOCATION<br />
3712 MOV OS,AX<br />
3713 CNP CRT_HODE,7 ; IS THIS THE BLACK AND WHITE CARD<br />
3714 JE ~16 ; IF SO, SKIP THE MODE RESET<br />
3715 NOV AL.CRT_tfODE_SET ~ GET THE VALUE OF THE MODE SET<br />
3716 NOV DX,0308H ; ALWAYS SET COLOR CARD PORT<br />
3717 OUT DX,AL<br />
3718<br />
3719 JMP<br />
3720 N7: ; BLANK_FIELD<br />
3721 NOV BL,OH GET ROW COUNT<br />
3722 JMP<br />
H'<br />
; GO CLEAR THAT AREA<br />
3723 ENDP<br />
3724<br />
3725 ; ----- HANllE COMMON SCROLL SET UP HERE<br />
3726<br />
3127 SCROll_POSITION PROC NEAR<br />
3128 CM? CRT_MOOE,2 I TEST FOR SPECIAL CASE HERE<br />
3129 J8 N9 ; HAVE TO HANDLE 80X25 SEPARATELY<br />
3730 CMP CRT_MODE, 3<br />
3731 JA N9<br />
3732<br />
3733 j ----- 80X2S COLOR CARD SCROll<br />
3734<br />
3735 PUSH OX<br />
3736 MOV oX,30AH ; GUARANTEED TO BE COLOR CARD HERE<br />
3737 PUSH AX<br />
3738 i WAIT_DISP_ENABLE<br />
3739 IN AL,oX ; GET PORT<br />
3740 TEST AL.S ; WAIT FOR VERTICAL RETRACE<br />
3741 JZ H8 ; WAIT_DISP_ENABLE<br />
3742 NOV AL,25H<br />
3743 MOV OX , 030SH<br />
3744 OUT OX.Al ; TURN OFF VIDEO<br />
3745 POP AX i DURING VERTICAL RETRACE<br />
3746 POP OX<br />
3747 N9: CALL POSITION ; CONVERT TO REGEN POINTER<br />
3748 ADD AX.CRT_START ; OFFSET OF ACTIVE PAGE<br />
3749 HOV OI,AX ; TO ADDRESS FOR SCROll<br />
3750 HOV 5I,AX ; fROM ADDRESS fOR SCROLL<br />
3751 SUB OX,CX ; OX = #ROWS, WCOLS IN BLOCK<br />
3752 INC DH<br />
3753 INC Dl J INCREMENT FOR 0 ORIGIN<br />
3754 XOR CH,CH J SET HIGH BYTE OF COUNT TO ZERO<br />
3755 MOV BP,CRT_COLS ; GET NUMBER OF COLUMNS IN DISPLAY<br />
3756 AOO BP,BP ; TIMES 2 FOP ATTRIBUTE BYTE<br />
3757 MOV AL,Bl ; GET LINE COUNT<br />
3758 MUl BYTE PTR CRT_COLS ; DETERMINE OFFSET TO FROM ADDRESS<br />
3759 ADD AX,AX ; *2 FOR ATTRIBUTE BYTE<br />
A-51