11.2HERCULE GRAPHICS ADAPTER

Một phần của tài liệu Giáo trình TASM (Trang 77 - 80)

- Đĩc hoaịc ghi từ Data register Thí dú : đĩc vị trí con trỏ

11.2HERCULE GRAPHICS ADAPTER

Đađy là moơt display adapter được thiêt kê đeơ khaĩc phúc khuyêt đieơm cụa MDA. Hearcule Graphics Adapter cho phép theơ hieơn text mode hoàn toàn tương thích với MDA, đoăng thời cung câp khạ naíng hieơn thị graphics tređn màn hình monochrome . Với video buffer 64KB,Hercule Graphics Adapter cho phép theơ hieơn hai trang màn hình đoă hĩa với đoơ phađn giại cụa moêi trang là 720x348.

Hercule Graphics Adapter khođng do IBM thiêt kê, do đó trong các thụ túc chuaơn cụa ROM BIOS khođng có các chức naíng dành rieđng cho Hercule Graphics mode . Các phaăn meăm có khai thác đên khạ naíng đoă thị tređn Hercule Graphics Adapter đeău phại đieău khieơn trực tiêp thođng qua các port cụa Hercule card.

11.2.1Câu trúc video buffer

11.2.1.1Trong text mode

Giông như MDA, nhưng cho phép sử dúng hai trang màn hình : Trang 0 : baĩt đaău từ B0000h Trang 1 : baĩt đaău từ B8000h

Moêi trang chiêm 4 KB, ghi nhớ 2000 phaăn tử lieđn tiêp nhau, moêi phaăn tử goăm hai byte, byte đaău là ASCII code, byte kê là attrib .

Lưu ý : trong text mode, với các chức naíng cụa BIOS dành cho MDA, chư có theơ hieơn thị tređn trang 0.

11.2.1.2Trong graphics mode

Cho phép sử dúng hai trang màn hình đoă hĩa : Trang 0 : từ B0000h - B7FFFh ( 32 KB ) Trang 1 : từ B8000h - BFFFFh ( 32 KB )

Moêi trang chiêm 32 KB,lưu chứa thođng tin veă 720x348 đieơm sáng (pixel) với các quy định : Moêi dòng tređn màn hình được táo thành từ 720 đieơm sáng

Màn hình có toơng coơng 348 dòng

Moêi đieơm sáng chư có moơt trong hai thuoơc tính : sáng hoaịc tôi > moêi đieơm được theơ hieơn bởi moơt bit. Nêu bit = 1 -> sáng, bit = 0 -> tôi

Thođng tin veă moơt dòng được ghi lieđn tiêp nhau trong moơt dãy 90 byte ( 720 bit ) theo thứ tự theơ hieơn tređn màn hình :

Bit thứ 7 ( bit cao nhât ) cụa byte đaău dãy bieơu dieên cho đieơm sáng thứ nhât cụa dòng Bit thứ 6 cụa byte đaău dãy bieơu dieên cho đieơm sáng thứ hai cụa dòng .

...

Bit thứ 7 ( bit cao nhât ) cụa byte thứ hai trong dãy bieơu dieên cho đieơm sáng thứ chín cụa dòng . Moêi trang màn hình ( 32 KB ) được chia thành 4 trang nhỏ lieđn tiêp nhau đánh sô từ 0-3, moêi trang có kích thước 2000h byte.

Thođng tin cụa các dòng được lưu trong các trang theo quy taĩc :

Các dòng có cùng sô dư khi chia sô thứ tự dòng cho 4 sẽ ở trong cùng moơt trang.Sô dư cũng chính là sô thứ tự cụa buffer

Tức là :

Trang 0 chứa thođng tin các dòng 0,4,8,12,16... Trang 1 chứa thođng tin các dòng 1,5,9,13,17... Trang 2 chứa thođng tin các dòng 2,6,10,14,18... Trang 3 chứa thođng tin các dòng 3,7,11,15,19...

11.2.2Hercule registers

Hercule Graphics Adapter cũng có các register giông như Color Graphics Adapter nhưng có moơt sô khác bieơt như sau :

Khođng có Color register

Các port được định vị tái 3Bx thay vì 3Dx Mode register được quy định :

- Bit 1 = 0 --> Text mode

- Bit 1 = 1 --> Graphics mode ( port 03BF bit 0 = 1 )

- Bit 3 : Video Enable

- Bit 5 : Blink Enable

- Bit 7 : Page Select ( port 03BF bit 1 = 1 ) ( Trang 0 baĩt đaău từ B000:0000 )

( Trang 1 baĩt đaău từ B800:0000 ) Bit 0,2,4,6 not used

Sử dúng port 03BF đeơ xác định câu hình làm vieơc : (adsbygoogle = window.adsbygoogle || []).push({});

Bit 0 = 1 --> cho phép chuyeơn sang graphics mode (Thođng qua bit 1 cụa mode register) Bit 1 = 1 --> cho phép chĩn trang màn hình

11.2.1Hercule parameters

AddressRegisterRegister typeI/O |80x25|Graph|

registerNumberType| Text| mode|

|---|---|---|---|---|--- 00R0Horizontal TotalW6135 |

01R1Horizontal DisplayW502D |

02R2Horizontal Sync PositionW522E |

03R3Horizontal Sync WidthW0F07 |

04R4Vertical TotalW195B |

05R5Vertical Total AdjustW0602 |

06R6Vertical DisplayedW1957 |

07R7Vertical Sync PositionW1957 |

08R8Interlace ModeW0202 |

09R9Maximum Scan Line AddressW0D03 |

0AR10Cursor Start Scan LineW0B00 |

0BR11Cursor End Scan LineW0C00 |

0CR12Start address (Hi byte)W0000 |

0DR13Start address (Lo byte)W0000 |

0ER14Cursor address (Hi byte)R/WXXXX |

0FR15Cursor address (Lo byte)R/WXXXX |

10R16Light pen (Hi byte)RXXXX |

11R17Light pen (Lo byte)RXXXX |

--- XX : giá trị tùy chĩn

11.2.2Thí dú : hercule card sang graphics mode

Graph-init proc near lea bx,graph-parm

mov dx,03B4h ; Index register port mov cx,0Fh

xor al,al GI1:

mov ah,byte ptr cs:[bx] ; AH = Register value out dx,ax ; AL = Register Number

inc bx

inc al ; Taíng Register number loop GI1 (adsbygoogle = window.adsbygoogle || []).push({});

mov dx,03BFh ; Configuration port mov al,3 ; Select all

out dx,al

mov dx,03B8h ; Set mode & page

mov al,10001010b ; Chĩn trang 1 (0B800:0000) out dx,al

ret

Graph-init endp

Graph-parm db 035h,02Dh,02Eh,007h,05Bh,002h,057h,057h,002h,003h db 000h,000h,000h,000h,000h,000h

Một phần của tài liệu Giáo trình TASM (Trang 77 - 80)