Subversion Repositories pentevo

Rev

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

  1.  
  2. ;LAST UPDATE: 31.07.2017 savelij
  3.  
  4. TAPE_EMUL       LD H,CMOS_BYTE_00
  5.                 CALL READCMOS
  6.                 AND M_EMUL_TAPE
  7.                 JR NZ,EMULOADTAP
  8.                 LD A,(RREG_A)
  9.                 LD (RREG_C),A
  10.                 CP A
  11.                 PUSH AF
  12.                 POP HL
  13.                 LD (RREG_F),HL
  14.                 RET
  15.  
  16. EMULOADTAP      LD A,(CPU6+2)                   ;НОМЕР СТРАНИЦЫ ГДЕ НАЧИНАЕТСЯ СЛЕДУЮЩИЙ БЛОК
  17.                 LD IYL,A
  18.                 ADD A,RAM_TAPE
  19.                 LD BC,WIN_P5
  20.                 OUT (C),A                       ;РЕАЛЬНАЯ СТРАНИЦА ОТКУДА БРАТЬ
  21.                 LD HL,(CPU6)                    ;СМЕЩЕНИЕ В СТРАНИЦЕ
  22.                 LD DE,(RREG_IXL)                ;АДРЕС КУДА ЛОЖИТЬ
  23.                 LD A,D
  24.                 EXX
  25.                 LD BC,WIN_P6
  26.                 CP 0X80
  27.                 LD A,0XFA                       ;ДЛЯ ДИАПАЗОНА АДРЕСОВ ЗАГРУЗКИ 4000-7FFF
  28.                 JR C,ELT01
  29.                 LD A,0XFD                       ;ДЛЯ ДИАПАЗОНА АДРЕСО ЗАГРУЗКИ 8000 И ВЫШЕ
  30. ELT01           OUT (C),A
  31.                 LD IYH,A                        ;НОМЕР СТРАНИЦЫ В КОТОРУЮ ПЕРЕНОСИМ
  32.                 EXX
  33.                 LD A,0X40                       ;ДЛЯ ДИАПАЗОНА АДРЕСОВ 4000-7FFF ГРУЗИМ НА 4000 ВЫШЕ
  34.                 JR C,ELT02
  35.                 LD A,0                          ;ДЛЯ ДИАПАЗОНА АДРЕСОВ 8000 И ВЫШЕ АДРЕС ЗАГРУЗКИ НЕ МЕНЯЕМ
  36. ELT02           ADD A,D
  37.                 LD D,A                          ;РЕАЛЬНЫЙ АДРЕС УКЛАДКИ
  38.                 SET 6,H
  39.                 LD C,(HL)
  40.                 INC HL
  41.                 LD B,(HL)                       ;ВЗЯЛИ РАЗМЕР БЛОКА ДЛЯ ЗАГРУЗКИ
  42.                 INC HL
  43.                 INC HL                          ;ПРОПУСКАЕМ ФЛАГОВЫЙ БАЙТ
  44.                 DEC BC
  45.                 DEC BC                          ;ГРУЗИТЬ НА 2 БАЙТА МЕНЬШЕ (МИНУС ФЛАГОВЫЙ БАЙТ И CRC)
  46. ELT07           LDI
  47.                 JP PO,ELT05
  48.                 LD A,D
  49.                 CP 0XC0
  50.                 JR C,ELT06
  51.                 LD A,IYH
  52.                 CP 0XFA
  53.                 JR NZ,ELT06
  54.                 LD A,0XFD
  55.                 LD IYH,A
  56.                 EXX
  57.                 LD B,HIGH (WIN_P6)
  58.                 OUT (C),A
  59.                 EXX
  60.                 LD D,0X80
  61. ELT06           LD A,H
  62.                 CP 0X80
  63.                 JR C,ELT07
  64.                 INC IYL
  65.                 LD A,IYL
  66.                 ADD A,RAM_TAPE
  67.                 EXX
  68.                 LD B,HIGH (WIN_P5)
  69.                 OUT (C),A
  70.                 EXX
  71.                 LD H,0X40
  72.                 JR ELT07
  73.                
  74. ELT05           INC HL                          ;ПРОПУСК КОНТРОЛЬНОЙ СУММЫ БЛОКА
  75.                 RES 6,H
  76.                 EVOPORT WIN_P5,0XFA             ;ВЕРНУЛИ СТРАНИЦУ В 1 ОКНЕ ПРОЕЦИРОВАНИЯ
  77.                 LD B,HIGH (WIN_P6)
  78.                 XOR A
  79.                 OUT (C),A                       ;ВКЛЮЧИЛИ ПОСЛЕДНЮЮ СТРАНИЦУ
  80.                 LD (CPU6),HL                    ;ВЕРНУЛИ СМЕЩЕНИЕ В СТРАНИЦЕ ДЛЯ ЗАГРУЗКИ
  81.                 LD A,IYL
  82.                 LD (CPU6+2),A                   ;ВЕРНУЛИ В ПЕРЕМЕННУЮ НОМЕР ТЕКУЩЕЙ СТРАНИЦЫ ЗАГРУЗКИ
  83.                 LD HL,(RREG_IXL)
  84.                 LD DE,(RREG_E)
  85.                 ADD HL,DE
  86.                 LD (RREG_IXL),HL
  87.                 LD HL,0
  88.                 LD (RREG_E),HL
  89.                 LD HL,RREG_F
  90.                 RES 6,(HL)
  91.                 SET 0,(HL)
  92.                 RET
  93.  
  94. TAPE_INIT       XOR A
  95.                 LD HL,CPU6
  96.                 LD (HL),A
  97.                 INC L
  98.                 LD (HL),A
  99.                 INC L
  100.                 LD (HL),A
  101.                 RET
  102.