;LAST UPDATE: 18.01.2012 savelij
include ../../macros.a80
include ../../global_vars.a80
include ../../ports_ngs.a80
include ../../sdcomand.a80
include rst8_vars.a80
DD EQU 13 ;ДАТА
MM EQU 12 ;МЕСЯЦ
YY EQU 11 ;ГОД
DATA EQU DD+(MM<<5)+(YY<<9)+0X8000 ;УЖЕ УПАКОВАНО
TXTMODE_DEBUG EQU 0
PHASE 0
;ОБРАБОТКА НАЖАТИЯ MAGIC
JP CONT_MAGIC ;0000
DUPL 0X0008-$,0XFF
;ПРОДОЛЖЕНИЕ ОБРАБОТКИ RST8
JP NEXT_RST8 ;0008
DUPL 0X0010-$,0XFF
;ЧТЕНИЕ БАЙТА ИЗ ОСНОВНОЙ ПАМЯТИ
JP RD_BYTE_48K ;0010
DUPL ADR_SEL_ROM-$,0XFF
JUMP2PAGE OUT (C),A
NOP
RET
DUPL 0X0018-$,0XFF
JP EXIT_RST8 ;0018
DUPL 0X0020-$,0XFF
JP $ ;0020
DUPL 0X0028-$,0XFF
JP $ ;0028
DUPL 0X0030-$,0XFF
JP $ ;0030
DUPL 0X0038-$,0XFF
;ОПРОС КЛАВИАТУРЫ
EI
RET;JP KEYBOARDS ;0038
;ЧТЕНИЕ БАЙТА ИЗ ОБЛАСТИ ПАМЯТИ 0X4000-0XFFFF
RD_BYTE_48K PUSH HL
PUSH DE
PUSH BC
PUSH AF
LD BC,WIN_P2
LD DE,0XFD
LD HL,(RADRRET_L)
OUT (C),E
LD A,(HL)
INC HL
OUT (C),D
LD (RADRRET_L),HL
LD (NEXTBYTERST8),A
POP AF
POP BC
POP DE
POP HL
RET
;ВЫХОД ИЗ RST8
EXIT_RST8 LD BC,ADR_EXITRST8 ;АДРЕС ВОЗВРАТА В ПОСЛЕДНЕЙ СТРАНИЦЕ RAM
PUSH BC
LD BC,WIN_P0
XOR A
JP JUMP2PAGE
DUPL 0X0066-$,0XFF
;ВЫХОД ИЗ MAGIC
CONT_MAGIC NOP
LD HL,CPU2+N_0WINA0
LD DE,(CPU2+N_DOS7FFD)
LD BC,CPU2+N_7FFD
CALL CONVERT_BPORT
LD A,(N_7FFD+CPU2)
AND %11110111
LD BC,0X7FFD
OUT (C),A
LD BC,0XFF77
LD A,(N_77)
AND 7
OR 0XA0
OUT (C),A
CALL STORE_TXTMODE
IF TXTMODE_DEBUG=0
CALL SCAN_FONT
ENDIF
CALL MAGIC_FONT
CALL CLS_TXTMODE8
LD HL,TEXT_PORTREGS
CALL PRTT_MSG
CALL PRT_PORTREGS
; CALL COMPARE_FONT
CONTMAGIC1 LD A,0XFB
IN A,(0XFE)
AND 4
JR NZ,CONTMAGIC1
CONTMAGIC2 XOR A
IN A,(0XFE)
CPL
AND 0X1F
JR NZ,CONTMAGIC2
CALL RESTORE_TXTMODE
CALL RESTORE_FONT
LD BC,ADR_EXITMAGIC
PUSH BC
LD BC,WIN_P0
XOR A
JP JUMP2PAGE
CODE_TABL DW AY_PRN_INIT ;40
DW AY_PRN_A_ ;41
DW AY_PRN_TOKEN ;42
DW AY_PRN_SCR ;43
DW TAPE_INIT ;44
DW TAPE_EMUL ;45
DW WINW ;46
DW PRINT_MESSAGE ;47
DW PRINT_A ;48
DW SCRUP ;49
DW SCRDN ;4A
DW COM_DEV ;4B
DW RUN_FILECODE ;4C
DW WRITE_FONT ;4D
DW READ_FONT ;4E
ECODE_TABL
DUPL 0X00FF-$,0XFF
DW 0X0038
;===============
;ПРОДОЛЖЕНИЕ ОБРАБОТКИ RST8
NEXT_RST8 LD HL,EXIT_RST8
PUSH HL
LD (INTERNAL_SP),SP
LD HL,CPU2+R_0WINA0
LD DE,(CPU2+R_DOS7FFD)
LD BC,CPU2+R_7FFD
CALL CONVERT_BPORT
LD A,(RCODE_CALL)
AND 0X3F
LD L,A
LD H,0
ADD HL,HL
LD DE,CODE_TABL
ADD HL,DE
LD E,(HL)
INC HL
LD D,(HL)
EX DE,HL
JP (HL)
READ_FONT
RET
WRITE_FONT IN A,(PEVO_CONF)
PUSH AF
SET 2,A
OUT (PEVO_CONF),A
LD HL,(RREG_L)
LD DE,0
LD BC,0X0800
LDIR
POP AF
OUT (PEVO_CONF),A
RET
RUN_FILECODE LD BC,0X0100 ;АДРЕС ПЕРЕХОДА
PUSH BC
LD BC,WIN_A0
LD A,4 ;ВЫЗОВ КОДА ИЗ 4 СТРАНИЦЫ
JP JUMP2PAGE
CONTINUE_PROG XOR A
IN A,(0XFE)
CPL
AND 0X1F
JR NZ,CONTINUE_PROG
LD SP,(INTERNAL_SP)
INT_ONLY_RET RET
CONVERT_BPORT LD A,8
CBPORT03 EX AF,AF'
LD A,(HL)
AND 0X40
JR NC,CBPORT01
SRL D
SRL E
JR CBPORT02
CBPORT01 LD A,(HL)
RLCA
RLCA
SRL D
RRA
SRL E
RRA
LD (HL),A
CBPORT02 DEC HL
EX AF,AF'
DEC A
JR NZ,CBPORT03
LD A,(BC)
LD HL,N_0WINA0-N_7FFD
ADD HL,BC
AND 0X10
LD A,(RPAGE_CALL)
JR Z,CBPORT04
DEC HL
DEC HL
DEC HL
DEC HL
CBPORT04 LD (HL),A
RET
PRTT_HL_ LD A,H
CALL PRTT_A
LD A,L
PRTT_A PUSH AF
RRCA
RRCA
RRCA
RRCA
CALL PRTT_A_1
POP AF
PRTT_A_1 AND 0X0F
CP 0X0A
CCF
ADC A,"0"
DAA
AND 0X7F
JP PRTT_A_
PRT_PORTREGS LD A,0X0F
LD (TXT_COLOR),A
LD DE,Y_OFFSET+1+(X_OFFSET+3)*0X100
LD HL,(NSAVE_SP)
CALL PRTT_HL_ ;SP
LD A,5
ADD A,D
LD D,A
LD HL,(NADRRET_L)
CALL PRTT_HL_ ;PC
LD DE,Y_OFFSET+2+(X_OFFSET+3)*0X100
LD A,(NREG_I)
LD H,A
LD A,(NREG_R)
LD L,A
CALL PRTT_HL_ ;IR
LD DE,Y_OFFSET+3+(X_OFFSET+3)*0X100
LD HL,(NREG_F)
CALL PRTT_HL_ ;AF
LD A,5
ADD A,D
LD D,A
LD HL,(NREG_FF)
CALL PRTT_HL_ ;AF'
LD DE,Y_OFFSET+4+(X_OFFSET+3)*0X100
LD HL,(NREG_C)
CALL PRTT_HL_ ;BC
LD A,5
ADD A,D
LD D,A
LD HL,(NREG_CC)
CALL PRTT_HL_ ;BC'
LD DE,Y_OFFSET+5+(X_OFFSET+3)*0X100
LD HL,(NREG_E)
CALL PRTT_HL_ ;DE
LD A,5
ADD A,D
LD D,A
LD HL,(NREG_EE)
CALL PRTT_HL_ ;DE'
LD DE,Y_OFFSET+6+(X_OFFSET+3)*0X100
LD HL,(NREG_L)
CALL PRTT_HL_ ;HL
LD A,5
ADD A,D
LD D,A
LD HL,(NREG_LL)
CALL PRTT_HL_ ;HL'
LD DE,Y_OFFSET+7+(X_OFFSET+3)*0X100
LD HL,(NREG_IXL)
CALL PRTT_HL_ ;IX
LD A,5
ADD A,D
LD D,A
LD HL,(NREG_IYL)
CALL PRTT_HL_ ;IY
LD DE,Y_OFFSET+0X0A+(X_OFFSET+6)*0X100
LD A,(0X8000+R_0WINA3)
CALL PRTT_A ;CPU3 MAP0
INC D
LD A,(0X8000+R_1WINA3)
CALL PRTT_A ;CPU3 MAP1
LD DE,Y_OFFSET+0X0B+(X_OFFSET+6)*0X100
LD A,(0X8000+R_0WINA2)
CALL PRTT_A ;CPU2 MAP0
INC D
LD A,(0X8000+R_1WINA2)
CALL PRTT_A ;CPU2 MAP1
LD DE,Y_OFFSET+0X0C+(X_OFFSET+6)*0X100
LD A,(0X8000+R_0WINA1)
CALL PRTT_A ;CPU1 MAP0
INC D
LD A,(0X8000+R_1WINA1)
CALL PRTT_A ;CPU1 MAP1
LD DE,Y_OFFSET+0X0D+(X_OFFSET+6)*0X100
LD A,(0X8000+R_0WINA0)
CALL PRTT_A ;CPU0 MAP0
INC D
LD A,(0X8000+R_1WINA0)
CALL PRTT_A ;CPU0 MAP1
LD DE,Y_OFFSET+0X0F+(X_OFFSET+5)*0X100
LD A,(0X8000+R_7FFD)
CALL PRTT_A ;PORT 7FFD
LD DE,Y_OFFSET+0X10+(X_OFFSET+5)*0X100
LD A,(0X8000+R_EFF7)
CALL PRTT_A ;PORT EFF7
LD DE,Y_OFFSET+0X11+(X_OFFSET+0)*0X100
LD A,(0X8000+R_77)
AND %11100000
RRCA
LD B,A
RRCA
RRCA
RRCA
RRCA
OR B
OR 0XBC
CALL PRTT_A ;PORT XX77
LD A,3
ADD A,D
LD D,A
LD A,(0X8000+R_77)
AND 0X0F
CALL PRTT_A ;BYTE IN PORT XX77
LD DE,Y_OFFSET+0X12+(X_OFFSET+5)*0X100
LD A,(0X8000+R_BF)
CALL PRTT_A ;PORT BF
LD DE,Y_OFFSET+0X14+(X_OFFSET+11)*0X100
LD A,(0X8000+R_77)
AND 0X10
RRCA
RRCA
RRCA
RRCA
ADD A,"0"
JP PRTT_A_ ;DOS ENABLE
X_OFFSET EQU 63
Y_OFFSET EQU 2
TEXT_PORTREGS DB 0X17,0X0F
DB 0X16,Y_OFFSET+0X01,X_OFFSET+0,"SP= PC="
DB 0X16,Y_OFFSET+0X02,X_OFFSET+0,"IR="
DB 0X16,Y_OFFSET+0X03,X_OFFSET+0,"AF= AF'="
DB 0X16,Y_OFFSET+0X04,X_OFFSET+0,"BC= BC'="
DB 0X16,Y_OFFSET+0X05,X_OFFSET+0,"DE= DE'="
DB 0X16,Y_OFFSET+0X06,X_OFFSET+0,"HL= HL'="
DB 0X16,Y_OFFSET+0X07,X_OFFSET+0,"IX= IY="
DB 0X16,Y_OFFSET+0X09,X_OFFSET+0," MAP 0 1"
DB 0X16,Y_OFFSET+0X0A,X_OFFSET+0,"CPU3="
DB 0X16,Y_OFFSET+0X0B,X_OFFSET+0,"CPU2="
DB 0X16,Y_OFFSET+0X0C,X_OFFSET+0,"CPU1="
DB 0X16,Y_OFFSET+0X0D,X_OFFSET+0,"CPU0="
DB 0X16,Y_OFFSET+0X0F,X_OFFSET+0,"7FFD="
DB 0X16,Y_OFFSET+0X10,X_OFFSET+0,"EFF7="
DB 0X16,Y_OFFSET+0X11,X_OFFSET+2,"77="
DB 0X16,Y_OFFSET+0X12,X_OFFSET+2,"BF="
DB 0X16,Y_OFFSET+0X14,X_OFFSET+0,"DOS ENABLE= "
DB 0X16,Y_OFFSET+0X18,0X43,0X17,0X39," E.EXIT "
DB 0X16,1,0X10,0X17,0X32," EVO Magic Service prealfa ",0
TXT_VERIFY_FONT DB 0X16,0X18,0,0X17,0X22," VERIFY READING FONT ",0
TXT_VERIFY_OK DB " OK ",0
TXT_VERIFY_ERR DB "ERROR ",0
include txtmode_proc.a80
include fontread.a80
include tape.a80
include input_keys.a80
include mouse.a80
include selector.a80
include koshak.a80
include call_cmos.a80
include window.a80
include rst8_data.a80
; include fat/ports_ngs.a80
; include fat/sdcomand.a80
include fat/dev_drv.a80
include fat/ngs_sd_drv.a80
include fat/z_sd_drv.a80
include fat/nemo_drv.a80
IF SMUC=1
include fat/smuc_drv.a80
ENDIF
COM_FAT include fat/read_fat.a80
include ay_printer.a80
DUPL 0X37F8-$,0XFF
CHARS binclude altstd.bin
DB "RST_08"
DW DATA
DEPHASE