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: 18.01.2012 savelij
  3.  
  4.                 include ../../macros.a80
  5.                 include ../../global_vars.a80
  6.                 include ../../ports_ngs.a80
  7.                 include ../../sdcomand.a80
  8.                 include rst8_vars.a80
  9.  
  10. DD              EQU 13                          ;ДАТА
  11. MM              EQU 12                          ;МЕСЯЦ
  12. YY              EQU 11                          ;ГОД
  13. DATA            EQU DD+(MM<<5)+(YY<<9)+0X8000   ;УЖЕ УПАКОВАНО
  14.  
  15. TXTMODE_DEBUG   EQU 0
  16.  
  17.                 PHASE 0
  18. ;ОБРАБОТКА НАЖАТИЯ MAGIC
  19.                 JP CONT_MAGIC                   ;0000
  20.  
  21.                 DUPL 0X0008-$,0XFF
  22. ;ПРОДОЛЖЕНИЕ ОБРАБОТКИ RST8
  23.                 JP NEXT_RST8                    ;0008
  24.  
  25.                 DUPL 0X0010-$,0XFF
  26. ;ЧТЕНИЕ БАЙТА ИЗ ОСНОВНОЙ ПАМЯТИ
  27.                 JP RD_BYTE_48K                  ;0010
  28.  
  29.                 DUPL ADR_SEL_ROM-$,0XFF
  30. JUMP2PAGE       OUT (C),A
  31.                 NOP
  32.                 RET
  33.  
  34.                 DUPL 0X0018-$,0XFF
  35.                 JP EXIT_RST8                    ;0018
  36.  
  37.                 DUPL 0X0020-$,0XFF
  38.                 JP $                            ;0020
  39.  
  40.                 DUPL 0X0028-$,0XFF
  41.                 JP $                            ;0028
  42.  
  43.                 DUPL 0X0030-$,0XFF
  44.                 JP $                            ;0030
  45.  
  46.                 DUPL 0X0038-$,0XFF
  47. ;ОПРОС КЛАВИАТУРЫ
  48.                 EI
  49.                 RET;JP KEYBOARDS                        ;0038
  50.  
  51. ;ЧТЕНИЕ БАЙТА ИЗ ОБЛАСТИ ПАМЯТИ 0X4000-0XFFFF
  52. RD_BYTE_48K     PUSH HL
  53.                 PUSH DE
  54.                 PUSH BC
  55.                 PUSH AF
  56.                 LD BC,WIN_P2
  57.                 LD DE,0XFD
  58.                 LD HL,(RADRRET_L)
  59.                 OUT (C),E
  60.                 LD A,(HL)
  61.                 INC HL
  62.                 OUT (C),D
  63.                 LD (RADRRET_L),HL
  64.                 LD (NEXTBYTERST8),A
  65.                 POP AF
  66.                 POP BC
  67.                 POP DE
  68.                 POP HL
  69.                 RET
  70.  
  71. ;ВЫХОД ИЗ RST8
  72. EXIT_RST8       LD BC,ADR_EXITRST8              ;АДРЕС ВОЗВРАТА В ПОСЛЕДНЕЙ СТРАНИЦЕ RAM
  73.                 PUSH BC
  74.                 LD BC,WIN_P0
  75.                 XOR A
  76.                 JP JUMP2PAGE
  77.  
  78.                 DUPL 0X0066-$,0XFF
  79. ;ВЫХОД ИЗ MAGIC
  80. CONT_MAGIC      NOP
  81.                 LD HL,CPU2+N_0WINA0
  82.                 LD DE,(CPU2+N_DOS7FFD)
  83.                 LD BC,CPU2+N_7FFD
  84.                 CALL CONVERT_BPORT
  85.                 LD A,(N_7FFD+CPU2)
  86.                 AND %11110111
  87.                 LD BC,0X7FFD
  88.                 OUT (C),A
  89.                 LD BC,0XFF77
  90.                 LD A,(N_77)
  91.                 AND 7
  92.                 OR 0XA0
  93.                 OUT (C),A
  94.                 CALL STORE_TXTMODE
  95.                 IF TXTMODE_DEBUG=0
  96.                 CALL SCAN_FONT
  97.                 ENDIF
  98.                 CALL MAGIC_FONT
  99.                 CALL CLS_TXTMODE8
  100.  
  101.                 LD HL,TEXT_PORTREGS
  102.                 CALL PRTT_MSG
  103.                 CALL PRT_PORTREGS
  104.  
  105. ;               CALL COMPARE_FONT
  106.  
  107. CONTMAGIC1      LD A,0XFB
  108.                 IN A,(0XFE)
  109.                 AND 4
  110.                 JR NZ,CONTMAGIC1
  111. CONTMAGIC2      XOR A
  112.                 IN A,(0XFE)
  113.                 CPL
  114.                 AND 0X1F
  115.                 JR NZ,CONTMAGIC2
  116.  
  117.                 CALL RESTORE_TXTMODE
  118.                 CALL RESTORE_FONT
  119.  
  120.                 LD BC,ADR_EXITMAGIC
  121.                 PUSH BC
  122.                 LD BC,WIN_P0
  123.                 XOR A
  124.                 JP JUMP2PAGE
  125.  
  126. CODE_TABL       DW AY_PRN_INIT                  ;40
  127.                 DW AY_PRN_A_                    ;41
  128.                 DW AY_PRN_TOKEN                 ;42
  129.                 DW AY_PRN_SCR                   ;43
  130.                 DW TAPE_INIT                    ;44
  131.                 DW TAPE_EMUL                    ;45
  132.                 DW WINW                         ;46
  133.                 DW PRINT_MESSAGE                ;47
  134.                 DW PRINT_A                      ;48
  135.                 DW SCRUP                        ;49
  136.                 DW SCRDN                        ;4A
  137.                 DW COM_DEV                      ;4B
  138.                 DW RUN_FILECODE                 ;4C
  139.                 DW WRITE_FONT                   ;4D
  140.                 DW READ_FONT                    ;4E
  141. ECODE_TABL
  142.  
  143.                 DUPL 0X00FF-$,0XFF
  144.                 DW 0X0038
  145.  
  146. ;===============
  147.  
  148. ;ПРОДОЛЖЕНИЕ ОБРАБОТКИ RST8
  149. NEXT_RST8       LD HL,EXIT_RST8
  150.                 PUSH HL
  151.                 LD (INTERNAL_SP),SP
  152.                 LD HL,CPU2+R_0WINA0
  153.                 LD DE,(CPU2+R_DOS7FFD)
  154.                 LD BC,CPU2+R_7FFD
  155.                 CALL CONVERT_BPORT
  156.                 LD A,(RCODE_CALL)
  157.                 AND 0X3F
  158.                 LD L,A
  159.                 LD H,0
  160.                 ADD HL,HL
  161.                 LD DE,CODE_TABL
  162.                 ADD HL,DE
  163.                 LD E,(HL)
  164.                 INC HL
  165.                 LD D,(HL)
  166.                 EX DE,HL
  167.                 JP (HL)
  168.  
  169. READ_FONT
  170.                 RET
  171.  
  172. WRITE_FONT      IN A,(PEVO_CONF)
  173.                 PUSH AF
  174.                 SET 2,A
  175.                 OUT (PEVO_CONF),A
  176.                 LD HL,(RREG_L)
  177.                 LD DE,0
  178.                 LD BC,0X0800
  179.                 LDIR
  180.                 POP AF
  181.                 OUT (PEVO_CONF),A
  182.                 RET
  183.  
  184. RUN_FILECODE    LD BC,0X0100                    ;АДРЕС ПЕРЕХОДА
  185.                 PUSH BC
  186.                 LD BC,WIN_A0
  187.                 LD A,4                          ;ВЫЗОВ КОДА ИЗ 4 СТРАНИЦЫ
  188.                 JP JUMP2PAGE
  189.  
  190. CONTINUE_PROG   XOR A
  191.                 IN A,(0XFE)
  192.                 CPL
  193.                 AND 0X1F
  194.                 JR NZ,CONTINUE_PROG
  195.                
  196.                 LD SP,(INTERNAL_SP)
  197. INT_ONLY_RET    RET
  198.  
  199. CONVERT_BPORT   LD A,8
  200. CBPORT03        EX AF,AF'
  201.                 LD A,(HL)
  202.                 AND 0X40
  203.                 JR NC,CBPORT01
  204.                 SRL D
  205.                 SRL E
  206.                 JR CBPORT02
  207.  
  208. CBPORT01        LD A,(HL)
  209.                 RLCA
  210.                 RLCA
  211.                 SRL D
  212.                 RRA
  213.                 SRL E
  214.                 RRA
  215.                 LD (HL),A
  216. CBPORT02        DEC HL
  217.                 EX AF,AF'
  218.                 DEC A
  219.                 JR NZ,CBPORT03
  220.                 LD A,(BC)
  221.                 LD HL,N_0WINA0-N_7FFD
  222.                 ADD HL,BC
  223.                 AND 0X10
  224.                 LD A,(RPAGE_CALL)
  225.                 JR Z,CBPORT04
  226.                 DEC HL
  227.                 DEC HL
  228.                 DEC HL
  229.                 DEC HL
  230. CBPORT04        LD (HL),A
  231.                 RET
  232.  
  233. PRTT_HL_        LD A,H
  234.                 CALL PRTT_A
  235.                 LD A,L
  236. PRTT_A          PUSH AF
  237.                 RRCA
  238.                 RRCA
  239.                 RRCA
  240.                 RRCA
  241.                 CALL PRTT_A_1
  242.                 POP AF
  243. PRTT_A_1        AND 0X0F
  244.                 CP 0X0A
  245.                 CCF
  246.                 ADC A,"0"
  247.                 DAA
  248.                 AND 0X7F
  249.                 JP PRTT_A_
  250.  
  251. PRT_PORTREGS    LD A,0X0F
  252.                 LD (TXT_COLOR),A
  253.                 LD DE,Y_OFFSET+1+(X_OFFSET+3)*0X100
  254.                 LD HL,(NSAVE_SP)
  255.                 CALL PRTT_HL_                   ;SP
  256.                 LD A,5
  257.                 ADD A,D
  258.                 LD D,A
  259.                 LD HL,(NADRRET_L)
  260.                 CALL PRTT_HL_                   ;PC
  261.                 LD DE,Y_OFFSET+2+(X_OFFSET+3)*0X100
  262.                 LD A,(NREG_I)
  263.                 LD H,A
  264.                 LD A,(NREG_R)
  265.                 LD L,A
  266.                 CALL PRTT_HL_                   ;IR
  267.                 LD DE,Y_OFFSET+3+(X_OFFSET+3)*0X100
  268.                 LD HL,(NREG_F)
  269.                 CALL PRTT_HL_                   ;AF
  270.                 LD A,5
  271.                 ADD A,D
  272.                 LD D,A
  273.                 LD HL,(NREG_FF)
  274.                 CALL PRTT_HL_                   ;AF'
  275.                 LD DE,Y_OFFSET+4+(X_OFFSET+3)*0X100
  276.                 LD HL,(NREG_C)
  277.                 CALL PRTT_HL_                   ;BC
  278.                 LD A,5
  279.                 ADD A,D
  280.                 LD D,A
  281.                 LD HL,(NREG_CC)
  282.                 CALL PRTT_HL_                   ;BC'
  283.                 LD DE,Y_OFFSET+5+(X_OFFSET+3)*0X100
  284.                 LD HL,(NREG_E)
  285.                 CALL PRTT_HL_                   ;DE
  286.                 LD A,5
  287.                 ADD A,D
  288.                 LD D,A
  289.                 LD HL,(NREG_EE)
  290.                 CALL PRTT_HL_                   ;DE'
  291.                 LD DE,Y_OFFSET+6+(X_OFFSET+3)*0X100
  292.                 LD HL,(NREG_L)
  293.                 CALL PRTT_HL_                   ;HL
  294.                 LD A,5
  295.                 ADD A,D
  296.                 LD D,A
  297.                 LD HL,(NREG_LL)
  298.                 CALL PRTT_HL_                   ;HL'
  299.                 LD DE,Y_OFFSET+7+(X_OFFSET+3)*0X100
  300.                 LD HL,(NREG_IXL)
  301.                 CALL PRTT_HL_                   ;IX
  302.                 LD A,5
  303.                 ADD A,D
  304.                 LD D,A
  305.                 LD HL,(NREG_IYL)
  306.                 CALL PRTT_HL_                   ;IY
  307.                 LD DE,Y_OFFSET+0X0A+(X_OFFSET+6)*0X100
  308.                 LD A,(0X8000+R_0WINA3)
  309.                 CALL PRTT_A                     ;CPU3 MAP0
  310.                 INC D
  311.                 LD A,(0X8000+R_1WINA3)
  312.                 CALL PRTT_A                     ;CPU3 MAP1
  313.                 LD DE,Y_OFFSET+0X0B+(X_OFFSET+6)*0X100
  314.                 LD A,(0X8000+R_0WINA2)
  315.                 CALL PRTT_A                     ;CPU2 MAP0
  316.                 INC D
  317.                 LD A,(0X8000+R_1WINA2)
  318.                 CALL PRTT_A                     ;CPU2 MAP1
  319.                 LD DE,Y_OFFSET+0X0C+(X_OFFSET+6)*0X100
  320.                 LD A,(0X8000+R_0WINA1)
  321.                 CALL PRTT_A                     ;CPU1 MAP0
  322.                 INC D
  323.                 LD A,(0X8000+R_1WINA1)
  324.                 CALL PRTT_A                     ;CPU1 MAP1
  325.                 LD DE,Y_OFFSET+0X0D+(X_OFFSET+6)*0X100
  326.                 LD A,(0X8000+R_0WINA0)
  327.                 CALL PRTT_A                     ;CPU0 MAP0
  328.                 INC D
  329.                 LD A,(0X8000+R_1WINA0)
  330.                 CALL PRTT_A                     ;CPU0 MAP1
  331.                 LD DE,Y_OFFSET+0X0F+(X_OFFSET+5)*0X100
  332.                 LD A,(0X8000+R_7FFD)
  333.                 CALL PRTT_A                     ;PORT 7FFD
  334.                 LD DE,Y_OFFSET+0X10+(X_OFFSET+5)*0X100
  335.                 LD A,(0X8000+R_EFF7)
  336.                 CALL PRTT_A                     ;PORT EFF7
  337.                 LD DE,Y_OFFSET+0X11+(X_OFFSET+0)*0X100
  338.                 LD A,(0X8000+R_77)
  339.                 AND %11100000
  340.                 RRCA
  341.                 LD B,A
  342.                 RRCA
  343.                 RRCA
  344.                 RRCA
  345.                 RRCA
  346.                 OR B
  347.                 OR 0XBC
  348.                 CALL PRTT_A                     ;PORT XX77
  349.                 LD A,3
  350.                 ADD A,D
  351.                 LD D,A
  352.                 LD A,(0X8000+R_77)
  353.                 AND 0X0F
  354.                 CALL PRTT_A                     ;BYTE IN PORT XX77
  355.                 LD DE,Y_OFFSET+0X12+(X_OFFSET+5)*0X100
  356.                 LD A,(0X8000+R_BF)
  357.                 CALL PRTT_A                     ;PORT BF
  358.                 LD DE,Y_OFFSET+0X14+(X_OFFSET+11)*0X100
  359.                 LD A,(0X8000+R_77)
  360.                 AND 0X10
  361.                 RRCA
  362.                 RRCA
  363.                 RRCA
  364.                 RRCA
  365.                 ADD A,"0"
  366.                 JP PRTT_A_                      ;DOS ENABLE
  367.  
  368. X_OFFSET        EQU 63
  369. Y_OFFSET        EQU 2
  370. TEXT_PORTREGS   DB 0X17,0X0F
  371.                 DB 0X16,Y_OFFSET+0X01,X_OFFSET+0,"SP=      PC="
  372.                 DB 0X16,Y_OFFSET+0X02,X_OFFSET+0,"IR="
  373.                 DB 0X16,Y_OFFSET+0X03,X_OFFSET+0,"AF=     AF'="
  374.                 DB 0X16,Y_OFFSET+0X04,X_OFFSET+0,"BC=     BC'="
  375.                 DB 0X16,Y_OFFSET+0X05,X_OFFSET+0,"DE=     DE'="
  376.                 DB 0X16,Y_OFFSET+0X06,X_OFFSET+0,"HL=     HL'="
  377.                 DB 0X16,Y_OFFSET+0X07,X_OFFSET+0,"IX=      IY="
  378.                 DB 0X16,Y_OFFSET+0X09,X_OFFSET+0,"  MAP  0 1"
  379.                 DB 0X16,Y_OFFSET+0X0A,X_OFFSET+0,"CPU3="
  380.                 DB 0X16,Y_OFFSET+0X0B,X_OFFSET+0,"CPU2="
  381.                 DB 0X16,Y_OFFSET+0X0C,X_OFFSET+0,"CPU1="
  382.                 DB 0X16,Y_OFFSET+0X0D,X_OFFSET+0,"CPU0="
  383.                 DB 0X16,Y_OFFSET+0X0F,X_OFFSET+0,"7FFD="
  384.                 DB 0X16,Y_OFFSET+0X10,X_OFFSET+0,"EFF7="
  385.                 DB 0X16,Y_OFFSET+0X11,X_OFFSET+2,"77="
  386.                 DB 0X16,Y_OFFSET+0X12,X_OFFSET+2,"BF="
  387.                 DB 0X16,Y_OFFSET+0X14,X_OFFSET+0,"DOS ENABLE= "
  388.                 DB 0X16,Y_OFFSET+0X18,0X43,0X17,0X39," E.EXIT "
  389.                 DB 0X16,1,0X10,0X17,0X32," EVO Magic Service prealfa ",0
  390. TXT_VERIFY_FONT DB 0X16,0X18,0,0X17,0X22,"  VERIFY READING FONT ",0
  391. TXT_VERIFY_OK   DB " OK    ",0
  392. TXT_VERIFY_ERR  DB "ERROR  ",0
  393.  
  394.                 include txtmode_proc.a80
  395.                 include fontread.a80
  396.                 include tape.a80
  397.                 include input_keys.a80
  398.                 include mouse.a80
  399.                 include selector.a80
  400.                 include koshak.a80
  401.                 include call_cmos.a80
  402.                 include window.a80
  403.                 include rst8_data.a80
  404. ;               include fat/ports_ngs.a80
  405. ;               include fat/sdcomand.a80
  406.                 include fat/dev_drv.a80
  407.                 include fat/ngs_sd_drv.a80
  408.                 include fat/z_sd_drv.a80
  409.                 include fat/nemo_drv.a80
  410.                 IF SMUC=1
  411.                 include fat/smuc_drv.a80
  412.                 ENDIF
  413.  
  414. COM_FAT         include fat/read_fat.a80
  415.  
  416.                 include ay_printer.a80
  417.  
  418.                 DUPL 0X37F8-$,0XFF
  419. CHARS           binclude altstd.bin
  420.  
  421.                 DB "RST_08"
  422.                 DW DATA
  423.                 DEPHASE
  424.