Rev 1035 |
Blame |
Compare with Previous |
Last modification |
View Log
| Download
| RSS feed
| ?url?
; LAST UPDATE: 14.10.2023 savelij
; ¯®á«¥¤®¢ ⥫ì®áâì ¤«ï RST 8
; áâ àë© á⥪ HL AF BC RF ADR_RET DE ->
; -> ®¢ë© á⥪ HL(®¬¥à ¯ £¨ ¨ ¯®àâ BF) DE(RAMNROM DOS7FFD) BC' DE' HL' IX IY AF' ->
; -> ç⥨¥ ª®ä¨£
REG_R_CORRECT EQU 0x0D
CODE_NMIRST
PHASE 0
JP CALL2PAGE ; ¢ë§®¢ ª®¤ ¢ ¤à㣮© áâà ¨æ¥ ROM
JP CALL2RAMPAGE ; ¢ë§®¢ ª®¤ ¢ ¤à㣮© áâà ¨æ¥ RAM
DUPL ADR_SEL_ROM-$,0
OUT (C),A ; ¯¥à¥ª«î票¥ áâà ¨æ ¤«ï ¯¥à¥å®¤®¢
NOP
FOR_RET NOP
JP RAMSEL1
OUT_NMI OUT (0xBE),A
RETN
DUPL 0x0038-$,0xFF
IM_EI_RET EI
RET
VIRT_BITS DB 0 ; ¡¨âë 7-4 ¯à¨¬®â¨à®¢ ë¥ ¤¨áª¨,
; ¡¨âë 3-2 ®¬¥à ॠ«ì®£® ¤¨áª
; ¡¨âë 1-0 ®¬¥à ¢¨àâ㠫쮣® ¤¨áª
DUPL 0x0066-$,0xFF
NOP
NOP
ADR_MAGIC JP NMI_SERVICE
ADR_NMI_JUMP EQU $-2
PHASE $+CPU6
; áç¨â ï ª®ä¨£ãà æ¨ï ¯®à⮢ ¤«ï RST 8
R_BF DB 0xFF
R_77 DB 0xFF
R_EFF7 DB 0xFF
R_7FFD DB 0xFF
R_DOS7FFD DB 0xFF
R_RAMNROM DB 0xFF
R_1WINA3 DB 0xFF
R_1WINA2 DB 0xFF
R_1WINA1 DB 0xFF
R_1WINA0 DB 0xFF
R_0WINA3 DB 0xFF
R_0WINA2 DB 0xFF
R_0WINA1 DB 0xFF
R_0WINA0 DB 0xFF
; áç¨â ï ª®ä¨£ãà æ¨ï ¯®à⮢ ¤«ï NMI
N_BF DB 0xFF
N_77 DB 0xFF
N_EFF7 DB 0xFF
N_7FFD DB 0xFF
N_DOS7FFD DB 0xFF
N_RAMNROM DB 0xFF
N_1WINA3 DB 0xFF
N_1WINA2 DB 0xFF
N_1WINA1 DB 0xFF
N_1WINA0 DB 0xFF
N_0WINA3 DB 0xFF
N_0WINA2 DB 0xFF
N_0WINA1 DB 0xFF
N_0WINA0 DB 0xFF
N_TEK_PALS DUPL 0x10,0xFF
; á®åà ¥ë¥ à¥£¨áâàë ¯à¨ ¢ë§®¢¥ RST 8
RREG_FI DB 0xFF
RREG_I DB 0xFF ; IF
RREG_FF DB 0xFF
RREG_AA DB 0xFF ; AF'
RREG_IYL DB 0xFF
RREG_IYH DB 0xFF ; IY
RREG_IXL DB 0xFF
RREG_IXH DB 0xFF ; IX
RREG_LL DB 0xFF
RREG_HH DB 0xFF ; HL'
RREG_EE DB 0xFF
RREG_DD DB 0xFF ; DE'
RREG_CC DB 0xFF
RREG_BB DB 0xFF ; BC'
RDOS7FFD DB 0xFF ; ¡¨âë DOS7FFD ¯¥à¥¤ ¢ë§®¢®¬
RRAMNROM DB 0xFF ; ¡¨âë RAMNROM ¯¥à¥¤ ¢ë§®¢®¬
RPBF_CALL DB 0xFF ; ᮤ¥à¦¨¬®¥ ¯®àâ BF ¯¥à¥¤ ¢ë§®¢®¬
RPAGE_CALL DB 0xFF ; ®¬¥à áâà ¨æë ®âªã¤ ¯à¨è«¨
RREG_E DB 0xFF
RREG_D DB 0xFF ; DE
RADRRET_L DB 0xFF
RADRRET_H DB 0xFF ; ADR_RET
REI_DI DB 0xFF
R_R DB 0xFF ; RF
RREG_C DB 0xFF
RREG_B DB 0xFF ; BC
RREG_F DB 0xFF
RREG_A DB 0xFF ; AF
RREG_L DB 0xFF
RREG_H DB 0xFF ; HL
RST8_SAVE_SP DW 0xFF
; á®åà ¥ë¥ à¥£¨áâàë ¯à¨ ¢ë§®¢¥ NMI
; ADR_RET AF' IY IX BC' DE' HL' BC DE RF IF AF HL
NADRRET_L DB 0xFF ; ADR RET
NADRRET_H DB 0xFF
NREG_FF DB 0xFF ; AF'
NREG_AA DB 0xFF
NREG_IYL DB 0xFF ; IY
NREG_IYH DB 0xFF
NREG_IXL DB 0xFF ; IX
NREG_IXH DB 0xFF
NREG_CC DB 0xFF ; BC'
NREG_BB DB 0xFF
NREG_EE DB 0xFF ; DE'
NREG_DD DB 0xFF
NREG_LL DB 0xFF ; HL'
NREG_HH DB 0xFF
NREG_C DB 0xFF ; BC
NREG_B DB 0xFF
NREG_E DB 0xFF ; DE
NREG_D DB 0xFF
NREG_EI_DI_2 DB 0xFF ; RF
NREG_R DB 0xFF
NREG_EI_DI_1 DB 0xFF ; IF
NREG_I DB 0xFF
NREG_F DB 0xFF ; AF
NREG_A DB 0xFF
NREG_L DB 0xFF ; HL
NREG_H DB 0xFF
NMI_SAVE_SP DW 0xFF ; ¤à¥á á®åà ¥¨ï á⥪ ¯à®£à ¬¬ë ¯à¥à¢ ®© ¯® NMI
NUM_IM DB 0xFF ; ०¨¬ ¯à¥àë¢ ¨©: 0-IM 1, 1-IM 2
INT_MODE DB 0xFF ; ¯à¥àë¢ ¨ï 0-§ ¯à¥è¥ë, 1-à §à¥è¥ë
INTERNAL_SP DW 0xFF ; ¤à¥á åà ¥¨ï á⥪ ¯à¨ à ¡®â¥ á¥à¢¨á®¢
B0_CPU0 DB 0xFF ; ¡ ©â ¤«ï ¯®àâ 0 ®ª 0 ¬ ¯¥à
P0_CPU0 DB 0xFF ; áâ à訩 ¡ ©â ¤à¥á ¯®àâ ¯®àâ ¤«ï 0 ®ª 0 ¬ ¯¥à
B0_CPU1 DB 0xFF ; ¡ ©â ¤«ï ¯®àâ 1 ®ª 0 ¬ ¯¥à
P0_CPU1 DB 0xFF ; áâ à訩 ¡ ©â ¤à¥á ¯®àâ ¯®àâ ¤«ï 1 ®ª 0 ¬ ¯¥à
B0_CPU2 DB 0xFF ; ¡ ©â ¤«ï ¯®àâ 2 ®ª 0 ¬ ¯¥à
P0_CPU2 DB 0xFF ; áâ à訩 ¡ ©â ¤à¥á ¯®àâ ¯®àâ ¤«ï 2 ®ª 0 ¬ ¯¥à
B0_CPU3 DB 0xFF ; ¡ ©â ¤«ï ¯®àâ 3 ®ª 0 ¬ ¯¥à
P0_CPU3 DB 0xFF ; áâ à訩 ¡ ©â ¤à¥á ¯®àâ ¯®àâ ¤«ï 3 ®ª 0 ¬ ¯¥à
B1_CPU0 DB 0xFF ; ¡ ©â ¤«ï ¯®àâ 0 ®ª 0 ¬ ¯¥à
P1_CPU0 DB 0xFF ; áâ à訩 ¡ ©â ¤à¥á ¯®àâ ¯®àâ ¤«ï 0 ®ª 0 ¬ ¯¥à
B1_CPU1 DB 0xFF ; ¡ ©â ¤«ï ¯®àâ 1 ®ª 0 ¬ ¯¥à
P1_CPU1 DB 0xFF ; áâ à訩 ¡ ©â ¤à¥á ¯®àâ ¯®àâ ¤«ï 1 ®ª 0 ¬ ¯¥à
B1_CPU2 DB 0xFF ; ¡ ©â ¤«ï ¯®àâ 2 ®ª 0 ¬ ¯¥à
P1_CPU2 DB 0xFF ; áâ à訩 ¡ ©â ¤à¥á ¯®àâ ¯®àâ ¤«ï 2 ®ª 0 ¬ ¯¥à
B1_CPU3 DB 0xFF ; ¡ ©â ¤«ï ¯®àâ 3 ®ª 0 ¬ ¯¥à
P1_CPU3 DB 0xFF ; áâ à訩 ¡ ©â ¤à¥á ¯®àâ ¯®àâ ¤«ï 3 ®ª 0 ¬ ¯¥à
B_PORT77 DB 0xFF ; ¡ ©â ¤«ï ¢ë¢®¤ ¢ ¯®àâ 77
P_PORT77 DB 0xFF ; áâ à訩 ¡ ©â ¤à¥á ¯®àâ 77
B_PORT_VIRT DB 0xFF ; ⥪ã饥 á®áâ®ï¨¥ ¯®àâ ¢¨àâã«ìëå ¤¨áª®¢®¤®¢
F_INTEXT_DRV DB 0xFF ; ä« £¨ ¯à¨ ¢¥è¨å/¢ãâà¥¨å ¢ë§®¢ å ¤à ©¢¥à®¢
TMP_NUMHDD DB 0xFF
TMP_ADR_0068 DD 0xFFFFFFFF ; á®åà ¥¨¥ ¯®¤ ¯¥à¥å¢ â稪®¬ NMI
NUMSEC_LBA48 DQ 0xFFFFFFFFFFFFFFFF ; ®¬¥à ᥪâ®à ¤«ï ç⥨ï/§ ¯¨á¨
VARS_TXT_DEC DB "281474976710655\0" ; ç¨á«® ¤® 48 ¡¨â
PHASE $ & 0x3FFF
DUPL HIGH ($) * 0x100 + 0xFF - $,0xFF
DW IM_EI_RET
DUPL HIGH ($) * 0x100 + 0x80 - $,0xFF
STACK_RST
DUPL (HIGH ($) + 1) * 0x100 - $,0xFF
STACK_NMI
JP NMI_EXIT_DBG
; ¢å®¤ ¯® RST 8
RAMSEL1
LD (RST8_SAVE_SP-CPU6),SP ; á®åà ¨«¨ áâ àë© á⥪
LD SP,RREG_E-CPU6
PUSH HL ; ®¬¥à áâà ¨æë ®âªã¤ ¯à¨è«¨ ¨ ᮤ¥à¦¨¬®¥ ¯®àâ BF
PUSH DE ; ¡¨âë RAMNROM+DOS7FFD
EXX
PUSH BC ; BC'
PUSH DE ; DE'
PUSH HL ; HL'
EXX
PUSH IX ; IX
PUSH IY ; IY
EX AF,AF'
PUSH AF ; AF'
LD A,I
PUSH AF ; IF
; ¢®ááâ ¢«¨¢ ¥¬ ¯ ¬ïâì ¯®¤ ¯¥à¥å®¤®¬ ®¡à ¡®â稪 NMI
LD HL,ADR_MAGIC
LD DE,TMP_ADR_0068 - CPU2
LDI
LDI
LDI
LD A,0xC9
LD (FOR_RET),A
XOR A
LD I,A
LD HL,(RST8_SAVE_SP-CPU6)
LD DE,RREG_E-CPU6
LD BC,RREG_H-RPAGE_CALL
LDIR
LD HL,R_77-CPU6
LD BC,RD_77
INIR
INI
LD BC,FDD_EMU_PORT
IN A,(C)
LD (B_PORT_VIRT & 0x3FFF),A
XOR A
OUT (C),A
LD HL,(RDOS7FFD-CPU6)
LD (R_DOS7FFD-CPU6),HL
LD SP,STACK_RST
LD A,(R_77-CPU6)
AND 7
OR 0xA0 ; ¢ëª«î票¥ âãà¡® 14 ¬£æ
LD BC,0xFF77
OUT (C),A
PEC_OFF M_SHADOW_BF
LD BC,PENT_CONF
LD A,(R_EFF7-CPU6)
AND %11101111
OUT (C),A ; ¢ª«î票¥ âãà¡® 7 ¬£æ
PEC_ON M_SHADOW_BF
LD A,(R_7FFD-CPU6)
AND 0x10
LD HL,R_0WINA0-CPU6
JR Z,RAMSEL3
LD HL,R_1WINA0-CPU6
RAMSEL3 LD A,(RPAGE_CALL-CPU6)
LD (HL),A
ATMPORT WIN_A3,0x40
LD BC,WIN_P6
XOR A
OUT (C),A
LD BC,WIN_A0
LD A,ROM_RST83
LD HL,CPU6
ADD HL,SP
LD SP,HL
LD HL,CONT_RST8 ; ¤à¥á ¯à®¤®«¦¥¨ï ®¡à ¡®âª¨ RST 8
PUSH HL
JP ADR_SEL_ROM
; ¢ë室 ¨§ ®¡à ¡®â稪 RST 8
P4_EXIT_RST8
; á®åà 塞 ¯ ¬ïâì ¯®¤ ¯¥à¥å®¤®¬ ®¡à ¡®â稪 NMI
LD HL,TMP_ADR_0068 - CPU2
LD DE,ADR_MAGIC
LDI
LDI
LDI
XOR A
LD (FOR_RET),A
PEC_OFF M_SHADOW_BF
LD BC,PENT_CONF
LD A,(R_EFF7-CPU6)
OUT (C),A
PEC_ON M_SHADOW_BF
LD C,LOW (WIN_A5)
LD A,(R_7FFD-CPU6)
AND 0x10
LD HL,B0_CPU1-CPU2
JR Z,.L11
LD HL,B1_CPU1-CPU2
.L11 LD A,3
.L12 EX AF,AF'
LD E,(HL) ; ¡ ©â ¤«ï § ¯¨á¨ ¢ ¯®àâ
INC HL
LD D,(HL) ; áâ à訩 ¡ ©â ¤à¥á ¯®àâ
INC HL
LD A,D
OR 7
LD B,A
OUT (C),E
EX AF,AF'
DEC A
JR NZ,.L12
IFDEF DOS_FE
LD BC,FDD_EMU_PORT
LD A,(B_PORT_VIRT & 0x3FFF)
OUT (C),A
ENDIF
LD HL,RST8_SAVE_SP-(RREG_H-RPAGE_CALL)-CPU6
LD DE,(RST8_SAVE_SP-CPU6)
LD BC,RREG_H-RPAGE_CALL
LDIR
LD BC,(B_PORT77-CPU6)
LD A,C
LD C,0x77
OUT (C),A
LD SP,RREG_FI-CPU6
POP AF
LD I,A
POP AF
EX AF,AF'
POP IY
POP IX
POP HL
POP DE
POP BC
EXX
POP DE
POP HL
LD SP,(RST8_SAVE_SP-CPU6) ; ¢®ááâ ®¢¨«¨ á⥪ ¢ë§¢ 襩 ¯à®£à ¬¬ë
LD BC,ADR_RST8END ; ¤à¥á ¢®§¢à â
PUSH BC
LD C,LOW (WIN_A0)
LD A,(R_7FFD-CPU6)
AND 0x10
LD DE,(B0_CPU0-CPU6)
JR Z,.L13
LD DE,(B1_CPU0-CPU6)
.L13 LD A,D
OR 7
LD B,A
LD A,E ; áâà ¨æ ROM ªã¤ ¢®§¢à é âìáï
JP ADR_SEL_ROM
; ¢å®¤ ¯® NMI
NMI_SERVICE LD (NMI_SAVE_SP-CPU6),SP ; á®åà ¥¨¥ á⥪
LD SP,NMI_SAVE_SP-CPU6 ; ®¢ë© á⥪
PUSH HL ; á®åà ¨«¨ HL
PUSH AF ; á®åà ¨«¨ AF
LD A,I
PUSH AF ; á®åà ¨«¨ I, ä« £¨ ¨ ०¨¬ ¯à¥àë¢ ¨©
LD A,R
PUSH AF ; á®åà ¨«¨ R
PUSH DE ; á®åà ¨«¨ DE
PUSH BC ; á®åà ¨«¨ BC
EXX
PUSH HL ; á®åà ¨«¨ HL
PUSH DE ; á®åà ¨«¨ DE
PUSH BC ; á®åà ¨«¨ BC
PUSH IX ; á®åà ¨«¨ IX
PUSH IY ; á®åà ¨«¨ IY
EX AF,AF'
PUSH AF ; á®åà ¨«¨ «ìâ AF
LD A,0x80-REG_R_CORRECT
LD HL,NREG_R-CPU6
SLA (HL)
RLA
ADD A,(HL)
RRCA
LD (HL),A ; ª®à४æ¨ï ॣ¨áâà R
; á®åà 塞 ¯®¬ïâì ¯®¤ ¯¥à¥å®¤®¬ ®¡à ¡®â稪 NMI
LD HL,ADR_MAGIC
LD DE,TMP_ADR_0068 - CPU2
LDI
LDI
LDI
LD HL,(NMI_SAVE_SP-CPU6)
LD E,(HL)
INC HL
LD D,(HL)
LD HL,(NREG_F-CPU6)
AND A
SBC HL,DE
JR NZ,.L005
LD HL,(NMI_SAVE_SP-CPU6)
INC HL
INC HL
LD (NMI_SAVE_SP-CPU6),HL
LD E,(HL)
INC HL
LD D,(HL)
.L005 PUSH DE
LD SP,STACK_NMI
LD HL,OUT_NMI
LD (ADR_NMI_JUMP),HL
LD A,0xC9
LD (FOR_RET),A ; RET ¤«ï ¯¥à¥ª«î票ï áâà ¨æ ROM/RAM
LD HL,N_BF-CPU6 ; ¤à¥á á®åà ¥¨ï ¯à®ç¨â ëå ॣ¨áâ஢ ª®ä¨£ãà 樨
IN A,(PEVO_CONF)
LD (HL),A
INC HL
LD BC,RD_77
INIR
INI
LD BC,FDD_EMU_PORT
IN A,(C)
LD (B_PORT_VIRT & 0x3FFF),A
XOR A
OUT (C),A ; ®¡ã«ï¥¬ ¡¨âë í¬ã«ï樨
LD B,1 ; ¯à¥àë¢ ¨ï à §à¥è¥ë
LD A,R
JP PE,.L001
LD A,R
JP PE,.L001
DEC B ; ¯à¥àë¢ ¨ï § ¯à¥é¥ë
.L001 XOR A
LD I,A ; ®¡à ¡®â稪 ¯à¥àë¢ ¨ï ¯¥à¥áâ ¢¨«¨¨ ¤«ï ¤à¥á 00FF
CALL GET_NUM_IM
PEC_OFF M_SHADOW_BF
LD A,(N_EFF7-CPU2)
AND %11101111
LD BC,PENT_CONF
OUT (C),A
PEC_ON M_SHADOW_BF
LD A,(N_77-CPU2)
AND %11110111
LD BC,0xFF77
OUT (C),A ; ãáâ ®¢ª 7.0Mhz ¤«ï NMI á¥à¢¨á
PUSH DE
LD BC,WIN_P6
XOR A
OUT (C),A ; ¢ª«î稫¨ ¯®á«¥¤îî áâà ¨æã ®§ã
LD B,HIGH (WIN_A3)
LD A,0x40
OUT (C),A ; á﫨 § ¢¨á¨¬®áâì 3 ®ª ®â ¯®àâ 7FFD
LD DE,CPU6
ADD HL,DE
LD (ADR_PALITRA),HL
LD HL,CPU6
ADD HL,SP
LD SP,HL
LD B,HIGH (WIN_A0)
LD A,ROM_RST83
OUT (C),A
POP HL
LD (NUM_IM),HL
PEREHVAT DUPL 3,0
LD A,(DEBUG_ONOFF)
AND A
JR NZ,IN_DEBUG
LD HL,CONTINUE_MAGIC
PUSH HL
JP OUT_NMI
IN_DEBUG XOR A
IN A,(0xFE)
CPL
AND 0x1F
JR NZ,IN_DEBUG
LD HL,DEBUGGER
PUSH HL
JP OUT_NMI
; ¢ë室 ¨§ NMI
EXITNMISERVICE LD HL,ADR_MAGIC
LD (HL),0xC9 ; § £«ãèª MAGIC
IN A,(PEVO_CONF)
OR M_NMI_BF
OUT (PEVO_CONF),A
AND M_NMI_BF!0xFF
OUT (PEVO_CONF),A
HALT ; ¦¤¥¬ áà ¡ âë¢ ¨ï MAGIC
; ¢®ááâ ¢«¨¢ ¥¬ ¯ ¬ïâì ¯®¤ ¯¥à¥å®¤®¬ ®¡à ¡®â稪 NMI
LD HL,TMP_ADR_0068 - CPU2
LD DE,ADR_MAGIC
LDI
LDI
LDI
LD C,LOW (WIN_A0)
LD A,(N_7FFD-CPU6)
AND 0x10
LD HL,B0_CPU0-CPU6
JR Z,.L11
LD HL,B1_CPU0-CPU6
.L11 LD A,4
.L12 EX AF,AF'
LD E,(HL) ; ¡ ©â ¤«ï § ¯¨á¨ ¢ ¯®àâ
INC HL
LD D,(HL) ; áâ à訩 ¡ ©â ¤à¥á ¯®àâ
INC HL
LD A,D
OR 0x3F
LD B,A
BIT 3,D
JR NZ,.L15
LD A,D
AND 3
RRCA
RRCA
OUT (C),A
RES 3,B
.L15 OUT (C),E
EX AF,AF'
DEC A
JR NZ,.L12
IFDEF DOS_FE
LD BC,FDD_EMU_PORT
LD A,(B_PORT_VIRT & 0x3FFF)
OUT (C),A
ENDIF
PEC_OFF M_SHADOW_BF
LD BC,PENT_CONF
LD A,(N_EFF7-CPU6)
OUT (C),A
PEC_ON M_SHADOW_BF
LD BC,(B_PORT77-CPU6)
LD A,C
LD C,0x77
OUT (C),A
LD A,(N_BF-CPU6)
OUT (PEVO_CONF),A
LD BC,CONF_128
LD A,(N_7FFD-CPU6)
OUT (C),A
LD HL,NMI_SERVICE
LD (ADR_NMI_JUMP),HL
XOR A
LD (FOR_RET),A
LD SP,NADRRET_L-CPU6
LD HL,(NMI_SAVE_SP-CPU6)
POP DE
LD (HL),E
INC HL
LD (HL),D ; ¢®ááâ ®¢«¥¨¥ ¤à¥á ¢®§¢à â
POP AF
EX AF,AF'
POP IY
POP IX
POP BC
POP DE
POP HL
EXX
POP BC
POP DE
POP AF
JP PO,.L1
EI
.L1 LD A,0x80+3-REG_R_CORRECT
LD HL,NREG_R-CPU6
SLA (HL)
RLA
ADD A,(HL)
RRCA
LD R,A
POP AF
LD I,A
POP AF
POP HL
LD SP,(NMI_SAVE_SP-CPU6)
OUT (0xBE),A
RETN
LDIR__BYTES LD HL,CPU6
ADD HL,SP
LD SP,HL
LD A,(R_7FFD-CPU6)
AND 0x10
LD HL,B0_CPU1-CPU2
JR Z,.L5
LD HL,B1_CPU1-CPU2
.L5 LD C,LOW (WIN_A0)
LD A,3
.L3 EX AF,AF'
LD E,(HL) ; ¡ ©â ¤«ï § ¯¨á¨ ¢ ¯®àâ
INC HL
LD D,(HL) ; áâ à訩 ¡ ©â ¤à¥á ¯®àâ
INC HL
LD A,D
OR 0x3F
LD B,A
BIT 3,D
JR NZ,.L4
LD A,D
AND 3
RRCA
RRCA
OUT (C),A
RES 3,B
.L4 OUT (C),E
EX AF,AF'
DEC A
JR NZ,.L3
EXX
LDIR
LD BC,WIN_P6
XOR A
OUT (C),A
LD HL,CPU6
ADD HL,SP
LD SP,HL
LD BC,WIN_A0
LD A,ROM_RST83
JP ADR_SEL_ROM
NUM_IM2 LD A,1
RET
GET_NUM_IM PUSH HL
LD D,B ; INT ON/OFF
LD HL,0x0038
LD (HL),0xAF
LD L,0xFF
LD (HL),LOW (NUM_IM2)
INC HL
LD (HL),HIGH (NUM_IM2)
EI
HALT
DI
LD E,A ; 0-IM 1, 1-IM 2
LD HL,0x0038
LD (HL),0xFB
LD L,0xFF
LD (HL),LOW (IM_EI_RET)
INC HL
LD (HL),HIGH (IM_EI_RET)
POP HL
RET
PHASE $ + CPU6
; ¢ë§®¢ ¯®¤¯à®£à ¬¬ ¨§ ¤à㣨å áâà ¨æ ROM
CALL2PAGE EX (SP),HL
PUSH BC
PUSH AF
LD BC,WIN_A0
.L1 LD (PORTCALL),BC
LD C,(HL)
INC HL
LD B,(HL)
INC HL
LD (ADRCALL),BC
LD BC,RD_7FFD
IN A,(C)
AND 0x10
LD BC,RD_0WINA0
JR Z,.L2
LD BC,RD_1WINA0
.L2 IN A,(C)
AND 0x3F
LD BC,STEK_PAGES
TEKPAGE EQU $-2
LD (BC),A
INC BC
LD (TEKPAGE),BC
LD A,(HL)
INC HL
LD BC,WIN_A0
PORTCALL EQU $-2
OUT (C),A
POP AF
POP BC
EX (SP),HL
CALL 0
ADRCALL EQU $-2
PUSH BC
PUSH AF
LD BC,(TEKPAGE)
DEC BC
LD A,(BC)
LD (TEKPAGE),BC
LD BC,WIN_A0
OUT (C),A
POP AF
POP BC
RET
CALL2RAMPAGE EX (SP),HL
PUSH BC
PUSH AF
LD BC,WIN_P0
JR CALL2PAGE.L1
; ¢å®¤ ¢ ®â« ¤ç¨ª
DEBUGGER DI
LD HL,CPU6 + DEBUG_ONOFF
BIT B_DBG_ACTIV,(HL)
JR Z,DEBUGGER1
; ¯à¨ã¤¨â¥«ìë© ¢å®¤ ¢ ®â« ¤ç¨ª á ¢®§¢à ⮬ ¢ ®á®¢®¥ ¬¥î NMI
LD HL,DBG2MAINMENU
PUSH HL
JR DEBUGGER2
; ¢å®¤ ¢ ®â« ¤ç¨ª ¨§ ®á®¢®£® ¬¥î NMI
DEBUGGER1 LD HL,RESTART_MAIN
PUSH HL
LD HL,EXIT_DEBUG
PUSH HL
LD HL,CPU6+DEBUG_ONOFF
SET B_DBG_ACTIV,(HL)
DEBUGGER2 LD HL,CONTINUE_PROG
LD DE,NADRRET_L
EVOPORT WIN_P3,RAM_STS ; ¢ª«î稫¨ áâà ¨æã á ãáâ ®¢«¥ë¬ STS
LD BC,N_BF
LD A,(N_77)
EX AF,AF'
LD A,NO_EXIT_DEBUG-EXIT_DEBUG
JP START_STS
; ®à¬ «ìë© ¢ë室 ¨§ ®â« ¤ç¨ª
EXIT_DEBUG LD HL,CPU6+DEBUG_ONOFF
RES B_DBG_ACTIV,(HL)
; ¢ë室 ¨§ ®â« ¤ç¨ª ¬¨ãï ®á®¢®¥ ¬¥î NMI
NO_EXIT_DEBUG
EVOPORT WIN_A0,ROM_RST82
LD HL,CPU6+DEBUG_ONOFF
LD A,M_TRACE_DBG
AND (HL)
RET Z
LD HL,TRACER_DBG
EX (SP),HL
RET
; ¢å®¤ ¢ ®â« ¤ç¨ª ¬¨ãï ®á®¢®¥ ¬¥î NMI
DBG2MAINMENU LD HL,CPU6+DEBUG_ONOFF
RES B_DBG_ACTIV,(HL)
EVOPORT WIN_A0,ROM_RST83
LD A,M_TRACE_DBG
AND (HL)
JP NZ,CONTMAGIC3
JP RESTART_NMI
; ¢®§¢à â ¨§ NMI ¤«ï ®â« ¤ç¨ª . ¥ ¢®ááâ ¢«¨¢ ¥âáï:
; ¯ «¨âà , ä®â, ¢¨¤¥®à¥¦¨¬
NMI_EXIT_DBG
EVOPORT WIN_A0,ROM_RST82
; ROMCALL RESTORE_AY,ROM_RST83 ; ¢®ááâ ®¢«¥¨¥ ॣ¨áâ஢ AY
LD HL,ADR_MAGIC
LD (HL),0xC9 ; § £«ãèª MAGIC
IN A,(PEVO_CONF)
OR M_NMI_BF
OUT (PEVO_CONF),A
AND M_NMI_BF!0xFF
OUT (PEVO_CONF),A
HALT ; ¦¤¥¬ áà ¡ âë¢ ¨ï MAGIC
LD HL,ADR_MAGIC
LD (HL),0xC3 ; à §à¥è¥¨¥ ®¡à ¡®â稪 MAGIC ¯¥à¥¤ ¢ë室®¬
LD C,LOW (WIN_A0)
LD A,(N_7FFD-CPU6)
AND 0x10
LD HL,B0_CPU0-CPU6
JR Z,.L11
LD HL,B1_CPU0-CPU6
.L11 LD A,4
.L12 EX AF,AF'
LD E,(HL) ; ¡ ©â ¤«ï § ¯¨á¨ ¢ ¯®àâ
INC HL
LD D,(HL) ; áâ à訩 ¡ ©â ¤à¥á ¯®àâ
INC HL
LD A,D
OR 0x3F
LD B,A
BIT 3,D
JR NZ,.L15
LD A,D
AND 3
RRCA
RRCA
OUT (C),A
RES 3,B
.L15 OUT (C),E
EX AF,AF'
DEC A
JR NZ,.L12
PEC_OFF M_SHADOW_BF
LD BC,PENT_CONF
LD A,(N_EFF7-CPU6)
OUT (C),A
PEC_ON M_SHADOW_BF
; LD BC,(B_PORT77-CPU6)
; LD A,C
; LD C,0x77
; OUT (C),A
LD A,(N_BF-CPU6)
OUT (PEVO_CONF),A
LD BC,CONF_128
LD A,(N_7FFD-CPU6)
OUT (C),A
LD HL,NMI_SERVICE
LD (ADR_NMI_JUMP),HL
XOR A
LD (FOR_RET),A
LD SP,NADRRET_L-CPU6
POP AF ; á¡à®á ¤à¥á ¢®§¢à â
POP AF
EX AF,AF'
POP IY
POP IX
POP BC
POP DE
POP HL
EXX
POP BC
POP DE
POP AF
JP PO,ENMIDBGSERV1
EI
ENMIDBGSERV1 LD A,0x80+3-REG_R_CORRECT
LD HL,NREG_R-CPU6
SLA (HL)
RLA
ADD A,(HL)
RRCA
LD R,A
POP AF
LD I,A
POP AF
POP HL
LD SP,(NMI_SAVE_SP-CPU6)
OUT (0xBE),A
RETN
IF 0
TO_USBDRV EX AF,AF'
LD (.L3),A
LD A,IYL
AND A
LD A,(NEXTBYTERST8)
JR Z,.L1
EX (SP),HL
LD A,(HL)
INC HL
EX (SP),HL
.L1 PUSH BC
PUSH AF
LD BC,WIN_P0
LD A,RAM_SCR_FONT
OUT (C),A
POP AF
POP BC
LD (.OLD_SP_USB),SP
LD SP,CPU1
ADD A,A
PUSH HL
LD HL,COMUSBF.RET4USBF
EX (SP),HL
PUSH HL
LD HL,COMUSBF.TBLUSBF
ADD A,L
LD L,A
ADC A,H
SUB L
LD H,A
LD A,(HL)
INC HL
LD H,(HL)
LD L,A
LD A,0
.L3 EQU $-1
EX AF,AF'
EX (SP),HL
JP COMUSBF.IN_USBF
.RET_USBF LD SP,0
.OLD_SP_USB EQU $-2
RET
ENDIF
; ¯¥à¥¬¥ë¥ ¤«ï USB ¤à ©¢¥à
vars
.bFlags DW 0xFF
.xferLen DB 0xFF
.data0 DB 0xFF
.data1 DB 0xFF
.cmd DB 0xFF
.intr DB 0xFF
.result DB 0xFF
.remainder DB 0xFF
.dataX DB 0xFF
.bufLen DB 0xFF
.addr DB 0xFF
.timeout DB 0xFF
.SL_OUT DB 0xFF dup (8)
.DBUF DB 0xFF dup (64)
.T_OUT DB 0xFF dup (32)
uDev pUSBDEV
usbstack PKG
STEK_PAGES DUPL 0x10,0xFF ; 10 á⥪ áâà ¨æ ¢ë§ë¢®¢ ¢ ROM
RST_FLAGS DB 0xFF ; 1
TXT_COLOR DB 0xFF ; 1
COORD_XY DW 0xFF ; 2
COLBUF DUPL 0x50,0xFF ; 50 ¡ãä¥à á®åà ¥¨ï áâப¨ 梥â á íªà
MOUSE_BUFF DUPL 0x10,0xFF ; 10 ¡ãä¥à á®åà ¥¨ï ç á⨠íªà ¯®¤ ªãàá®à®¬ ¬ëè¨
PRESSEDKEY DW 0xFFFF ; 2 ¤à¥á ᯨ᪠£®àïç¨å ª« ¢¨è ¯®á«¥ ¢ë¢®¤ ®ª
FLAGS DB 0xFF ; 1 á¨áâ¥¬ë¥ ä« £¨
BITMASK VIDEO_MODE, 7 ; BIT 7-=1-TXT, =0-ZX SCREEN MODE
; BIT 6
; BIT 5
BITMASK WIN_INT_EXT, 4 ; BIT 4-=1-¢¥è¥¥ ®ª®, =0-¢ãâ॥¥ ®ª®
BITMASK RUN_FAT_DSK, 3 ; BIT 3-=1-§ ¯ã᪠á FAT, =0-§ ¯ãáª á ¤¨áª¥âë
BITMASK CLOCK_PRESENT, 2 ; BIT 2-=1-ç áë ©¤¥ë, =0-¥â
BITMASK MOUSE_PRESENT, 1 ; BIT 1-=1-¬ëèì ¥áâì, =0-¥â
BITMASK CURSOR_NUM, 0 ; BIT 0-ª ª®© ªãàá®à à¨á®¢ âì, ¤«ï ¬¨£ ¨ï
NEXTBYTERST8 DB 0xFF ; 1 á«¥¤ãî騩 ¡ ©â ¯®á«¥ ¢ë§®¢ RST 8, ª®¤ ¤«ï ¢ë§®¢ ¤à ©¢¥à
OLD_STACK DW 0xFFFF ; 2
ADR_INT DW 0xFFFF ; 2
ADR_PALITRA DW 0xFFFF ; 2
XNEW DB 0xFF ; 1
ADRSTR_Y DB 0xFF ; 1
ADRSTR_X DB 0xFF ; 1
TXNEW DB 0xFF ; 1
TADRSTR_Y DB 0xFF ; 1
TADRSTR_X DB 0xFF ; 1
NO_INW DB 0xFF ; 1
COLOR4SYM DB 0xFF ; 1
PAGE4READ DB 0xFF ; 1
PAGE4SCR DB 0xFF ; 1
DAT_MAIN_MENU DUPL 3,0 ; 3
DAT_SETUP_MENU DUPL 3,0 ; 3
DAT_FILEBROWS DUPL 5,0 ; 5
DAT_MOUNT DUPL 3,0 ; 3
WIN_DEV DUPL 0x30,0 ; 30
COL_CURSOR DW 0xFFFF ; 2
_MORG DB 0xFF ; 1
ARXY DW 0xFFFF ; 2
ADR_REST DW 0xFFFF ; 2
MOUPOS DW 0xFFFF ; 2
TEK_MODES DB 0xFF ; 1
CMP_FONT_FLAG DB 0xFF ; 1
BUFF4TXT DUPL 0x2B,0xFF ; 2B
EXT4FOUND DUPL 0x10*3+1,0xFF ; 10*3+1
CMOS4CRC16 DUPL ECMOS_DEFAULT-CMOS_DEFAULT,0xFF
KSTATE0 DB 0xFF ; 1 |
KSTATE1 DB 0 ; 1 |
KSTATE2 DB 0 ; 1 |
KSTATE3 DB 0 ; 1 |
KSTATE4 DB 0xFF ; 1 | «®£
KSTATE5 DB 0 ; 1 | BASIC
KSTATE6 DB 0 ; 1 | ¯¥à¥¬¥ëå
KSTATE7 DB 0 ; 1 | ®¯à®á
LAST_K DB 0 ; 1 | ª« ¢¨ âãàë
REPDEL DB 0x10 ; 1 |
REPPER DB 1 ; 1 |
FLAGS_KEY DB 0 ; 1 |
FLAGS_KEY1 DB 0x10 ; 1 |
MOUNT_SYM DB 0xFF ; 1 ®¬¥à ¬®â¨à㬮£® ¤¨áª
EXT_TYPE DB 0xFF ; 1
OST_HWOST DW 0xFFFF ; 2
KUDA_HWOST DW 0xFFFF ; 2
SCROLL_MODE DB 0xFF ; 1
NEXT4PAGE DW 0xFFFF ; 2
OSTAT_SECT DW 0xFFFF ; 2
NACH_SECT DW 0xFFFF ; 2
START_DATA DW 0xFFFF ; 2
;AY_REGS1 DUPL 0x0E,0xFF ; D
;AY_REGS2 DUPL 0x0E,0xFF ; D
TEKBUFTSC DW 0xFFFF ; 2
TEK_TEXT DW 0xFFFF ; 2
TURBO_MODE DUPL 5,0xFF ; 5
MEMORY_MODE DUPL 4,0xFF ; 3
; ¤«ï १¨¤¥â HONEY COMANDER
REZIDENT_MODE DUPL 4,0xFF ; 4
TXT_KILLREZID DUPL 4,0xFF ; 4
BUFF_TIME DB 0x16,0x00,0x48,0x17,CYAN<<3+BLUE+0xC0
TXT_TIME DB "00:00:00",0x16,0x01,0x48
TXT_DATA DB "00.00.00",0x17,0xFF,0
EBUFF_TIME
TXT_FREQ DZ "14.0"
DZ "7.0 "
DZ "3.5 "
NAME_RAMDISK DUPL 0x20,0
FILE_DEST DUPL 0x20,0xFF ; 20 ®¯¨á â¥«ì ®âªàë⮣® ä ©« (ªã¤ )
FB_EXT DUPL 0x0B,0xFF ; B ¡ãä¥à 8.3 ¤«ï ¯®¨áª ¨¬¥¨
SAVE_IY DW 0xFFFF ; 2 ¢ãâ॥¥ á®åà ¥¨¥ ॣ¨áâ஢ ¤«ï ¤ «ì¥©è¥£® ¨á¯®«ì§®¢ ¨ï
ADR_MASK_EXT DW 0xFFFF ; 2 ¤à¥á à áè¨à¥¨© ä ©«®¢ ¤«ï ¯®¨áª
ADR_SKLAD DW 0xFFFF ; 2 ¤à¥á ᪫ ¤¨à®¢ ¨ï ©¤¥®£®
ADR_SKLAD_NAME DW 0xFFFF ; 2
MAKS_ADR DB 0xFF ; 1 áâ à訩 ¡ ©â ¬ ªá¨¬ «ì®£® ¤à¥á ¡ãä¥à ᪫ ¤¨à®¢ ¨ï
KOL_FOUNDED DW 0xFFFF ; 2 ª®«¨ç¥á⢮ ©¤¥ëå ®¯¨á ⥫¥©
OUT_NAME_FILE DB 0x17,0xFF,0x16,0,0,0
OUT_NAME_FILET EQU $-3
BUF_FILEITEM DUPL 0x20,0xFF ; 20
EXTERN_PAL DUPL 0x10,0xFF ; 10
ENMI_SERVICE
HDDTIMEOUT EQU EXTERN_PAL+0x10 ; 1
DEPHASE