Subversion Repositories pentevo

Rev

Rev 550 | Rev 585 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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