Subversion Repositories pentevo

Rev

Rev 801 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1.  
  2. ; LAST UPDATE: 25.11.2022 savelij
  3.  
  4. _VERS_CORE      EQU 12
  5. _VERS_3         EQU 40
  6. _VERS_4         EQU 108
  7. _VERS_5         EQU 124
  8.  
  9. _BFOFFBITS      EQU 0X0A                        ;4
  10. _BCSIZE         EQU 0X0E                        ;4
  11. _BCWIDTH        EQU 0X12
  12. _BCHEIGTH_CORE  EQU 0X14
  13. _BCHEIGTH_345   EQU 0X16
  14. _BCBITCOUNT_COR EQU 0X18
  15. _BCBITCOUNT_345 EQU 0X1C
  16.  
  17. BUF_COLORS      EQU 0XB800
  18.  
  19. ;[BMPVIEW]
  20. BMPVIEW         CALL REST_COLCURS               ;СТИРАНИЕ КУРСОРА
  21.                 PEC_ON M_SHADOW_BF
  22.                
  23.                 CALL LOAD_BMP
  24.                 CALL CMP_BMPFORMAT              ;ПРОВЕРКА ФОРМАТА BMP ФАЙЛА
  25.                 JR C,BMPVIEW1                   ;НЕ ПОДДЕРЖИВАЕТСЯ, НЕ ВЫВОДИМ ИЗОБРАЖЕНИЕ
  26.                 CALL CREATE_PAL                 ;СОЗДАНИЕ ПАЛИТРЫ
  27.                 CALL SET_COLORS                 ;ГЕНЕРАЦИЯ ТАБЛИЦЫ ЦВЕТОВ ДЛЯ ЗАМЕНЫ
  28.                 LD A,1
  29.                 LD HL,SCR_PAL
  30.                 RST8 _SETUP_PAL                 ;УСТАНОВКА СОЗДАННОЙ ПАЛИТРЫ
  31. ;               CALL CONV_BMP
  32.                 CALL OUT_SCREEN                 ;ЗАГРУЗКА ИЗОБРАЖЕНИЯ
  33.                 XOR A
  34.                 RST8 _SETUP_PAL                 ;УСТАНОВКА SPECTRUM ПАЛИТРЫ
  35.  
  36. BMPVIEW1        LD BC,WIN_A1
  37.                 LD A,0X7A
  38.                 OUT (C),A
  39.                 LD BC,0XFF77
  40.                 LD A,0XA3
  41.                 OUT (C),A
  42.                 CALL SET_7FFD_0
  43.                 PEC_OFF M_SHADOW_BF
  44.                 LD SP,(LD_FILE_SP)
  45.                 POP IY
  46.                 POP IX
  47.                 POP HL
  48.                 JP _RULILKA                     ;ПРОДОЛЖЕНИЕ ПРОСМОТРА
  49.  
  50. ;300/40=C 1024/64 0000001100000000/01000000
  51. ;CONV_BMP       LD HL,(VERT_SIZE)
  52. ;               DEC HL
  53. ;               LD C,L
  54. ;               ADD HL,HL
  55. ;               ADD HL,HL
  56.                
  57. ;               RET
  58.  
  59. ;[ВЫВОД НА ЭКРАН ИЗОБРАЖЕНИЯ ИЗ ЗАГРУЖЕННОГО BMP ФАЙЛА]
  60. OUT_SCREEN      LD BC,CONF_128
  61.                 LD A,0X19
  62.                 OUT (C),A
  63.                 LD A,RAM_FLASHER
  64.                 CALL SET_CPU1
  65.                 LD BC,0XFF77
  66.                 LD A,0XA0
  67.                 OUT (C),A                       ;ВКЛЮЧЕНИЕ ЭКРАНА EGA 320x200x16c
  68.                 LD HL,CPU3+40*199               ;АДРЕС НАЧАЛА ПОСЛЕДНЕЙ СТРОКИ ЭКРАНА
  69.                 LD D,HIGH (BUF_COLORS)
  70.                 LD BC,-80
  71.                 EXX
  72.                 LD BC,CONF_128
  73.                 LD DE,CPU1
  74.                 LD HL,(CPU1+_BFOFFBITS)         ;СМЕЩЕНИЕ ДО ПИКСЕЛЕЙ ИЗОБРАЖЕНИЯ
  75.                 ADD HL,DE
  76.                 LD DE,0X1B1F
  77.                 LD IXL,200                      ;ВЫСОТА ЭКРАНА
  78. COPYPIC2        LD IXH,40                       ;ШИРИНА ЭКРАНА
  79. COPYPIC1        LD A,(HL)       ;0
  80.                 INC HL
  81.                 OUT (C),D
  82.                 EXX
  83.                 LD E,A
  84.                 LD A,(DE)
  85.                 LD (HL),A       ;7 6
  86.                 EXX
  87.                 LD A,(HL)       ;1
  88.                 INC HL
  89.                 OUT (C),E
  90.                 EXX
  91.                 LD E,A
  92.                 LD A,(DE)
  93.                 LD (HL),A       ;5 4
  94.                 LD A,%00100000
  95.                 XOR H
  96.                 LD H,A
  97.                 EXX
  98.                 BIT 7,H
  99.                 JP Z,COPYPIC4
  100.                 LD HL,CPU1
  101.                 LD A,RAM_FLASHER+1
  102.                 CALL SET_CPU1
  103. COPYPIC4        LD A,(HL)       ;2
  104.                 INC HL
  105.                 OUT (C),D
  106.                 EXX
  107.                 LD E,A
  108.                 LD A,(DE)
  109.                 LD (HL),A       ;3 2
  110.                 EXX
  111.                 LD A,(HL)       ;3
  112.                 INC HL
  113.                 OUT (C),E
  114.                 EXX
  115.                 LD E,A
  116.                 LD A,(DE)
  117.                 LD (HL),A       ;1 0
  118.                 LD A,%00100000
  119.                 XOR H
  120.                 LD H,A
  121.                 INC HL
  122.                 EXX
  123.                 DEC IXH
  124.                 JP NZ,COPYPIC1
  125.                 EXX
  126.                 ADD HL,BC
  127.                 EXX
  128.                 DEC IXL
  129.                 JP NZ,COPYPIC2
  130.                 XOR A
  131.                 IN A,(0XFE)
  132.                 CPL
  133.                 AND 0X1F
  134.                 JR Z,$-6
  135.                 XOR A
  136.                 IN A,(0XFE)
  137.                 CPL
  138.                 AND 0X1F
  139.                 JR NZ,$-6
  140.                 LD BC,CONF_128
  141.                 LD A,0X1B
  142.                 OUT (C),A
  143.                 CALL CLEAREGA1
  144.                 LD BC,CONF_128
  145.                 LD A,0X1F
  146.                 OUT (C),A
  147. CLEAREGA1       XOR A
  148.                 LD D,A
  149.                 LD E,A
  150.                 LD H,A
  151.                 LD L,A
  152.                 ADD HL,SP
  153.                 LD SP,0
  154. CLEAREGA2       REPT 0X20
  155.                 PUSH DE
  156.                 ENDM
  157.                 DEC A
  158.                 JP NZ,CLEAREGA2
  159.                 LD SP,HL
  160.                 RET
  161.  
  162. SCR_PAL         DUPL 0X10,0                     ;СОЗДАННАЯ ПАЛИТРА ИЗ ФАЙЛА
  163.  
  164. BLUE_3          DB 0, M_B_L, M_B_H, M_B_L | M_B_H
  165. GREEN_3         DB 0, M_G_L, M_G_H, M_G_L | M_G_H
  166. RED_3           DB 0, M_R_L, M_R_H, M_R_L | M_R_H
  167.  
  168. ;[ГЕНЕРАТОР ЦВЕТА В ФОРМАТЕ ATM VGA ЭКРАНА ДЛЯ ЗАМЕНЫ БАЙТОВ ИСХОДНОГО ИЗОБРАЖЕНИЯ]
  169. SET_COLORS      LD HL,BUF_COLORS
  170. SETCOLORS1      LD E,L
  171.                 LD A,E
  172.                 AND 7
  173.                 RLCA
  174.                 RLCA
  175.                 RLCA
  176.                 LD D,A
  177.                 LD A,E
  178.                 AND 8
  179.                 RLCA
  180.                 RLCA
  181.                 RLCA
  182.                 RLCA
  183.                 OR D
  184.                 LD D,A
  185.                 LD A,E
  186.                 AND 0X70
  187.                 RRCA
  188.                 RRCA
  189.                 RRCA
  190.                 RRCA
  191.                 OR D
  192.                 LD D,A
  193.                 LD A,E
  194.                 AND 0X80
  195.                 RRCA
  196.                 OR D
  197.                 LD (HL),A
  198.                 INC L
  199.                 JR NZ,SETCOLORS1
  200.                 RET
  201.  
  202. ;[КОНВЕРТОР ПАЛИТРЫ BMP ФАЙЛА В ФОРМАТ ПАЛИТРЫ ATM]
  203. CREATE_PAL      LD HL,CPU1+_BCSIZE+1
  204.                 LD D,(HL)
  205.                 DEC HL
  206.                 LD E,(HL)
  207.                 ADD HL,DE
  208.                 EX DE,HL                        ;DE=СМЕЩЕНИЕ ДО ПАЛИТРЫ BMP ФАЙЛА
  209.                 LD HL,SCR_PAL+0X0F              ;БУФЕР СОЗДАВАЕМОЙ ПАЛИТРЫ
  210.                 LD A,0X10
  211.                 EXX
  212.                 LD D,0
  213.                 EXX
  214. SETPAL1         EX AF,AF'
  215.                 LD A,(DE)
  216.                 AND 0XC0
  217.                 RLCA
  218.                 RLCA
  219.                 EXX
  220.                 LD HL,BLUE_3
  221.                 LD E,A
  222.                 ADD HL,DE
  223.                 LD A,(HL)
  224.                 EXX
  225.                 LD B,A          ;BLUE
  226.                 INC DE
  227.                 LD A,(DE)
  228.                 AND 0XC0
  229.                 RLCA
  230.                 RLCA
  231.                 EXX
  232.                 LD HL,GREEN_3
  233.                 LD E,A
  234.                 ADD HL,DE
  235.                 LD A,(HL)
  236.                 EXX
  237.                 OR B
  238.                 LD B,A          ;GREEN
  239.                 INC DE
  240.                 LD A,(DE)
  241.                 AND 0XC0
  242.                 RLCA
  243.                 RLCA
  244.                 EXX
  245.                 LD HL,RED_3
  246.                 LD E,A
  247.                 ADD HL,DE
  248.                 LD A,(HL)
  249.                 EXX
  250.                 OR B            ;RED
  251.                 CPL
  252.                 LD (HL),A
  253.                 DEC HL
  254.                 INC DE
  255.                 INC DE
  256.                 EX AF,AF'
  257.                 DEC A
  258.                 JP NZ,SETPAL1
  259.                 RET
  260.  
  261. ;[ПРОВЕРКА ФОРМАТА BMP ФАЙЛА НА ПРЕДМЕТ ПОДДЕРЖКИ (ПОДДЕРЖИВАЕТСЯ ТОЛЬКО 16 ЦВЕТНЫЕ BMP)]
  262. CMP_BMPFORMAT   LD A,(CPU1+_BCSIZE)
  263.                 CP _VERS_CORE
  264.                 LD B,1
  265.                 JR Z,CMPBMPFORM1
  266.                 CP _VERS_3
  267.                 LD B,2
  268.                 JR Z,CMPBMPFORM1
  269.                 CP _VERS_4
  270.                 LD B,3
  271.                 JR Z,CMPBMPFORM1
  272.                 CP _VERS_5
  273.                 LD B,4
  274.                 JR Z,CMPBMPFORM1
  275.                 SCF
  276.                 RET
  277.  
  278. CMPBMPFORM1     LD HL,CPU1+_BCWIDTH
  279.                 LD E,(HL)
  280.                 INC HL
  281.                 LD D,(HL)
  282.                 LD (HORIZ_SIZE),DE              ;ШИРИНА ЗАГРУЖЕННОГО ИЗОБРАЖЕНИЯ
  283.                 INC HL
  284.                 LD A,B
  285.                 DEC A
  286.                 JR Z,CMPBMPFORM2
  287.                 LD A,(HL)
  288.                 INC HL
  289.                 OR (HL)
  290.                 SCF
  291.                 RET NZ
  292. CMPBMPFORM2     LD HL,320                       ;ДЛЯ ШИРИНЫ НЕ БОЛЕЕ 320 ТОЧЕК
  293.                 AND A
  294.                 SBC HL,DE
  295.                 SCF
  296.                 RET NZ
  297.                 LD HL,CPU1
  298.                 LD A,B
  299.                 DEC A
  300.                 LD DE,_BCHEIGTH_CORE
  301.                 JR Z,CMPBMPFORM4
  302.                 LD DE,_BCHEIGTH_345
  303. CMPBMPFORM4     ADD HL,DE
  304.                 LD E,(HL)
  305.                 INC HL
  306.                 LD D,(HL)
  307.                 LD (VERT_SIZE),DE               ;ВЫСОТА ЗАГРУЖЕННОГО ИЗОБРАЖЕНИЯ
  308.                 INC HL
  309.                 LD A,B
  310.                 DEC A
  311.                 JR Z,CMPBMPFORM3
  312.                 LD A,(HL)
  313.                 INC HL
  314.                 OR (HL)
  315.                 SCF
  316.                 RET NZ
  317. CMPBMPFORM3     LD HL,200                       ;ДЛЯ ВЫСОТЫ НЕ БОЛЕЕ 200 ТОЧЕК
  318.                 AND A
  319.                 SBC HL,DE
  320.                 SCF
  321.                 RET NZ
  322.                 LD HL,CPU1
  323.                 LD A,B
  324.                 DEC A
  325.                 LD DE,_BCBITCOUNT_COR
  326.                 JR Z,CMPBMPFORM5
  327.                 LD DE,_BCBITCOUNT_345
  328. CMPBMPFORM5     ADD HL,DE
  329.                 LD A,(HL)
  330.                 CP 4
  331.                 RET Z
  332.                 SCF
  333.                 RET
  334.  
  335. ;[LOAD_16K]
  336. LOAD_16K        LD HL,CPU1
  337.                 LD A,0X20
  338.                 RST8 _COM_FAT,_READ_FILE
  339.                 RET
  340.  
  341. ;[LOAD_BMP]
  342. LOAD_BMP        LD A,RAM_FLASHER
  343. LOADBMP2        CALL SET_CPU1
  344.                 PUSH AF
  345.                 CALL LOAD_16K
  346.                 JR C,LOADBMP1
  347.                 POP AF
  348.                 INC A
  349.                 JR LOADBMP2
  350.  
  351. LOADBMP1        POP AF
  352.                 LD A,RAM_FLASHER
  353. SET_CPU1        PUSH BC
  354.                 LD BC,WIN_P1
  355.                 OUT (C),A
  356.                 POP BC
  357.                 RET
  358.  
  359. HORIZ_SIZE      DW 0
  360. VERT_SIZE       DW 0
  361.