Video adapter UKNTS .
It is recommended to read part b 4 .
Necessary so akzhe simultaneously watch 3 book (from a set of factory documentation) , namely, pages 43- 50 , as the information provided here only illustrates with concrete examples what is stated in the documentation.
A small comment:
Characteristic features of the UKSC video adapter:
The WHOU row table device for display.
Definitions:
Analysis of the real table of WHO lines (see the image of RAM RAM - files to unload RAM and ROM).
Note:
- --------------
Address Value
---------------
000,270,000,000; the tag of line No. 1 is not really displayed on the screen, therefore, as a WHO
000272 002270 ; indicated " use " of RAM at addresses 000000- ... of the three plans
; the next tag will be 2-word and lies at 002270
---------------
...... ......
---------------
002,270,000,000 ; tag line number 2 - is not displayed on the screen
002272 002274 ; the next tag will be 2-word and lies at 002274
---------------
002,274,000,000 ; tag line number 3 - is not displayed on the screen
002,276 002,300 ; the next tag will be 2-word and lies at 002300
---------------
...... ......
---------------
002364 000 000; tag line number 17 - is not displayed on the screen
002366 002372; the next tag will be 4-word, it will set the line display parameters
; and it lies at 002370
---------------
002,370,000,000; №18 string tag specifies parameters display rows , from 1 8 th
002,372 000027 ; display scale x2 ( # 5 # 4 = " 01 ")
002,374,000,000 ; lines and number 18 is not displayed
002,376 002,406 ; the next tag will be 4-word, it will set the palette and will start with the address 002400
---------------
002,400 021,000 ; №19 string tag defines palette for lines starting from 19 th
002,402 063,104; the palette has the form [YRGB] = {0 110 , 0110 , 0100 , 0100 , 00 10 , 0010 , 0000 , 0000 }
002,404,000,000; lines and №1 9 on the screen is not displayed
002,406 002,410; the next tag will be 2-word, and lies at 002410
---------------
002410 175700 ; tag of line No. 20 - RAM 175700-175747 is used (40 bytes from each plan)
002412 002414 ; the next tag is 2-word and lies at 002414
---------------
002414 175750 ; tag of line No. 2 1 - RAM 175750-176017 is used (40 bytes from each plan)
002416 002420 ; the next tag is 2-word and lies at 002420
----------- ----
...... ......
---------------
002454 176450 ; tag line number 2 9 - used RAM 176450-176517 (40 bytes from each plan)
002456 002462 ; the next tag is 4-word, sets the display parameters and lies at 002460
---------------
002460 077407 ; tag line №30 of Determines the display parameters of lines from the 3 0 th
002462 000007 ; text cursor of color No. 7 on familiarity No. 12 8 (outside the screen), x1 scale
002464 176520 ; RAM used 17652 0. 176567 (at 40 -byte from each plan)
002466 002476 ; the next tag is 4-word, sets the palette and lies at 002470
---------------
002470 135230 ; tag line № 3 1 sets the palette for the rows ranging from 3 1 th
002,472 177,334 ; palette [ YRGB ] = {1111,1110,1101,1100, 1011,1010,1001,1000}
002474 177460; " Used " RAM 177460 - ...
002,476 004,672; the next tag is 4-word, sets display parameters and lies at 004670
---------------
...... ......
---------------
004670 007007; string tag specifies parameters №32 display lines, starting from 3 2 th
004,672,000,027 ; text cursor of color No. 7 on familiarity No. 1 5 , scale x2
004674 177460; " Used " RAM 177460- ...
004676 004706; the next tag is 4-word, sets the palette and lies at 004700
---------------
004700 135230; №33 string tag defines palette for the rows ranging from 3 3 th
004702 177334; palette [ YRGB ] = {1111,1110,1101,1100, 1011,1010,1001,1000}
004704 177460; " Used " RAM 177460- ...
004706 004710; the next tag is 2-word and lies at 004710
---------------
004710 177460 ; tag line number 3 4 - "used" RAM 177 460 -...
004712 004714; the next tag is 2-word and lies at 004714
---------------
004714 177460; tag line number 3 5 - "used" RAM 177 460 -...
004716 004720; the next tag is 2-word and lies at 004720
-------- -------
...... ......
---------------
005024 177460 ; tag line number 5 3 - "used" RAM 177 460 -...
005026 005030 ; the next tag is 2-word and lies at 005030
---------------
005030 154540 ; tag of line No. 54 - RAM 154540 -154607 is used (40 bytes from each plan)
005032 005034 ; the next tag is 2-word and lies at 005034
---------------
005034 154610 ; tag line number 5 5 - used RAM 154 610 -1546 5 7 (40 bytes from each plan)
005036 005040 ; the next tag is 2-word and lies at 0050 40
---------------
...... ......
---------------
006 604 175630 ; tag of line No. 273 - RAM 175630-175677 is used (40 bytes from each plan)
006,606 006,610 ; the next tag is 2-word and lies at 00 6610
---------------
006610 177460 ; the tag of line No. 274 is “used” by RAM 177 460 -...
006612 006614 ; the next tag is 2-word and lies at 00 6614
---------------
006614 177460 ; the tag of line No. 275 is “in use” of RAM 177 460 -...
006616 006620 ; the next tag is 2-word and lies at 00 6620
---------------
...... ......
---------------
006734 177460 ; tag line number 2 9 5 - "used" RAM 177 460 -...
006736 006742 ; the next tag is 4-word, sets the display parameters and lies at 00 6740
---------------
006740 000 000 ; tag line № 296 sets parameters of display rows, starting at 2 9 6 th
006742 000027 ; set display scale x2
006744 177460 ; "Used" RAM 177460- ...
006746 006756 ; the next tag is 4-word, sets the palette and lies at 00 6750
---------------
006750 021000 ; tag line № 297 defines palette for the lines from the 29 7 th
006,752 063,104 ; palette [ YRGB ] = {0 110 , 0110 , 0100 , 0100 , 0010,0010,0000,0000}
006,754 176,570 ; RAM is used 1765 7 0 - 176637 ( 40 bytes from each plan)
006756 006760 ; the next tag is 2-word and lies at 00 6 76 0
---------------
006760 176640 ; tag line number 2 9 8 - used RAM 176640 - 176707
006762 006764 ; the next tag is 2-word and lies at 00 6 7 64
---------------
006764 176710 ; tag line number 2 9 9 - used RAM 176710 - 176757
006766 006770 ; the next tag is 2-word and lies at 00 6 7 70
---------------
...... ......
---------------
007024 177410 ; tag line number 307 - used RAM 177410 - 177457
007026 007030 ; the next tag is 2-word and lies at 007030
---------------
007030 177460 ; the tag of line No. 308 is “in use” of RAM 1774 60 -...
007032 007034 ; the next tag is 2-word and lies at 007034
---------------
007034 177460 ; tag of lines No. 309- ... - “used” by RAM 1774 60 -...
007036 007034 ; the next tag is 2-word and lies at 007034 (link to yourself)
---------------
If the cell 002,476 instead of 004,672 record 002,500 , then the screen in place 264 lines PP monitor page will be displayed Page CPU monitor (also 264 lines) . By the way, it’s precisely these 264 lines of the CPU monitor page that make up 24 text lines (each 11 lines high) are available for applications.
...... ......
---------------
002500 100000; tag line number 32 - used RAM 100000-100117 (80 bytes from each plan)
002502 002504 ; the next tag is 2-word and lies at 002504
---------------
002504 100120 ; tag line number 3 3 - used RAM 100 12 0-100 237 (80 bytes from each plan)
002506 002510 ; the next tag is 2-word and lies at 0025 10
---------------
...... ......
---------------
004530 150740; tag line number 29 4 - used RAM 1 5 0740 - 151057 (80 bytes from each plan)
004532 004534 ; the next tag is 2-word and lies at 00 6742
---------------
004534 151060 ; tag line number 295 - used RAM 1 51060 - 151177 (80 bytes from each plan)
004536 006742 ; the next tag is 4-word, sets the display parameters and lies at 00 6740
---------------
...... ......
Cells in the range 004540-004667 implement an addition to the CPU monitor page, which is a buffer for scrolling the screen through 22 lines (i.e., 2 text lines). Obviously, to implement fast scrolling in both directions, you need at least one additional text line at the top and one text line at the bottom off the screen.
Note:
...... ......
---------------
004540 151200; tag of an additional line No. 1 - used RAM 151200 - 151317
004542 004544 ; the next tag is 2-word and lies at 004544
---------------
004544 151320 ; tag of additional line No. 2 - RAM 151 320 - 151437 is used
004546 004550 ; the next tag is 2-word and lies at 004550
---------------
...... ......
---------------
004660 154300 ; tag of an additional line No. 2 1 - used RAM 154300-154417
004662 004664 ; the next tag is 2-word and lies at 004664
---------------
004664 154420 ; tag additional line № 22 - RAM used 154420- 154 537
004666 002500 ; the next tag is 2-word and lies at 002500
---------------
...... ......
Obviously, all 264 + 22 lines of the CPU monitor page are looped inside. By changing only the entry point (cell value 002476) and shifting the exit point (in this case, it turned out to be cell 004536), you can get instant scrolling of the screen within the visible 264 lines.
SECAM half-frame line distribution (PP monitor page is displayed).
-----------
SECAM UKSC
------- ----
001 ---
002 ---
003 ---
004 001 000000 -... ( 19 non-displayable lines)
005 002 000000 -...
... ... ... .......
02 2 019 000 000 -...
------- ----
023 020 175700-175747 x2 scale, 4 colors (11 lines of the upper border)
024 021 175750-176017 x2 scale, 4 colors
... ... ............. x2 scale, 4 colors
032 029 176450-176517 x2 scale, 4 colors
033 030 176520-176567 x1 scale, 4 colors (actually climbs also in 176570-176637 )
------- ----
034 031 177460 -... x1 scale, 8 colors (skipping 1 line of the screen)
---- -------
035 032 177460 -... x2 scale, 8 colors (skip 22 lines of the screen)
036 033 177460 -... x2 scale, 8 colors
... ... .......... x2 scale, 8 colors
056 053 177460 -... x2 scale, 8 colors
------- ----
057 054 154540-154607 x2 scale, 8 colors (220 lines of PP monitor page)
058 055 154610-154657 scale x2, 8 colors (allow to display 20 character lines)
... ... ............. x2 scale, 8 colors
276 273 175630-175677 x2 scale, 8 colors
---- -------
277 274 177460 -... x2 scale, 8 colors (skip 22 lines of the screen)
278 275 177460 -... x2 scale, 8 colors
... ... .......... x2 scale, 8 colors
298 295 177460 -... x2 scale, 8 colors
------- ----
299 296 177460 -... x2 scale, 8 colors (skipping 1 line of the screen)
---- -------
300 297 176570-176637 x2 scale, 4 colors (11 rows of the lower border)
301 298 176640-176707 x2 scale, 4 colors
302 299 176710-176757 x2 scale, 4 colors
... ... ............. x2 scale, 4 colors
310 307 177410-177457 x2 scale, 4 colors
------- ----
311 308 177460 -... scale x2, 4 colors ( finishing non-displayed half-frame lines )
312 309 177460 -... x2 scale, 4 colors
... ... 177460 -... x2 scale, 4 colors
---- -------
PCB monitor page (lines №67 - number 75 // lines 14- 22 ) is formed text cursor color №7 height of 9 pixels 15 familiarity (starting from 1) in the 2 text oic line (also starting from 1).
See the value of bit # 0 = “1” for cells: @ # 005112 = # 005115 and @ # 005156 = # 005161 .
SECAM half-frame line distribution ( CPU monitor page is displayed ).
-----------
SECAM UKSC
------- ----
001 ---
002 ---
003 ---
004 001 000000 -... ( 19 non-displayable lines)
005 002 000000 -...
... ... ... .......
022 019 000000 -...
------- ----
023 020 175700-175747 x2 scale, 4 colors (11 lines of the upper border)
024 021 175750-176017 x2 scale, 4 colors
... ... ............. x2 scale, 4 colors
032 029 176450-176517 x2 scale, 4 colors
033 030 176520-176567 x1 scale, 4 colors (actually climbs also in 176570-176637)
------- ----
034 031 177460 -... x1 scale, 8 colors (skipping 1 line of the screen)
---- -------
035 032 100000 - 100117 scale x 1 , 8 colors (264 lines of the CPU monitor page)
036 03 3 100 120 - 100 237 scale x 1 , 8 colors (allow to deduce 2 4 character e rows and )
... ... .......... ... scale x 1 , 8 colors
298 295 1 51060 - 151177 scale x 1 , 8 colors
------- ----
299 296 177460 -... x2 scale, 8 colors (skipping 1 line of the screen)
---- -------
300 297 176570-176637 x2 scale, 4 colors (11 rows of the lower border)
301 298 176640-176707 x2 scale, 4 colors
302 299 176710-176757 x2 scale, 4 colors
... ... ............. x2 scale, 4 colors
310 307 177410-177457 x2 scale, 4 colors
------- ----
311 308 177460 -... scale x2, 4 colors ( finishing non-displayed half-frame lines )
312 309 177460 -... x2 scale, 4 colors
... ... 177460 -... x2 scale, 4 colors
---- -------
On the CPU monitor page (lines No. 89 - No. 97 // lines 36 - 44) , a text cursor of color No. 7 is formed with a height of 9 pixels by ?? familiarity (starting from 1) in 4 text lines (also starting from 1).
See the value of bit # 0 = “1” for cells: @ # 002712 = # 002715 and @ # 002756 = # 002761.
Comments:
The distribution of the upper 32 + 32 + 32kb RAM plans is 0.1.2 under the WHO.
100000- 151 177 - Page CPU monitor: 264 * 80 * 3bayt
151200 - 154 537 - additional lines of the page of the CPU monitor: 22 * 80 * 3bytes
154540-175677 - PP monitor page: 220 * 40 * 3bytes
175700-176567 - the top border of the screen: 11 * 40 * 3bytes
176570-177457 - lower screen border: 11 * 40 * 3bytes
177460-177577 - used to skip lines (1 * 80 * 3bytes)
177600-177777 - not used (128 * 3bytes)
Examples of use I n estandartn 's settings videoadap tera.
(1) virtual disk organization
As should already be clear, the number of simultaneously displayed colors can be reduced to one. Normal operation is quite possible with a 2-color palette (especially on a black and white monitor). If you adjust the palettes of all pages so that the content of bits # 1 and # 2 of the pixel does not affect its color, then it is clear that in this case you can store arbitrary information in the RAM of plans 1 and 2. Formally, it will also be displayed on the screen, but really, i.e. “By eye” it will not be noticeable. It remains only to configure the peripheral processor so that it, when rendering symbols in WHO, does not spoil the contents of plans 1 and 2. This is easily done using the register “mask for recording to plans” 177026 (on the main highway).
As a result, we can free up as much as 32 + 32kb of RAM at the top addresses of plans 1 and 2. Considering also that these plans are directly accessible through the RAP mechanism on the part of the CPU, it is clear that the CPU can use this memory as a “data segment” or “virtual” disk "to expand the memory capacity of RAM mode USER.
(2) organization of a long continuous video page
Simple calculations show that the maximum achievable length of a continuous full-color page with a width of 640 pixels is 409 whole lines (32 * 1024/80) . However, if it were enough to limit ourselves to a palette of two colors , then with the same page width, theoretically it would be possible to organize a continuous page of 1228 whole lines (32 * 3 * 1024/80) - and this is already a little more than 4 full screen monitors!
The problem is that when the video adapter selects the next RAM start address from the tag table, it uses this address at the same time to select information from all three RAM plans.
The solution to this problem is as follows:
1) the WHO tag table is organized, consisting of three consecutive parts. Each part defines its own two-color palette: part 1 - based on the value of bit # 0 of the pixel, part 2 - on the value of bit # 1, part 3 - on the value of bit # 2,
2) the range of RAM addresses in all parts is the same, namely: 100000-1 777 17 . This defines 409 lines in each part.
As a result, it turns out that virtually every WHOU line is present on the screen three times, but in part 1 only information from plan 0 is taken into account, in part 2 - from plan 1, in part 3 - from plan 2. This allows you to organize a continuous page length 409 * 3 = 1227 lines.
Synchronize page switching with a frame scan of the monitor screen.
If in the process of rendering a page to switch it (in the part where it has not yet had time to draw), then a situation may arise when two halves of two different pages are displayed on the screen. Although, if the page is switched entirely (i.e., by replacing the address, for example, in cell 000272), then this really doesn’t arise - the video adapter will go through the tag chain of the first WHOU table to the end, before it "understands" that it is already inactive.
The task is complicated if we do not switch between the two pages, but change the RAM addresses online within the active WHO tag table. The result of such work can be completely unpredictable - because the video adapter and peripheral processor during this process can alternately overtake each other. As a result, on the screen (for the period of one frame), a “layer cake” of two pages can generally be obtained.
With a high switching frequency, all this looks at least not aesthetically pleasing.
To solve such problems, it is required to use a 50 Hz timer (it is called a “network timer”) , synchronized with a vertical frame pulse (not to be confused with a system programmable timer! These are completely different devices ) . The signal from this timer is issued both to the trunk of the peripheral processor and to the trunk of the central processor (by the way, the same signal can be used to a certain extent for synchronizing processors). At the beginning of the sync frame pulse sweep timer issues an interrupt at vector 000100. Accordingly, the interrupt handler and should cause the tag table modification procedure cart.