- Đĩ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 :
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
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