From
Nikolaj Amosov
→
To
All
13 December 2002
Greetings, All!
Is it possible to use an ISA video card, for example EGA,
by plugging it into the ISA connector on the SMUC?
It would be nice to have a good text screen...
How is such a card programmed? Does she need
crawl into the computer's memory for data or output through ports?
[REAL ZX]
From
Valerij Kozhevnikoff
→
To
Nikolaj Amosov
16 December 2002
Hello Nikolaj!
13 Dec 02 19:08, Nikolaj Amosov -> All:
NA> Is it possible to use an ISA video card, for example EGA,
NA> by plugging it into the ISA connector on the SMUC?
It's possible. A friend of mine did it. Video pages were projected from address 0. i.e.
you write to ROM and it goes into video memory. You need to set a register for
latching high addresses (A12-A19 is probably enough) and a signal conditioner
/MEMWR. IR23 and ID7 will be quite enough. Well, LL1 may still be there.
Select the register address so that it does not conflict with either SMUC itself or the video card.
NA> It would be nice to have a good text screen...
NA> How is such a card programmed? Does she need
NA> access the computer memory for data or output through ports?
The PC has 640 kB of RAM for programs; different ROMs are projected to addresses from 640 to 1024
devices, BIOS, video BIOS and video memory. Video Page Projection Window = 16
kb. There are 1 to 4 video pages in CGA-EGA cards, they are switched through ports.
There is no more than 64 KB of memory on EGA cards. I have one lying around here, on
There are 8 analogues of RU5.
WBR, Jason.
/*e-mail: jason2000(scary dog)yandex.ru ICQ: 62235830*/
/np:/ *silence*
From
Kirill Frolov
→
To
Valerij Kozhevnikoff
19 December 2002
Press RESET immediately, Valerij!
16 Dec 02 09:24, Valerij Kozhevnikoff wrote to Nikolaj Amosov:
VK> The PC has 640 kB of RAM for programs
In IBM-XT. IBM-AT already assumes the presence of an i80286 processor and a protected
mode. And starting from i80386 it’s all emulation...
VK> Video page projection window = 16 kb.
64kb. One segment in real mode. This is the address window for accessing
video memory, high part of the address (if the amount of video memory exceeds 64kb)
set via ports.
Addresses are allocated to 128kb:
0xa0000 - 0xbffff video memory
0xc0000 - 0xdffff Video adapter ROM
Memory usage by various video adapters:
Adapter Video memory addresses
CGA 0xb8000 - 0xbbfff ; 4kb one page 80x25 in color
MDA/Hercules 0xb0000 - 0xb0fff ; 2kb 80x25 monochrome
[E,V]GA mono text 0xb0000 - 0xb7fff ; 32kb several pages
[E,V]GA color text 0xb8000 - 0xbffff ; 32kb several pages
[E,V]GA graphics 0xa0000 - 0xaffff ; 64kb
It is possible to program the adapter only through the ports, but in this regard
there are some doubts... In addition, you need to somehow switch the video from
Spectrum and from the adapter, the adapter itself will need to be programmed to
television scanning frequency.Addresses of registers of video adapters available through ports:
CGA adapter: 0x3d4-0x3d5 (6845 compatible), 0x3d8-0x3da.
MDA/Hercules adapter: 0x3b4-0x3b5 (reg. 6845), 0x3b8-0x3bc.
EGA adapter:
0x3c0-0x3cf, 0x3b4-0x3b5 and 0x3d4-0x3d5 (reg. 6845), 0x3ba-0x3bc and
0x3da-0x3dc.
The EGA adapter can use a second bank of addresses
(when installing a jumper on the adapter board). In this
In this case, the addresses will be in the range 0x2c0-0x2df.
VGA adapter: 0x3c0-0x3cf, 0x3b4-0x3ba and 0x3d4-0x3da (MDA and CGA emulation).
All of the listed adapters emulate the operation of a display controller
6845, which allows you to work with them exclusively through ports 0x3b4-0x3b5 or
0x3d4-0x3d5. EGA adapter is backward compatible with CGA adapter, VGA
emulates CGA and MDA/Hercules adapters. The CGA adapter requires that it be written to
video memory was carried out exclusively at the moment of the return stroke of the beam, otherwise
All sorts of unwanted video effects appear. In addition, MDA/Hercules and CGA
adapters do not have the ability to load a font into a character generator and without hardware
Russifications (ROM replacements) cannot display Cyrillic alphabet characters.
SMUC controller of a Scorpion computer when accessing an ISA device port
connector sets the device address on the ISA bus as follows:
ISA Address (bits)A9 | A8 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0
----+----+----+----+----+----+----+----+----+-----
0 |cp.2|cp.1| a4 | a3 |a14 |a13 |a10 | a9 | a8
(in the bottom line is the address on the Spectrum bus)
cp.1 and cp.2 are bits 1 and 2 (counting from zero) of one of the register
SMUC controller available for writing and reading. Bit A9 of the ISA bus address or
always set to zero, or perhaps controlled through one of
ports of the SMUC adapter, but this is only a guess (see below one of my
letters to this echo). If bit A9 is always set to 0, then without modification of SMUC
controller, it is only possible to use an EGA video adapter with an address bank
0x2c0-0x2df. If bit A9 can be set to 1 by software, then it’s possible
use of VGA, CGA, MDA or Hercules adapters, and possibly also
some others, including SVGA.
VK> There is no more than 64 KB of memory on EGA cards.
It happens. Up to 128kb.
My old letter:
= Iron Spectrum (500:812/1.507) ============================= HARDWARE.ZX =
Msg : 1291 of 1297 Snt Loc Scn
From : Kirill Frolov 500:812/1.507 17 Jul 02 21
To : All 17 Jul 02 21
Subj: SMUC unknown ports
===================================================================================Press RESET immediately, All!
Below is the breakdown of SMUC ports. Questions indicate ports
unknown purpose. Signal A9 is not output to the ISA bus, which also seems
strange. It would be nice
if anyone with a real piece of hardware clarified the conditions for selecting the controller
(IMHO I'm there
added extra signals) and the purpose of unidentified registers.
There are questions: when accessing which ports, reading and writing occurs in
IDE drive registers -- when accessing the shadow register containing
upper 8 bits of the data bus
drive, or when accessing the low-order part of the data register?
What serial EEPROM chip (connected via I2C, small
such, 8-pins) installed in the SMUC controller? 256 bytes or more?
There is an assumption that the same thing is written inside that is written in sector 15
tr-dos disk. That is, autoloading can be done not only from the disk, but directly from
eeprom.
Where is the alarm output (interrupt, that is) of the RTC chip (512VI1) connected?
aka "CMOS")? On IRQ0 of the interrupt controller? Where are IRQ1,2,3 connected?
? Are interrupts (IRQ2-IRQ7) sent somewhere from the ISA slot? Must go on
PIC (type 580BH59 interrupt controller).
CONTROLLER SELECTION CONDITIONS:
{ a0=0 } AND { a1,a5,a7,a11,a12=1 } AND {trdos active}
|
| ! ISA-BUS ADDRESSES:
| ! a8,a9,a10,a13,a14,a3,a4 isa/ide/pic address (A0-A6)
|
|+- a6=1 access to ISA slot
| | (!) INFLUENCE OF A13 ON THESE PORTS IS UNKNOWN!
| |
| +- a2=1
| | |
| | |
| | +- a15=1 ??? (ISA A9 ?) UNKNOWN REGISTER
| | | |
| | | +- a13=1 ???
| | | |
| | | +- a13=0 ???
| | |
| | |
| | +- a15=0 isa bus ports rw
| | | isa address bits(A9-A0): (cp==control port bit)
| | | { ? (0), cp.2, cp.1, a4, a3, a14, a13, a10, a9, a8 }
| | |
| | +- a13=1 ???
| | |
| | +- a13=0 ???
| |
| |
| +- a2=0 ???
| |
| +- a15=1 ??? UNKNOWN REGISTERS
| | |
| | +- a13=1 ???
| | |
| | +- a13=1 ???
| |
| +- a15=0 ???
| |
| +- a13=1 ???
| |
| +- a13=0 ???
|
|
+- a6=0 access to SMUC devices
|
|
+- a2=1 access to IDE and PIC controllers
| |
| |
| +- a15=1 ide controller ports
| | |
| | +- a13=1 ide interface registers rw
| | |
| | +- a13=0 shadow ide register rw ?
| |
| |
| +- a15=0 interrupt controller register block rw
| |
| +- a13=1
| | (what is the impact of this bit)| | ( на работу SMUC и контроллера )
| +- a13=0 ( прерываний? неизвестно )
|
|
+- a2=0
|
|
+- a15=1 rtc/control port
| |
| +- a13=1 control port
| | + bit0 isa/pic/ide reset (0 active) wo
| | + bit1 A7 ISA wo
| | + bit2 A8 ISA wo
| | + bit3 enable interrupts from pic (1 active) wo
| | + bit4 SDA out wo
| | + bit5 write protect NVRAM (1 active) wo
| | + bit6 write SCL, read SDA rw
| | + bit7 0=(rtc read, ide command register block),
| | 1=(rtc write, ide status register block) wo
| |
| +- a13=0 rtc port
| control port bit7=0 write address, read data
| control port bit7=1 write data
|
|
+- a15=0 fdd status port rw
+ bit7 1=drive A: real disk, 0=emulated
+ bit6 1=drive B: real disk, 0=emulated
ro = read only
rw = read and write
ps: табличка портов от Jason'а у меня есть...
-+- [ZX]
+ Origin: на пц мы ставим крест, speccy поколенье next! (500:812/1.507)
From
Valerij Kozhevnikoff
→
To
Nikolaj Amosov
24 December 2002
Hello Nikolaj!
20 Dec 02 21:45, Nikolaj Amosov -> Kirill Frolov:
KF>> But faster than in 512x192 mode (8x8 pixels per character
KF>> is drawn faster). B
KF>> turbo mode is quite usable.
NA> I checked - filling the entire screen for about two seconds in turbo
NA> mode. Displayed directly, without any line transition signs
NA> columns.
8-() I don’t believe it!!! Is it with attributes?
Attribute screen = 16000 bytes.
7000000/16000 = ~440 clock cycles per _byte_ output??? 8-/
Look:
ld bc,#0850
m1 push bc
ld a,(de)
ld(hl),a
ld b,0
add hl,bc
inc d
pop bc
djnz m1
This crap prints one character and runs in 565 clock cycles.
565*80*25 = 1,130,000 clock cycles per screen output.
7000000/1130000 = 6.2 screens per second!
If you open the cycle, then even more!
In a second you can fill the entire screen with letters at least 6 times!
You're glitching! Where and how did you manage the screen in two seconds?
I saw color 512x240 on Pro and monochrome 640x200 on ATM. Everything is everywhere
it worked quite well...
Think for yourself. GMX is basically the same thing + a hardware scroller.
WBR, Jason./*e-mail: jason2000(scary dog)yandex.ru ICQ: 62235830*/
/np:/ *silence*
From
Valerij Kozhevnikoff
→
To
Nikolaj Amosov
24 December 2002
Hello Nikolaj!
20 Dec 02 21:45, Nikolaj Amosov -> Kirill Frolov:
NA> I checked - filling the entire screen for about two seconds in turbo
NA> mode. Displayed directly, without any line transition signs
NA> columns.
scraddr
dw 0x8000,0x8280,0x8500,0x8780,0x8A00,0x8C80,0x8F00,0x9180
dw 0x9400.0x9680.0x9900.0x9B80.0x9E00.0xA080.0xA300.0xA580
dw 0xA800.0xAA80.0xAD00.0xAF80.0xB200.0xB480.0xB700.0xB980
dw 0xBC00
;BC=xy
ld hl,scraddr
ld a,c ;y
add a,a
ld d,0
ld e,a
add hl,de
ld e,(hl)
inc hl
ld d,(hl)
ld h,0
ld l,b ;x
add hl,de
;HL = address on the screen for the procedure for outputting a character from the previous letter.
If you tweak it a little, then at the cost of two clock cycles you can do without modifying the pair
de.
add a,l ;hl=hl+a 20 bars
ld l,a
adc a,h
subl
ld h,a
WBR, Jason.
/*e-mail: jason2000(scary dog)yandex.ru ICQ: 62235830*/
/np:/ *silence*