- очень странно он себя по старту ведёт...
Судя по его мануалу, он должен настроить свои внутренние УВВ на кристалле, расположить
их по нужным адресам, а он этого ничего не делает, обращается по адресам УВВ, типичным для
IBM PC XT, а этих устройств явно на плате нет (разве что они спрятаны в БИС VADEM) !
Т.е. навороченный
...
Никаких звуковых сигналов я из текста не вижу, видеоконтроллер 6845 при старте принудительно
затыкается через его порты.
памяти. Судя по осциллограммам стробов /IORD, /IOWR до тестирования портов процедура
даже и не доходит...
Code: Select all
0000FFF0: EA5BE000F0 jmp 0F000:0E05B
...
0000E05B: FA cli
0000E05C: EA0C8000F0 jmp 0F000:0800C
...
0000800C: FA cli
0000800D: EB4D jmps 00000805C
...
0000805C: 2AC0 sub al,al; = 0
0000805E: E6A0 out 0A0,al
Порты:
20h, 21h - для контроллера IRQ 1
0A0h, 0A1h - для контроллера IRQ 2 (который -> в первый (вместо IRQ2))
00008060: 2BC0 sub ax,ax
00008062: 8ED0 mov ss,ax
00008064: BC0006 mov sp,00600
00008067: 8CC8 mov ax,cs
00008069: 8ED8 mov ds,ax
0000806B: FC cld
0000806C: BE5F83 mov si,0835F
0000806F: BAF0FF mov dx,0FFF0
00008072: B90F00 mov cx,0000F
00008075: AC lodsb
00008076: 3CFF cmp al,0FF ;
00008078: 7403 je 00000807D -------- (1)
0000807A: EE out dx,al
0000807B: EB00 jmps 00000807D -------- (2)
0000807D: 42 inc dx
0000807E: E2F5 loop 000008075 -------- (3)
00008080: E9F804 jmp 00000857B -------- (4)
0000857B: 2BC0 sub ax,ax; = 0
0000857D: BAD803 mov dx,003D8 ;
00008580: EE out dx,al
Регистр выбора режима: (Mode Select Register)
регистр, доступный для записи через порт 3D8h, используется видеоадаптером CGA, для установки режима работы.
D0 Используется в текстовых режимах. При D0 равном нулю, отображается 40 символов в строке, а при D0 равном единице - 80 символов.
D1 Для графических режимов с разрешением 320 пикселов по горизонтали, бит D1 равен единице. Во всех остальных режимах бит равен нулю.
D2 Если бит равен единице, то запрещается раздельный цветовой сигнал. Это может улучшить качество изображения, если вы используете монохромный композитный дисплей.
D3 При D3, равном нулю, выходной видеосигнал не генерируется. Экран дисплея становится черным. Рекомендуется гасить экран во время обратного вертикального хода луча. В противном случае возможно возникновение "снега".
D4 Бит D4 установлен в 1 для графического режима с разрешением 640 пикселов по горизонтали, и сброшен в 0 во всех остальных режимах.
D5 Если бит равен нулю, то бит D7 байта атрибутов символа определяет интенсивность фона. Если бит равен единице, то бит D7 управляет миганием символа.
D7-D6 Не используются.
00008581: FEC0 inc al; = 01H
00008583: BAB803 mov dx,003B8 ;
00008586: EE out dx,al
Управляющий порт контроллера электронно-лучевой трубки 6845 фирмы Motorola 3B8H
Display Mode Control Port (3B8h)
03B8h: Mode Control Register
On a genuine MDA, this is a write-only register. Four of its bits can be set, but only two are any use:
Bit 5: 1 to enable blinking, 0 to disable it.
If bit 5 is 1, characters with attribute bit 7 set will blink. If not, they will have high intensity background.
Bit 3: 1 to enable video output, 0 to disable it.
If bit 3 is 0, screen output will not be shown.
The usual use of this is if you're reprogramming the CRTC registers;
disable video output beforehand and re-enable it after.
Bit 1: 1 for black and white.
This bit has no meaning, since the MDA always outputs in monochrome. The value written to it is stored (in chip U58) but nothing else on the card pays any attention to it.
Bit 0: 1 for high resolution mode.
For any sane purpose this bit must be set to 1. For details of what happens if it is set to zero, see High Resolution Mode.
00008532: ; 72-00 01;00-10 00;01-01 18;00-01 00;19-00
00008540: 01;02-0B 00;01-40 0B;00-01 41;0B-00 01;42-0B 00;
00008550: 01-43 20;00-01 13;21-00 03;08-09 FF;43-00 01;36-
00008560: 40 00;02-00 00;43-00 01;54-41 00;01-12 63;00-01
00008570: 99;61-00 01;80-BF 03;01-01 FF FF
00008587: FC cld
00008588: BE3285 mov si,08532 ;
0000858B: 2BC9 sub cx,cx ; = 0
0000858D: EB0D jmps 00000859C -------- (11)
-------------------------------- (04)
0000858F: 2E cs:
00008590: AC lodsb; al <- из ячейки памяти [ds:si]
00008591: 8AC8 mov cl,al
00008593: E307 jcxz 00000859C -------- (11)
-------------------------------- (03)
00008595: 2E cs:
00008596: AC lodsb
00008597: EE out dx,al
00008598: EB00 jmps 00000859A
0000859A: E2F9 loop 000008595 -------- (03)
-------------------------------- (11)
0000859C: 2E cs:
0000859D: AD lodsw; ax <- из ячейки памяти [ds:si]
0000859E: 8BD0 mov dx,ax; ---- port Number
000085A0: 3DFFFF cmp ax,0FFFF ;
000085A3: 75EA jne 00000858F -------- (04)
000085A5: B0F0 mov al,0F0 ; 00001111b
000085A7: E661 out 061,al
000085A9: EB00 jmps 0000085AB
Port 061H
+7-6-5-4-3-2-1-0+
¦ ¦ ¦ ¦ ¦ ¦0¦ ¦ ¦
+---------------+ bit mask
¦ ¦ ¦ ¦ ¦ ¦ +-> 0: 01H gate timer channel 2 to speaker
¦ ¦ ¦ ¦ ¦ +---> 1: 02H pulse speaker 1=out, 0=in
¦ ¦ ¦ ¦ ¦ (see Speaker Control for examples)
¦ ¦ ¦ ¦ +-------> 3: 04H 1=read high switches;
¦ ¦ ¦ ¦ 0=read low ones (see 62H)
¦ ¦ ¦ +---------> 4: 10H 0=enable RAM parity checking; 1=disable
¦ ¦ +-----------> 5: 20H 0=enable I/O channel check
¦ +-------------> 6: 40H 0=hold keyboard clock low
+---------------> 7: 80H 0=enable keyboard; 1=disable keyboard
061H _PC/XT_ PPI (программируемый периферийный интерфейс), порт B.
+7-6-5-4-3-2-1-0+
¦ ¦ ¦ ¦ ¦ ¦0¦ ¦ ¦
+---------------+ бит
¦ ¦ ¦ ¦ ¦ ¦ +-> 0: Таймер 2 вход (спикер) ----> OR 03H=спикер ON
¦ ¦ ¦ ¦ ¦ +---> 1: Таймер 2 данные ----------+ AND 0fcH=спикер OFF
¦ ¦ ¦ ¦ +-------> 3: 1=read high switches; 0=read low switches(см. 62H)
¦ ¦ ¦ +---------> 4: 0=вкл. проверку четности RAM; 1=выкл.
¦ ¦ +-----------> 5: 0=вкл. контроль каналов в/в
¦ +-------------> 6: 0=hold keyboard clock low
+---------------> 7: 0=вкл. клавиатуру; 1=выкл.
000085AB: B0C0 mov al,0C0 ; 11000000b
000085AD: E661 out 061,al
;------------------- 1=hold keyboard clock high; 1=disable keyboard
000085AF: B0FF mov al,0FF ;
000085B1: FEC0 inc al ; = 0
000085B3: 2AE4 sub ah,ah ; = 0
000085B5: 9E sahf
; запись содержимого регистра ah в младший байт регистра flags
000085B6: 7640 jbe 0000085F8 -------- (1)
000085B8: 7A3E jp 0000085F8 -------- (2)
000085BA: 783C js 0000085F8 -------- (3)
000085BC: F6D4 not ah
000085BE: 9E sahf
000085BF: 7737 ja 0000085F8
000085C1: 7B35 jnp 0000085F8
000085C3: 7933 jns 0000085F8
000085C5: FEC4 inc ah
000085C7: 752F jne 0000085F8
000085C9: 0AE4 or ah,ah
000085CB: 722B jb 0000085F8
000085CD: F6D4 not ah
000085CF: D0E4 shl ah,1
000085D1: 7325 jae 0000085F8
000085D3: B85555 mov ax,05555 ;0101.0101.0101.0101b
-------------------------------- (23)
000085D6: 93 xchg bx,ax
000085D7: 8BCB mov cx,bx
000085D9: 8BD1 mov dx,cx
000085DB: 8ED1 mov ss,cx
000085DD: 8CD5 mov bp,ss
000085DF: 8EC5 mov es,bp
000085E1: 8CC4 mov sp,es
000085E3: 8EDC mov ds,sp
000085E5: 8CDE mov si,ds
000085E7: 8BFE mov di,si
000085E9: 97 xchg di,ax
000085EA: 3DAAAA cmp ax,0AAAA ;1010.1010.1010.1010b
000085ED: 740A je 0000085F9 -------- (22)
000085EF: 3D5555 cmp ax,05555 ;
000085F2: 7504 jne 0000085F8
000085F4: F7D0 not ax
000085F6: EBDE jmps 0000085D6 -------- (23)
--------------------------------
000085F8: F4 hlt
-------------------------------- (22)
000085F9: B001 mov al,001 ;
000085FB: 2E8E060285 mov es,cs:[08502] = 00 B0
00008600: BE0080 mov si,08000 ;
00008603: 8BFE mov di,si ; di = si = 8000
00008605: B90040 mov cx,04000 ; 16384
00008608: FC cld
00008609: B701 mov bh,001 ;
0000860B: 2E cs:
0000860C: AD lodsw; ax <- из ячейки памяти [ds:si]
0000860D: AB stosw; ax -> в ячейку памяти [es:di]
0000860E: 02FC add bh,ah
00008610: 02F8 add bh,al
00008612: E2F7 loop 00000860B ---^
00008614: 7401 je 000008617 ---
00008616: F4 hlt
00008617: B002 mov al,002 ;
00008619: FC cld
0000861A: 2E8E1E0485 mov ds,cs:[08504] = 40 00
0000861F: 8E167200 mov ss,[00072] =
00008623: 2E8E061285 mov es,cs:[08512] = 00 00
00008628: BA0020 mov dx,02000 ;
0000862B: BD3186 mov bp,08631 ; Adress -->
0000862E: E98801 jmp 0000087B9
00008631: 7401 je 000008634
00008633: F4 hlt
00008634: B004 mov al,004 ;
00008636: 8C167200 mov [00072],ss
0000863A: 2E8E160685 mov ss,cs:[08506]
0000863F: BC0001 mov sp,00100 ;
00008642: C70613001000 mov w,[00013],00010
00008648: 2BC0 sub ax,ax
0000864A: 2E8B161285 mov dx,cs:[08512]
0000864F: BBAA55 mov bx,055AA ;
00008652: 81C20004 add dx,00400 ;
00008656: 81FA009C cmp dx,09C00 ;
0000865A: 7718 ja 000008674 ---
0000865C: 8EC2 mov es,dx
0000865E: 2BFF sub di,di
00008660: 26891D mov es:[di],bx
00008663: 26391D cmp es:[di],bx
00008666: 750C jne 000008674 ---
00008668: 8306130010 add w,[00013],010 ;
0000866D: B90020 mov cx,02000 ;" "
00008670: F3AB repe stosw
00008672: EBDE jmps 000008652 ---
00008674: B005 mov al,005 ;
00008676: BA2000 mov dx,00020 ;
00008679: B013 mov al,013 ;
0000867B: EE out dx,al
0000867C: 42 inc dx ; = 00021
0000867D: B008 mov al,008 ;""
0000867F: EE out dx,al
00008680: B009 mov al,009 ;" "
00008682: EE out dx,al
00008683: B0FF mov al,0FF ;"_"
00008685: EE out dx,al
00008686: EC in al,dx
00008687: FEC0 inc al
00008689: EE out dx,al
0000868A: EC in al,dx
0000868B: 0AC0 or al,al
0000868D: FEC8 dec al
0000868F: EE out dx,al
00008690: B006 mov al,006 ;
00008692: 2E8E061285 mov es,cs:[08512]
00008697: BE6AAD mov si,0AD6A ;
0000869A: 2BFF sub di,di
0000869A: 2BFF sub di,di
0000869C: B92000 mov cx,00020 ;" "
0000869F: 1E push ds;---------------
000086A0: 8CC8 mov ax,cs
000086A2: 8ED8 mov ds,ax
000086A4: A5 movsw
000086A5: AB stosw
000086A6: E2FC loop 0000086A4 -----
000086A8: 26894DFE mov es:[di][-0002],cx
000086AC: 1F pop ds;---------------
000086AD: B036 mov al,036 ;
000086AF: E643 out 043,al
000086B1: B80000 mov ax,00000 ;
000086B4: E640 out 040,al
000086B6: 8AC4 mov al,ah
000086B8: E640 out 040,al
000086BA: B0FE mov al,0FE ;
000086BC: E621 out 021,al
000086BE: B007 mov al,007 ;
000086C0: E8F51C call 00000A3B8 -----
000086C3: E87B09 call 000009041 -----
000086C6: E83D00 call 000008706 -----
000086C9: E85B01 call 000008827 -----
...
000087B9: B90001 mov cx,00100 ;
000087BC: 2BFF sub di,di ; di = 0000
000087BE: 26890D mov es:[di],cx
000087C1: 26310D xor es:[di],cx
000087C4: E1F8 loope 0000087BE ---
000087C6: 268A05 mov al,es:[di]
000087C9: B400 mov ah,000 ;
000087CB: BE5344 mov si,04453 ;
000087CE: 7551 jne 000008821 ---
000087D0: 8BCA mov cx,dx
000087D2: 8BC1 mov ax,cx
000087D4: AB stosw
000087D5: E2FB loop 0000087D2 ---
000087D7: E2FE loop 0000087D7 ---
000087D9: 8BCA mov cx,dx
000087DB: 2BFF sub di,di
000087DD: 8BC1 mov ax,cx
000087DF: AF scasw
000087E0: E1FB loope 0000087DD ---
000087E2: BE5341 mov si,04153 ;
000087E5: 753A jne 000008821 ---
000087E7: BE2388 mov si,08823 ;
000087EA: E461 in al,061
000087EC: 0C30 or al,030 ; 0011.0000b
000087EE: E661 out 061,al
; bit 4: 1=выкл. проверку четности RAM;
; bit 5: 1=выкл. контроль каналов в/в
000087F0: 24CF and al,0CF ; 0fcH=спикер OFF
000087F2: E661 out 061,al
000087F4: 2E cs:
000087F5: AC lodsb
000087F6: 8AE0 mov ah,al
000087F8: 2BFF sub di,di
000087FA: 8BCA mov cx,dx
000087FC: F3AB repe stosw
000087FE: 2BFF sub di,di
00008800: 8BCA mov cx,dx
00008802: F3AF repe scasw
00008804: 7511 jne 000008817 --
00008806: E462 in al,062
00008808: A8C0 test al,0C0 ; 1100.0000b
0000880A: 7405 je 000008811 --
0000880C: BE4550 mov si,05045 ;
0000880F: EB0E jmps 00000881F --
00008811: 0AE4 or ah,ah
00008813: 75DF jne 0000087F4 --
00008815: EB0A jmps 000008821 --
00008817: BE4344 mov si,04443 ;
0000881A: 4F dec di
0000881B: 4F dec di
0000881C: 263305 xor ax,es:[di]
0000881F: 0BF6 or si,si
00008821: FFE5 jmp bp
00008823: AA stosb
00008824: FF5500 call w,[di][00000]
00008827: 1E push ds
00008828: 07 pop es
00008829: BF0800 mov di,00008 ;
0000882C: BE2885 mov si,08528 ;
0000882F: BB3000 mov bx,00030 ;
00008520: xx xx xx xx-xx xx xx xx-BC_03 78_02 78_03 00 00
00008832: 2E cs:
00008833: AD lodsw
00008834: 0BC0 or ax,ax
00008836: 7416 je 00000884E ---
00008838: 92 xchg dx,ax
00008839: B0AA mov al,0AA ;
0000883B: EE out dx,al
0000883C: B90080 mov cx,08000 ;
0000883F: EC in al,dx
00008840: 3CAA cmp al,0AA ;
00008842: E1FB loope 00000883F ---
00008844: 75EC jne 000008832 ---
00008846: 92 xchg dx,ax
00008847: AB stosw
00008848: 81C30140 add bx,04001 ;
0000884C: EBE4 jmps 000008832 ---
0000884E: 26083E1100 or es:[00011],bh
00008853: 8AC3 mov al,bl
00008855: BA200C mov dx,00C20 ;
00008858: E83401 call 00000898F ---
0000885B: BB3000 mov bx,00030 ;
0000885E: BF0000 mov di,00000 ;
00008861: BE1E85 mov si,0851E ;
00008864: 2E cs:
00008865: AD lodsw
00008866: 0BC0 or ax,ax
00008868: 7416 je 000008880 ---
0000886A: 50 push ax
0000886B: 0402 add al,002 ;
0000886D: 92 xchg dx,ax
0000886E: B90080 mov cx,08000 ;
00008871: EC in al,dx
00008872: 3C01 cmp al,001 ;
00008874: E1FB loope 000008871 ---
00008876: 58 pop ax
00008877: 75EB jne 000008864 ---
00008879: AB stosw
0000887A: 81C30102 add bx,00201 ;
0000887E: EBE4 jmps 000008864 ---
00008880: BF7800 mov di,00078 ;
00008883: B81414 mov ax,01414 ;
00008886: AB stosw
00008887: AB stosw
00008888: B80101 mov ax,00101 ;
0000888B: AB stosw
0000888C: AB stosw
0000888D: 93 xchg bx,ax
0000888E: BA200B mov dx,00B20 ;
00008891: 2608261100 or es:[00011],ah
00008896: E9F600 jmp 00000898F ---
00008899: E84E00 call 0000088EA ---
0000889C: 7215 jb 0000088B3 ---
0000889E: 80FF3A cmp bh,03A ;":"
000088A1: 7510 jne 0000088B3 ---
000088A3: 8EC0 mov es,ax
000088A5: E84200 call 0000088EA ---
000088A8: 7209 jb 0000088B3 ---
000088AA: 80FF0D cmp bh,00D ;
000088AD: 7504 jne 0000088B3 ---
000088AF: 8BF0 mov si,ax
000088B1: F8 clc
000088B2: C3 retn
000088B3: F9 stc
000088B4: C3 retn
000088B5: E83200 call 0000088EA ---
000088B8: 72F9 jb 0000088B3 ---
000088BA: 80FF2C cmp bh,02C ;
000088BD: 7405 je 0000088C4 ---
000088BF: 80FF20 cmp bh,020 ;
000088C2: 75EF jne 0000088B3 ---
000088C4: 8BF0 mov si,ax
000088C6: E82100 call 0000088EA ---
000088C9: 72E8 jb 0000088B3 ---
000088CB: 80FF0D cmp bh,00D ;
000088CE: 75E3 jne 0000088B3 ---
000088D0: 8BF8 mov di,ax
000088D2: F8 clc
000088D3: C3 retn
000088D4: 2AE4 sub ah,ah
000088D6: CD16 int 016
000088D8: 50 push ax
000088D9: E8AA00 call 000008986 ---
000088DC: 58 pop ax
000088DD: 247F and al,07F ;
000088DF: 3C61 cmp al,061 ;
000088E1: 7206 jb 0000088E9 ---
000088E3: 3C7A cmp al,07A ;
000088E5: 7702 ja 0000088E9 ---
000088E7: 2C20 sub al,020 ;
000088E9: C3 retn
000088EA: 33C0 xor ax,ax
000088EC: 8BC8 mov cx,ax
000088EE: 50 push ax
000088EF: E82500 call 000008917 ---
000088F2: 58 pop ax
000088F3: 7208 jb 0000088FD ---
000088F5: B104 mov cl,004 ;
000088F7: D3E0 shl ax,cl
000088F9: 0AC3 or al,bl
000088FB: EBF1 jmps 0000088EE ---
000088FD: 80FF0D cmp bh,00D ;
00008900: 740F je 000008911 ---
00008902: 80FF2C cmp bh,02C ;
00008905: 740A je 000008911 ---
00008907: 80FF20 cmp bh,020 ;
0000890A: 7405 je 000008911 ---
0000890C: 80FF3A cmp bh,03A ;
0000890F: 7523 jne 000008934 ---
00008911: 80F904 cmp cl,004 ;
00008914: 751E jne 000008934 ---
00008916: C3 retn