Video on a spec - This article will discuss how to organize reactive display of high-resolution video on a spec with 128 kilobytes of memory.


╔═══════════════════════════════════╗╔══╗ 
|             Видео на спеке...   ╔╗╚╝  | 
╚═════════════════════════════════╝╚════╝ 
 Lynx/Infotek                             
          Fast high resolution            
        full screen video engine          
          Fast high resolution            
        full screen video engine          
                                          
  В этой статье речь пойдет о том, как на 
спеке с памятью 128 килобайт организовать 
реактивный показ видео в высоком разреше- 
нии.  Это  - самый легкий и в то же время 
самый  'рульный'  и  самый быстрый способ 
вывода видео кадров на экран.             
  Что требуется для этого. Для этого, для 
примера надо запастись 15-ю кадрами како- 
го-нибудь  видео (например, из какого-ни- 
будь  писишного  ЗD-shooter'а  подергайте 
кадры  по  F12,  потом  конвертнитеthem on 
spec).                                    
  Now I’ll tell you the location of this vi- 
deo(frames) in memory. For quick withdrawal 
on the screen they are stored unpacked 
form in main memory, as well as in the page 
Tsakh memory. Naturally pages 2 and 5 are not 
are used because  they are in os- 
new memory.                            
  What is special about this video? The point is 
that now mainly for small 
memory waste uses a special format 
mat - video output in low resolution - 
4x4 textures. And no one has yet practiced 
output video in high definition on 
screen.                                    
  So, let's start with a program that implements 
sends this output to the screen. Program 
can operate in any interrupt mode. 
The program uses a table in which 
3 bytes are allocated for each frame:       
    1 - page in which this frame:    
    2,3 - screen address.                   
                                          
        org 2SOOO                         
        ld hl,table                      
        ld b,15                          
l1: push bc                           
        ld bc,#7FFD                      
        ld a,(hl)                        
        add a,#1O                         
        out(c),ainc hl                            
        push hl                           
        ld  a,(hl)                        
        inc hl                            
        ld  h,(hl)                        
        ld  l,a                           
        ld  de,#ЧOOO                      
        ld  bc,#18OO                      
        ldir                              
        рор hl                            
        call pause                        
        inc hl                            
        рор bc                            
        djnz l1                           
        ret                               
pause   ld b,8                            
l2      halt                              
        djnz l2                           
table   DB O                              
        DW 27OOO                          
        DB O                              
        DW 33144                          
        DB O                              
        DW 39288                          
        DB O                              
        DW 49152                          
        DB O                              
        DW 55296                          
        DB 1                              
        DW 49152                          
        DB 1                              
        DW 55296DB 3                              
        DW 49152                          
        DB 3                              
DW 55296                          
        DB 4                              
        DW 49152                          
        DB 4                              
        DW 55296                          
        DB 6                              
        DW 49152                          
        DB 6                              
        DW 55296                          
        DB 7                              
        DW 49152                          
        DB 7                              
        DW 55296                          
                                          
 This is the program. She displays 
deo on the screen. Accordingly, in the procedure 
pause, the number of halts was selected by me 
purely for my video. With such a delay 
it turned out to be proportional.          
  After loading this program into memory 
you need to load the table into 
memory frames.  The easiest way to do this is from 
48-vasika with open pages. Make 
it can be done like this:              
                                          
1O OUT 32765.16+page number:RANDOMIZE USR 
15619:REM : LOAD "frame name" CODE address 
from the table.This is done because 48 BASIC is not 
switches pages every interruption on 
the one that lies in the variable 23388, and, 
Accordingly, it is convenient to arrange it like this 
image of the program.                        
  I saw such a loader, for example, in de- 
me BOOM.                                  
  Well, that's all. Finally, I will give one co- 
vet: how to unlock pages and TR-DOS post- 
le return from the program menu 128 quora- 
ma. This is done simply:                  

Share your thoughts about the article