mirror of
https://github.com/Tolik-Trek/ZX-SP-ROMs.git
synced 2026-06-15 01:11:46 +03:00
765 lines
11 KiB
NASM
765 lines
11 KiB
NASM
TAB_FNS:
|
||
;FN_80h
|
||
DW LP_OPEN_S ; ®âªàë⨥ ®ª
|
||
DW LP_PRINT_ALL ; ¯¥ç âì ᨬ¢®« ¢ ®ª®
|
||
DW LP_PRINT_SYM ; ¯¥ç âì ᨬ¢®« ¡¥§ âà
|
||
DW LP_PRINT_ATR ; ¯¥ç âì ⮫쪮 âਡãâ
|
||
DW LP_SET_PLACE ; ãáâ ®¢ª ¯®§¨æ¨¨ ¯¥ç â¨
|
||
DW LP_PRINT_LINE ; ¯¥ç âì áâப¨ ¤«¨®© B
|
||
DW LP_PRINT_LINE2 ; ¯¥ç âì áâப¨ -//- ¡¥§ âਡã⮢
|
||
DW LP_PRINT_LINE3 ; ¯¥ç âì áâப¨ ¤«¨®© B ¤® D
|
||
;FN_88h
|
||
DW LP_PRINT_LINE4 ; ¯¥ç âì áâப¨ -//- ¡¥§ âਡã⮢
|
||
DW LP_CLS_WIN
|
||
DW LP_SCROLL_UD
|
||
DW LP_PRINT_LINE5
|
||
DW LP_PRINT_LINE6
|
||
DW LP_CLS_WIN_2
|
||
DW LP_GET_PLACE
|
||
DW FN_TURBO
|
||
;FN_90h
|
||
DW EMM_FN0 ; ¥à §àãè î饥 ®¯à¥¤¥«¥¨¥ ®¡ê¥¬ އ“.
|
||
DW EMM_FN1 ; ¨¨æ¨ «¨§ æ¨ï à á¯à¥¤¥«¥¨ï ¯ ¬ïâ¨
|
||
DW EMM_FN2 ; ¯®«ãç¨âì ¡«®ª ¯ ¬ïâ¨
|
||
DW EMM_FN3 ; ®á¢®¡®¤¨âì ¡«®ª ¯ ¬ïâ¨
|
||
DW EMM_FN4 ; ¯®«ãç¨âì ®¬¥àa áâà ¨æ RAM-Disk
|
||
DW EMM_FN5 ; ¯®«ãç¨âì á«¥¤ãîéãî áâà ¨æã
|
||
DW EMM_FN6 ; ¯®«ãç¨âì ¤à¥á ¯®à⮢
|
||
DW EMM_FN7 ; ¨¨æ¨ «¨§ æ¨ï ***
|
||
;FN_98h
|
||
DW RAMD_CALC_PAGE ; Fn 98h
|
||
DW SET_DISK_TYPE
|
||
DW DISK_REDIR
|
||
DW FN_NO
|
||
DW FN_NO
|
||
DW EMM_DIV ; à §¤¥«¥¨ï ¡«®ª ¤¢ .
|
||
DW EMM_ADD ; ᫨逸 ¤¢ãå ¡«®ª®¢
|
||
DW MSDOS_COLD_VARS ; ¨¨æ¨ «¨§ æ¨ï ¢á¥© ¯ ¬ïâ¨
|
||
;FN_A0h
|
||
DW PIC_FN0 ; Ž’Š<E28099>›’ˆ… ŽŠ<C5BD>€ - Fn 0A0h
|
||
DW PIC_FN1 ; ‚›‚…‘’ˆ ’Ž—Š“
|
||
DW PIC_FN2 ; ‚›‚Ž„ ‹ˆ<E280B9>ˆˆ COPY
|
||
DW PIC_FN3 ; ‚›‚Ž„ ‹ˆ<E280B9>ˆˆ FILL
|
||
DW PIC_FN4 ; ‚›‚Ž„ <20>€‹ˆ’<CB86>›
|
||
DW PIC_FN5 ; “‘’€<E28099>ނЀ RGMOD
|
||
DW PIC_FN6 ; A - page_pal, E - ®¬¥à ¯ «¨âàë, B - ⨯ ¯ «¨âàë
|
||
DW PIC_FN7
|
||
;FN_A8h
|
||
DW PIC_FN8
|
||
DW PIC_FN9
|
||
DW PIC_FN10
|
||
DW PIC_FN11
|
||
DW PIC_FN12
|
||
DW PIC_FN14
|
||
DW PIC_FN14
|
||
DW PIC_FN15
|
||
;FN_B0h
|
||
DW WIN_OPEN_WIN ; ®âªàë⨥ ®ª ¯® ®¯¨á ⥫î
|
||
DW WIN_CLOSE_WIN ; § ªàë⨥ ®ª
|
||
DW WIN_COPY_WIN ; á®åà ¥¨¥ ⥪á⮢®£® ®ª ¢ ¯ ¬ïâ¨
|
||
DW WIN_REST_WIN ; ¢®ááâ ®¢«¥¨¥ ⥪á⮢®£® ®ª ¨§ ¯ ¬ïâ¨
|
||
DW WIN_GET_SYM ; ¢§ïâì ᨬ¢®«
|
||
DW WIN_PUT_SYM ; ¯®«®¦¨âì ᨬ¢®«
|
||
DW WIN_SET_ZG ; § £à㧪 § ª®£¥¥à â®à
|
||
DW WIN_MOVE_WIN ; ¯¥à¥¬¥áâ¨âì ®ª®
|
||
;FN_B8h
|
||
DW WIN_GET_ZG ; ¯®«ãç¨âì § ª®£¥¥à â®à
|
||
DW FN_NO
|
||
DW FN_NO
|
||
DW FN_NO
|
||
DW FN_NO
|
||
DW FN_NO
|
||
DW FN_NO
|
||
DW FN_NO
|
||
;FN_C0h
|
||
DW EMM_FN0 ; ¯®«ãç¨âì ¤ ë¥ ®¡ ®¡ê¥¬¥ ¯ ¬ï⨠¨ ª®«-¢® ᢮¡. áâà.
|
||
DW EMM_FN1 ; ¨¨æ¨ «¨§ æ¨ï à á¯à¥¤¥«¥¨ï ¯ ¬ïâ¨
|
||
DW EMM_FN2M ; ¯®«ãç¨âì ¡«®ª ¯ ¬ïâ¨
|
||
DW EMM_FN3M ; ®á¢®¡®¤¨âì ¡«®ª ¯ ¬ïâ¨
|
||
DW EMM_FN4M ; ¯®«ãç¨âì ®¬¥à áâà ¨æë ¢ ¡«®ª¥ ¯ ¬ïâ¨
|
||
DW EMM_FN5M ; ¯®«ãç¨âì ᯨ᮪ áâà ¨æ ¡«®ª ¯ ¬ïâ¨
|
||
DW EMM_FN6 ; ¯®«ãç¨âì ¤à¥á ¯®à⮢ ®ª®
|
||
DW EMM_FN5 ; ¯®«ãç¨âì á«¥¤ãîéãî áâà ¨æã ¡«®ª
|
||
;FN_C8h
|
||
DW BLK_R_W ; äãªæ¨ï ç⥨ï/§ ¯¨á¨ ¢ ¡«®ª ¯ ¬ïâ¨
|
||
DW BLK_TO_RAMD ; § ç¨âì ¡«®ª RAM-Disk-ã
|
||
DW RAMD_CLEAR ; ®á¢®¡®¤¨âì RAM-Disk
|
||
DW RAMD_TO_DRV ; § ç¨âì RAM-Disk ¤¨áª®¢®¤
|
||
DW FDD_TO_DRV ; § ç¨âì REAL_DRIVE ¤¨áª®¢®¤
|
||
DW HDD_TO_DRV ; § ç¨âì HDD ¤¨áª®¢®¤
|
||
DW GET_RAMD_ST ; ¯®«ãç¨âì ⨯ § 票ï RAM-Disk
|
||
DW GET_DRV_ST ; ¯®«ãç¨âì ⨯ § ç¥¨ï ¤¨áª®¢®¤
|
||
;FN_D0h
|
||
DW FN_LIB
|
||
DW FN_LIB
|
||
DW FN_LIB
|
||
DW FN_LIB
|
||
DW FN_LIB
|
||
DW FN_LIB
|
||
DW FN_LIB
|
||
DW FN_LIB
|
||
;FN_D8h
|
||
DW FN_LIB
|
||
DW FN_LIB
|
||
DW FN_LIB
|
||
DW FN_LIB
|
||
DW FN_LIB
|
||
DW FN_LIB
|
||
DW FN_LIB
|
||
DW FN_LIB
|
||
;FN_E0h
|
||
DW LP_PRINT_LINE_DIR
|
||
DW FN_NO
|
||
DW FN_NO
|
||
DW FN_NO
|
||
DW FN_NO
|
||
DW FN_NO
|
||
DW FN_NO
|
||
DW FN_NO
|
||
;FN_E8h
|
||
DW FN_SENT_BYTE ; ¯®á« âì ¡ ©â ç¥à¥§ PC_link
|
||
DW FN_RESEIVE_B ; ¯à¨ïâì ¡ ©â ç¥à¥§ PC_link
|
||
DW FN_KBD_OUT ; ¯®á« âì ¡ ©â ¢ ª« ¢¨ âãàã
|
||
DW FN_NO
|
||
DW FN_NO
|
||
DW FN_CRIPT
|
||
DW AY8910
|
||
DW FN_VERSION
|
||
;FN_F0h
|
||
DW SPRINTER_1
|
||
DW SPRINTER_2
|
||
DW FN_SINC
|
||
DW SPRINTER_ALL
|
||
DW DCP_FN0
|
||
DW CMOS_TEST
|
||
DW CMOS_RD
|
||
DW CMOS_WR
|
||
;FN_F8h
|
||
DW SET_ROM_PAGES
|
||
DW READ_PORTS ;
|
||
DW WRITE_PORTS ;
|
||
DW GOTO_SPEC ; Goto Spectrum!
|
||
DW FN_NO
|
||
DW FN_RESET
|
||
DW FN_NO ; SAVE_AUTOSTART
|
||
DW FN_VERSION
|
||
|
||
EXP_FNS: ; ‚室 ¢ äãªæ¨î ¨§ DOS
|
||
POP AF
|
||
CALL EXP_FNS1
|
||
CALL DOS_ON
|
||
JP EXP_FNS_RET
|
||
|
||
;************************************
|
||
EXP_FNS_RST18: ; ‚室 ¢ äãªæ¨î ¯® RST18 ¨ RST8
|
||
bit 7,c
|
||
JR Z,ower2_fn
|
||
CALL EXP_FNS1
|
||
RET
|
||
ower2_fn:
|
||
BIT 6,C
|
||
RES 6,C
|
||
JR NZ,EXP_HDD_X
|
||
SCF
|
||
RET
|
||
EXP_HDD_X:
|
||
CALL EXP_HDD
|
||
RET
|
||
;**********************************
|
||
|
||
FN_CRIPT:
|
||
DEC B
|
||
SCF
|
||
RET NZ
|
||
LD HL,(ROM_NUMBER)
|
||
LD A,(ROM_NUMBER+2)
|
||
LD BC,5281h
|
||
LD DE,47E8h
|
||
AND A
|
||
RET
|
||
|
||
;**********************************
|
||
|
||
START_DI:
|
||
PUSH AF
|
||
LD A,R
|
||
JP PE,XX_DI
|
||
LD A,R
|
||
XX_DI: LD A,80h
|
||
JP PE,XX_DI2
|
||
XOR A
|
||
XX_DI2: LD R,A
|
||
DI
|
||
POP AF
|
||
RET
|
||
|
||
END_DI: PUSH AF
|
||
LD A,R
|
||
BIT 7,A
|
||
JR Z,XX_DI3
|
||
EI
|
||
POP AF ; PE
|
||
RET
|
||
|
||
XX_DI3: DI
|
||
POP AF ; PO
|
||
RET
|
||
|
||
;**********************************
|
||
EXP_FNS1:
|
||
PUSH HL
|
||
PUSH AF
|
||
LD L,C
|
||
SLA L
|
||
LD H,TAB_FNS/256
|
||
LD A,(HL)
|
||
INC L
|
||
LD H,(HL)
|
||
LD L,A
|
||
POP AF
|
||
EX (SP),HL
|
||
RET
|
||
|
||
READ_PORTS:
|
||
WRITE_PORTS:
|
||
FN_NO:
|
||
SCF
|
||
RET
|
||
|
||
SET_ROM_PAGES: ; in A - page, B - new ROM-page
|
||
; out B - old ROM-page
|
||
EX AF,AF'
|
||
LD A,CNF_0
|
||
OUT (CNF_PORT),A
|
||
LD C,PAGE2 ; ¯®«ãç¨âì áâà ¨æã
|
||
IN D,(C)
|
||
LD A,40H ; ãáâ ®¢¨âì ®¢ãî
|
||
OUT (C),A
|
||
LD A,(08000H) ; á®åà ¨âì â® çâ® ¡ë«®
|
||
LD L,A
|
||
LD A,(08200H)
|
||
LD H,A
|
||
EX AF,AF' ; áâà ¨æ
|
||
LD (08000H),A ; ãáâ ®¢¨âì ¯®àâ ROM TR-DOS
|
||
LD (08200H),A
|
||
EX AF,AF'
|
||
LD A,B
|
||
LD BC,0
|
||
EX AF,AF'
|
||
IN A,(C)
|
||
EX AF,AF'
|
||
OUT (C),A ; ãáâ ®¢¨âì ®¢ë© TR-DOS
|
||
EX AF,AF'
|
||
LD B,A
|
||
LD A,L
|
||
LD (08000H),A ; ¢¥àãâì ¯®àâ
|
||
LD A,H
|
||
LD (08200H),A ; ¢¥àãâì ¯®àâ
|
||
LD C,PAGE2
|
||
LD A,SYS_PAGE
|
||
OUT (C),A
|
||
LD A,(CONFIG_DE-4000H)
|
||
OUT (C),D ; ¢¥àãâì áâà ¨æã
|
||
OUT (CNF_PORT),A
|
||
AND A
|
||
RET
|
||
|
||
;TAB_SIZE EQU $-TAB_FNS
|
||
|
||
;******************************************
|
||
|
||
;*********************************************
|
||
;*****************************************
|
||
;
|
||
; ”ãªæ¨ï ¤¥è¨äà â®à ¯®à⮢.
|
||
; HL - ¤à¥á
|
||
; DE - ¬ ᪠- 0 ¨§¬¥ï¥¬ë¥ ¡¨âë, 1 ¥¨§¬¥ï¥¬ë¥
|
||
; B - ¯®àâ
|
||
;
|
||
; ALL STACKS, DI
|
||
;
|
||
;*****************************************
|
||
DCP_FN0:
|
||
AND A
|
||
JP Z,PORTS_INIT
|
||
|
||
PUSH IX
|
||
LD IX,RET_DCP_FN0
|
||
|
||
IN A,(PAGE3)
|
||
EX AF,AF'
|
||
LD A,DCP_PAGE
|
||
OUT (PAGE3),A
|
||
|
||
JP DCP_FN0M
|
||
|
||
RET_DCP_FN0:
|
||
|
||
EX AF,AF'
|
||
OUT (PAGE3),A
|
||
AND A
|
||
POP IX
|
||
RET
|
||
|
||
|
||
BLK_TO_RAMD: ; RAM-Disk A, BLK - B
|
||
CP RAMD_KEY_NUM
|
||
CCF
|
||
RET C
|
||
|
||
PUSH HL
|
||
PUSH BC
|
||
LD L,A
|
||
|
||
IN A,(PAGE2)
|
||
LD C,A
|
||
LD A,SYS_PAGE
|
||
OUT (PAGE2),A
|
||
LD A,L
|
||
LD HL,RAMD_KEYS-4000H
|
||
ADD A,L
|
||
LD L,A
|
||
LD A,(HL) ; ª«îç ¡«®ª
|
||
AND A
|
||
JR NZ,BLK_BUSY ; RAM-Disk § ïâ - ®è¨¡ª
|
||
LD (HL),B
|
||
LD A,C
|
||
OUT (PAGE2),A
|
||
|
||
LD A,B
|
||
AND A
|
||
POP BC
|
||
POP HL
|
||
RET
|
||
|
||
BLK_BUSY:
|
||
LD A,C
|
||
OUT (PAGE2),A
|
||
|
||
SCF
|
||
POP HL
|
||
RET
|
||
|
||
|
||
RAMD_CLEAR: ; RAM-Disk A
|
||
CP RAMD_KEY_NUM
|
||
CCF
|
||
RET C
|
||
|
||
PUSH HL
|
||
LD L,A
|
||
|
||
IN A,(PAGE2)
|
||
LD C,A
|
||
LD A,SYS_PAGE
|
||
OUT (PAGE2),A
|
||
LD A,L
|
||
LD HL,RAMD_KEYS-4000H ; RAM-Disk ᢮¡®¤¥¬
|
||
ADD A,L
|
||
LD L,A
|
||
LD B,A ; § ¯®¬¨âì 㤠«ï¥¬ë© à ¬¤¨áª
|
||
LD A,(HL)
|
||
AND A
|
||
JR Z,BLK_BUSY ; ¢®§¢à â á ®è¨¡ª®©
|
||
LD (HL),0
|
||
LD A,C
|
||
OUT (PAGE2),A
|
||
|
||
AND A
|
||
POP HL
|
||
RET
|
||
|
||
|
||
RAMD_TO_DRV: ; RAM-Disk A, DRV - B
|
||
CP RAMD_KEY_NUM
|
||
CCF
|
||
RET C
|
||
LD C,A
|
||
LD A,B
|
||
CP 4
|
||
CCF
|
||
RET C
|
||
|
||
LD HL,DISK_TYPE-4000H
|
||
LD L,B
|
||
|
||
IN A,(PAGE2)
|
||
LD B,A
|
||
LD A,SYS_PAGE
|
||
OUT (PAGE2),A
|
||
LD A,C
|
||
ADD A,4
|
||
LD (HL),A
|
||
LD A,B
|
||
OUT (PAGE2),A
|
||
AND A
|
||
RET
|
||
|
||
FDD_TO_DRV: ; Disk A, DRV - B
|
||
CP 4
|
||
CCF
|
||
RET C
|
||
LD C,A
|
||
|
||
LD A,B
|
||
CP 4
|
||
CCF
|
||
RET C
|
||
|
||
LD HL,DISK_TYPE-4000H
|
||
LD L,B
|
||
|
||
IN A,(PAGE2)
|
||
LD B,A
|
||
LD A,SYS_PAGE
|
||
OUT (PAGE2),A
|
||
LD (HL),C
|
||
LD A,B
|
||
OUT (PAGE2),A
|
||
|
||
AND A
|
||
RET
|
||
|
||
|
||
HDD_TO_DRV: ; HDD A, DRV - B
|
||
AND 0FH
|
||
LD C,A
|
||
LD A,B
|
||
CP 4
|
||
CCF
|
||
RET C
|
||
|
||
LD HL,DISK_TYPE-4000H
|
||
LD L,B
|
||
|
||
IN A,(PAGE2)
|
||
LD B,A
|
||
LD A,SYS_PAGE
|
||
OUT (PAGE2),A
|
||
LD A,C
|
||
ADD A,40H
|
||
LD (HL),A
|
||
LD A,B
|
||
OUT (PAGE2),A
|
||
|
||
AND A
|
||
RET
|
||
|
||
GET_RAMD_ST:
|
||
CP RAMD_KEY_NUM
|
||
CCF
|
||
RET C
|
||
|
||
PUSH BC
|
||
|
||
LD HL,RAMD_KEYS-4000H
|
||
ADD A,L
|
||
LD L,A
|
||
|
||
IN A,(PAGE2)
|
||
LD B,A
|
||
LD A,SYS_PAGE
|
||
OUT (PAGE2),A
|
||
LD C,(HL)
|
||
LD A,B
|
||
OUT (PAGE2),A
|
||
|
||
LD A,C
|
||
|
||
POP BC
|
||
|
||
AND A
|
||
RET
|
||
|
||
GET_DRV_ST:
|
||
CP 4
|
||
CCF
|
||
RET C
|
||
|
||
PUSH BC
|
||
|
||
LD HL,DISK_TYPE-4000H
|
||
ADD A,L
|
||
LD L,A
|
||
|
||
IN A,(PAGE2)
|
||
LD B,A
|
||
LD A,SYS_PAGE
|
||
OUT (PAGE2),A
|
||
LD C,(HL)
|
||
LD A,B
|
||
OUT (PAGE2),A
|
||
|
||
LD A,C
|
||
|
||
POP BC
|
||
|
||
AND A
|
||
RET
|
||
|
||
|
||
CMOS_EMU_WR:
|
||
PUSH DE
|
||
|
||
LD C,PAGE3
|
||
IN B,(C)
|
||
LD E,SYS_PAGE
|
||
OUT (C),E
|
||
LD E,D
|
||
LD D,0FFH
|
||
LD (DE),A
|
||
OUT (C),B
|
||
|
||
POP DE
|
||
RET
|
||
|
||
;***********************************************
|
||
;
|
||
; CMOS - 35h,36h - ãáâ ®¢ª¨ ¡¥©á¨ª
|
||
;
|
||
;***********************************************
|
||
|
||
CMOS_WR:
|
||
WR_CMOS: ; § ¯¨áì á CMOS
|
||
CALL CMOS_TEST
|
||
JR C,CMOS_EMU_WR
|
||
XWR_CMOS: ; § ¯¨áì á CMOS
|
||
LD BC,CMOS_AWR
|
||
OUT (C),D
|
||
LD BC,CMOS_DWR
|
||
OUT (C),A
|
||
RET
|
||
|
||
|
||
CMOS_EMU_RD:
|
||
PUSH DE
|
||
|
||
LD C,PAGE3
|
||
IN B,(C)
|
||
LD E,SYS_PAGE
|
||
OUT (C),E
|
||
LD E,D
|
||
LD D,0FFH
|
||
LD A,(DE)
|
||
OUT (C),B
|
||
|
||
POP DE
|
||
RET
|
||
|
||
CMOS_RD:
|
||
RD_CMOS: ; ç⥨¥ ¨§ CMOS
|
||
CALL CMOS_TEST
|
||
JR C,CMOS_EMU_RD
|
||
XRD_CMOS: ; ç⥨¥ ¨§ CMOS
|
||
LD BC,CMOS_AWR
|
||
OUT (C),D
|
||
LD BC,CMOS_DRD
|
||
IN A,(C)
|
||
RET
|
||
|
||
CMOS_TEST:
|
||
|
||
PUSH DE
|
||
PUSH BC
|
||
PUSH AF
|
||
|
||
LD D,3FH
|
||
CALL XRD_CMOS
|
||
LD E,A
|
||
CPL
|
||
CALL XWR_CMOS
|
||
CALL XRD_CMOS
|
||
CPL
|
||
CP E
|
||
JR NZ,CMOS_ERR
|
||
LD A,E
|
||
CALL XWR_CMOS
|
||
|
||
POP AF
|
||
POP BC
|
||
POP DE
|
||
AND A
|
||
RET
|
||
|
||
CMOS_ERR:
|
||
LD A,E
|
||
CALL XWR_CMOS
|
||
POP AF
|
||
POP BC
|
||
POP DE
|
||
SCF
|
||
RET
|
||
|
||
;
|
||
;DE - ªã¤ - áâà ¨æ ®âªàëâ !
|
||
;BC - ᪮«ìª®
|
||
;HL - ¡ãä¥à
|
||
;
|
||
; PUSH BC
|
||
; LD H,D
|
||
; LD L,E
|
||
; ADD HL,BC
|
||
; JR C,CUT
|
||
; LD HL,BUFER
|
||
; LDIR
|
||
; POP BC
|
||
; RET
|
||
;CUT:
|
||
; PUSH HL
|
||
; LD A,L
|
||
; LD L,C
|
||
; LD C,A
|
||
; LD A,H
|
||
; LD H,B
|
||
; LD B,A
|
||
;
|
||
; AND A
|
||
; SBC HL,BC
|
||
; LD B,H
|
||
; LD C,L
|
||
; LD HL,BUFER
|
||
; LDIR
|
||
; CALL NEXT_BANK
|
||
; POP BC
|
||
; LD A,B
|
||
; OR C
|
||
; JR Z,LAB
|
||
; LDIR
|
||
;LAB: POP BC
|
||
; RET
|
||
;
|
||
|
||
FN_TURBO:
|
||
CP 2
|
||
JR Z,FN_TB_ONOFF
|
||
CP 3
|
||
JR Z,FN_TB_ONOFF
|
||
SCF
|
||
RET
|
||
|
||
FN_TB_ONOFF:
|
||
LD C,A
|
||
|
||
IN A,(PAGE3)
|
||
LD B,A
|
||
LD A,SYS_PAGE
|
||
OUT (PAGE3),A
|
||
LD DE,(CONFIG_DE)
|
||
LD A,E
|
||
AND 0FCh
|
||
OR C
|
||
LD E,A
|
||
OUT (CNF_PORT),A
|
||
LD (CONFIG_DE),DE
|
||
LD A,B
|
||
OUT (PAGE3),A
|
||
|
||
AND A
|
||
RET
|
||
|
||
EMM_FN9:
|
||
EMM_DIV: ; à §¤¥«¨âì ¡«®ª ¯ ¬ï⨠¤¢ ¡«®ª
|
||
; A - ¡«®ª, B - ¤«¨ ¯¥à¢®£® ¡«®ª ¯®á«¥ à §¤¥«¥¨ï
|
||
; ¢ë室: A - ¡«®ª 1, B - ¡«®ª 2
|
||
|
||
INC B
|
||
DEC B
|
||
SCF
|
||
RET Z
|
||
DEC B
|
||
LD E,A
|
||
CALL EMM_FN4M ; ¯®«ãç¨âì ®¬¥à áâà ¨æë ¡«®ª
|
||
RET C
|
||
LD D,A
|
||
|
||
IN A,(PAGE2)
|
||
EX AF,AF'
|
||
LD A,SYS_PAGE
|
||
OUT (PAGE2),A
|
||
|
||
LD H,RAMD_FAT/256-40H
|
||
LD L,D
|
||
LD A,(HL)
|
||
LD (HL),0FFH
|
||
LD B,A
|
||
|
||
EX AF,AF'
|
||
OUT (PAGE2),A
|
||
|
||
LD A,E
|
||
AND A
|
||
RET
|
||
|
||
EMM_FN8:
|
||
EMM_ADD: ; ᫨âì ¤¢ ¡«®ª ¯ ¬ï⨠¢ ®¤¨
|
||
; € - ¡«®ª 1, B - ¡«®ª 2
|
||
; ¢ë室: € - ¡«®ª
|
||
|
||
LD E,A
|
||
IN A,(PAGE2)
|
||
EX AF,AF'
|
||
LD A,SYS_PAGE
|
||
OUT (PAGE2),A
|
||
LD H,RAMD_FAT/256-40H
|
||
LD L,E
|
||
LD C,B
|
||
LD B,0
|
||
EMM_ADD_L:
|
||
LD A,(HL)
|
||
AND A
|
||
JR Z,EMM_ADD_ERR
|
||
CP 0FFH
|
||
JR Z,EMM_ADD_NEXT
|
||
LD L,A
|
||
DJNZ EMM_ADD_L
|
||
EMM_ADD_ERR:
|
||
EX AF,AF'
|
||
OUT (PAGE2),A
|
||
SCF
|
||
RET
|
||
|
||
EMM_ADD_NEXT:
|
||
LD A,C
|
||
AND A
|
||
JR Z,EMM_ADD_ERR
|
||
LD (HL),A
|
||
EX AF,AF'
|
||
OUT (PAGE2),A
|
||
AND A
|
||
LD A,E
|
||
RET
|
||
|
||
|
||
FN_RESET: ; B - ¯ à ¬¥âà á¡à®á
|
||
DEC B ; B = 1 - á¡à®á ¡¥§ ¯¥à¥§ £à㧪¨ á奬ë.
|
||
; B = 2 - á¡à®á á ¯¥à¥§ £à㧪®© á奬ë
|
||
; ?? B = 3 - á¡à®á á ¯¥à¥§ £à㧪®© EP1K30
|
||
JR Z,RESET_1
|
||
; DEC B
|
||
; JR Z,RESET_2
|
||
DEC B
|
||
RET NZ
|
||
INC B
|
||
RESET_1:
|
||
DI
|
||
LD A,0
|
||
LD BC,1FFDH
|
||
OUT (C),A
|
||
LD B,7FH
|
||
OUT (C),A
|
||
LD A,40H ;DCP_PAGE
|
||
OUT (PAGE3),A
|
||
LD A,5
|
||
OUT (PAGE1),A
|
||
LD A,2
|
||
OUT (PAGE3),A
|
||
LD A,0
|
||
OUT (PAGE0),A
|
||
OUT (RGADR),A
|
||
OUT (RGMOD),A
|
||
;OUT (#E9),A ; #E9 = RGSCR ¥ ॠ«¨§®¢ ® ¢ á奬¥
|
||
; JP Z,0
|
||
JP RESET_ALL
|
||
|
||
|