575 lines
13 KiB
NASM
575 lines
13 KiB
NASM
;----------------------------------------------------------------------;
|
||
; <20>®«ã票¥ ¤à¥á®¢ ¯®à⮢ ¨ ¤ ëå ¤«ï ¢®ááâ ®¢«¥¨ï
|
||
; ‚室: A - ®¬¥à ®ª ¯à®¥æ¨à®¢ ¨ï
|
||
; ‚ë室: B - ¤ ë¥, C - ¤à¥á ¯®àâ ®ª
|
||
EMM.GetBanksPorts:
|
||
INC A
|
||
LD B,A
|
||
DJNZ .slot1
|
||
LD C,SLOT0
|
||
IN B,(C)
|
||
RET ;45t
|
||
.slot1: DJNZ .slot2
|
||
LD C,SLOT1
|
||
IN B,(C)
|
||
RET ;58t
|
||
.slot2: DJNZ .slot3
|
||
LD C,SLOT2
|
||
IN B,(C)
|
||
RET ;71t
|
||
.slot3: DJNZ .error
|
||
LD C,SLOT3
|
||
IN B,(C)
|
||
RET ;84t
|
||
.error: SCF
|
||
RET ;74t
|
||
;----------------------------------------------------------------------;
|
||
|
||
;----------------------------------------------------------------------;
|
||
; HL - ¡ãä¥à
|
||
; !FIXIT SYS_PAGE.CONFIG_BYTE 㦥 ¥ â® ¯®ª §ë¢ ¥â, ¨ ¢®®¡é¥ ¢áî ¡ë ¯¥à¥¤¥« âì, ¯®¯à ¢¨âì ¢ ¤®ª¥, ª ª ¬¨¨¬ã¬
|
||
FN_VERSION:
|
||
PUSH HL
|
||
EX DE,HL
|
||
; LD HL,ID_SPRINTER_FullSize
|
||
|
||
; LD B,0
|
||
; LD C,(HL)
|
||
; INC HL
|
||
LD HL,ID_SPRINTER
|
||
LD BC,ID_SPRINTER.Size
|
||
LDIR
|
||
;
|
||
POP HL
|
||
LD DE,(ID_Version) ;rdlow-ok
|
||
;
|
||
IN A,(SLOT2)
|
||
EX AF,AF'
|
||
LD A,SYS_PAGE
|
||
OUT (SLOT2),A
|
||
LD BC,(SYS_PAGE.CONFIG_BYTE - #4000) ; Version PLD ; !TODO ç¥à¥§ áâàãªâãàã ¤«ï ¯¥à¥¬¥ëå ¡¨®á
|
||
EX AF,AF'
|
||
OUT (SLOT2),A
|
||
LD A,ID_SPRINTER.Records_Num ; —¨á«® ¯®«¥©
|
||
AND A
|
||
RET
|
||
;----------------------------------------------------------------------;
|
||
|
||
;----------------------------------------------------------------------;
|
||
; [x] 28/01/24 ¤®¡ ¢«¥ ¯®¤äãªæ¨ï ¢ë¤ ç¨ ¨äë ¯à® Acex
|
||
FN_CRIPT:
|
||
DJNZ .Acex_ver
|
||
;
|
||
; BoardID_start old address #312A
|
||
; BoardID_end old address #312D
|
||
.board_id:
|
||
LD HL,(BOARD_INFO.number) ;rdlow-ok
|
||
LD A,(BOARD_INFO.type) ;rdlow-ok
|
||
LD BC,(BoardID.start) ;rdlow-ok
|
||
LD DE,(BoardID.end) ;rdlow-ok
|
||
AND A
|
||
RET
|
||
;
|
||
.error: LD A,BIOS.Error.InvalidSubFunction
|
||
SCF
|
||
RET
|
||
;
|
||
.Acex_ver:
|
||
DJNZ .error
|
||
PUSH HL
|
||
LD A,R
|
||
DI
|
||
PUSH AF
|
||
;
|
||
LD HL,-.stackDepth - .readProcedure.size ; memory stack use!
|
||
ADD HL,SP
|
||
PUSH HL ; ¤à¥á ¯à®£à ¬¬ë .readProcedure
|
||
LD DE,.readProcedure ; ¯¥à¥¥á⨠¯à®£à ¬¬ã á⥪
|
||
EX DE,HL
|
||
LD BC,.readProcedure.size
|
||
LDIR ; ¯à®£à ¬¬ á⥪¥
|
||
LD A,+(12 xor %0000'1000) ; !HARDCODE bitstream page in rom
|
||
RET
|
||
.return:;
|
||
POP AF
|
||
JP PO,.no_EI
|
||
EI
|
||
.no_EI: CALL .choose_chip
|
||
POP DE
|
||
LD BC,.chip_ID_TXT.RecordSize
|
||
LDIR
|
||
.cnf+1: LD DE,bitstream_ver_hex
|
||
AND A
|
||
RET
|
||
;
|
||
.choose_chip:
|
||
XOR A
|
||
LD HL, - ACEX.Chip_ID.K30
|
||
ADC HL,DE
|
||
LD HL,.chip_ID_TXT.K30
|
||
RET Z
|
||
OR A ; áïâì CF
|
||
INC A
|
||
LD HL, - ACEX.Chip_ID.K50
|
||
ADC HL,DE
|
||
LD HL,.chip_ID_TXT.K50
|
||
RET Z
|
||
POP HL ; ¡ « á á⥪
|
||
.error_unknownChip:
|
||
SCF
|
||
POP HL
|
||
LD A,BIOS.Error.UnknownDevice
|
||
RET
|
||
;
|
||
; ¯à®æ¥¤ãà , ¯¥à¥®á¨¬ ï á⥪ ¤«ï ç⥨ï Acex ID
|
||
; ®áâ®à®¦¥¥ á PUSH, ¥á«¨ ¤® ¬®£®, ⮠㢥«¨ç¨¢ © .stackDepth
|
||
.readProcedure:
|
||
OUT (ROM.SLOT0),A ; ROM_PAGE
|
||
LD DE,(#100 + 3) ; !HARDCODE §¤¥áì ç¨â ¥âáï Acex ID
|
||
XOR A
|
||
OUT (ROM.SLOT0),A
|
||
OUT (SYS_PORT.ROM),A
|
||
JP .return
|
||
.stackDepth EQU 2 ; à ááâ®ï¨¥ ®â ª®æ ¯à®æ¥¤ãàë ¤® ¢¥àè¨ë á⥪ .
|
||
.readProcedure.size EQU $-.readProcedure
|
||
;
|
||
.chip_ID_TXT:
|
||
.chip_ID_TXT.K30: DZ "K30"
|
||
.chip_ID_TXT.RecordSize EQU $-.chip_ID_TXT
|
||
.chip_ID_TXT.K50 DZ "K50"
|
||
;.chip_ID_TXT.K100 DZ "K100"
|
||
.chip_ID_TXT.Size EQU $-.chip_ID_TXT
|
||
;----------------------------------------------------------------------;
|
||
|
||
;----------------------------------------------------------------------;
|
||
;EMM_FN7
|
||
EMM.CheckColdInit:
|
||
IN A,(SLOT2)
|
||
EX AF,AF'
|
||
LD A,SYS_PAGE
|
||
OUT (SLOT2),A
|
||
|
||
LD HL,SYS_PAGE.ID_FLAG - #4000
|
||
; LD DE,ID_SPRINTER_FullSize
|
||
; LD A,(DE)
|
||
; DEC A
|
||
; INC DE
|
||
; LD B,A
|
||
LD B,ID_SPRINTER.Record1_Size
|
||
LD DE,ID_SPRINTER
|
||
.loop: LD A,(DE)
|
||
CP (HL)
|
||
JR NZ,INIT_SYS_ALL
|
||
INC HL
|
||
INC DE
|
||
DJNZ .loop
|
||
|
||
; Disable user IM address in SYS_PAGE
|
||
XOR A
|
||
LD (SYS_PAGE.INT_ID - #4000),A
|
||
;
|
||
|
||
EX AF,AF'
|
||
OUT (SLOT2),A
|
||
RET
|
||
|
||
|
||
;MSDOS_COLD_VARS:
|
||
EMM.FullInit:
|
||
DI
|
||
IN A,(SLOT2)
|
||
EX AF,AF'
|
||
LD A,SYS_PAGE
|
||
OUT (SLOT2),A
|
||
INIT_SYS_ALL:
|
||
DI
|
||
; LD HL,#8000
|
||
; LD DE,#8001
|
||
; LD (HL),#FF
|
||
; LD BC,#3FFF
|
||
; LDIR
|
||
;
|
||
; LD HL,ID_SPRINTER_FullSize
|
||
; LD DE,SYS_PAGE.ID_FLAG - #4000
|
||
; LD C,(HL)
|
||
; LD B,0
|
||
; INC HL
|
||
LD HL,ID_SPRINTER
|
||
LD DE,SYS_PAGE.ID_FLAG - #4000
|
||
LD BC,ID_SPRINTER.Record1_Size
|
||
LDIR
|
||
; ç¨á⪠¯¥à¥¬¥ëå ZX HDD
|
||
XOR A
|
||
LD H,A
|
||
LD L,A
|
||
LD (SYS_PAGE.CURRENT_DIR_SEC_L - #4000),HL
|
||
LD (SYS_PAGE.CURRENT_DIR_SEC_H - #4000),HL
|
||
DEC A
|
||
LD (SYS_PAGE.CURRENT_HDD - #4000),A
|
||
LD (SYS_PAGE.CURRENT_DIR_DRIVE - #4000),A
|
||
LD (SYS_PAGE.CURRENT_DIR_DRIVE_COPY - #4000),A
|
||
; Disable user IM address in SYS_PAGE
|
||
XOR A
|
||
LD (SYS_PAGE.INT_ID - #4000),A
|
||
;
|
||
LD HL,SYS_PAGE.DISK_TYPE - #4000
|
||
LD (HL),DRIVE_CODES.TRDOS.FDD ; FDD A
|
||
INC HL
|
||
LD (HL),DRIVE_CODES.TRDOS.FDD + 1 ; FDD B
|
||
INC HL
|
||
LD (HL),DRIVE_CODES.TRDOS.HDD
|
||
INC HL
|
||
LD (HL),DRIVE_CODES.TRDOS.HDD
|
||
INC HL
|
||
LD (HL),ZERO_PAGE ; [x] free zx pages! ; SYS_PAGE.COPY_SLOT0, ¡ë«® 0
|
||
INC HL
|
||
LD (HL),SHARED_PAGE; [x] free zx pages! ; SYS_PAGE.COPY_SLOT1, ¡ë«® 5
|
||
INC HL
|
||
LD (HL),ZERO_PAGE ; [x] free zx pages! ; SYS_PAGE.COPY_SLOT2, ¡ë«® 2
|
||
INC HL
|
||
LD (HL),ZERO_PAGE ; [x] free zx pages! ; SYS_PAGE.COPY_SLOT3, ¡ë«® 0
|
||
|
||
LD A,9
|
||
LD (SYS_PAGE.MSD_SECS - #4000),A
|
||
XOR A
|
||
LD (SYS_PAGE.DS_1440 - #4000),A
|
||
|
||
LD HL,SYS_PAGE.RAMD_KEYS - #4000
|
||
LD DE,SYS_PAGE.RAMD_KEYS+1 - #4000
|
||
LD BC,SYS_PAGE.RAMD_KEYS.NUM-1
|
||
LD (HL),0
|
||
LDIR
|
||
; [x] 04/11/2023
|
||
LD HL,SYS_PAGE.Sp_RAMD_KEYS - #4000
|
||
LD DE,SYS_PAGE.Sp_RAMD_KEYS+1 - #4000
|
||
LD BC,SYS_PAGE.Sp_RAMD_KEYS.NUM-1
|
||
LD (HL),0
|
||
LDIR
|
||
;
|
||
; [x] 17/08/2024 fixed bug with change current RAM drives type
|
||
XOR A
|
||
LD (SYS_PAGE.CURRENT_RAM_DRV - #4000),A
|
||
;
|
||
; [ ] free zx pages!
|
||
;;; init task's
|
||
;
|
||
LD DE,ZG_ADDRESS ; ¤à¥á § ª®£¥¥à â®à
|
||
LD (SYS_PAGE.WIN_ZG - #4000),DE
|
||
;
|
||
;-----------[new code start]------------; !!!!! ¯®á¬®âà¥âì-¯à¨ç¥á âì
|
||
INIT_VSyncAndWaits:
|
||
LD D,CMOS_CELL.ScreenSET
|
||
CALL CMOS_RD
|
||
ld d,a
|
||
jr nc,.cmos_OK
|
||
; ¥á«¨ ¥â CMOS, â® áâ ¤ àâë¥ áâனª¨
|
||
ld a,3
|
||
ld (SYS_PAGE.VSyncAndWaits - #4000),A
|
||
jr z,INIT_CONFIG_ALL.setDefaultINT
|
||
|
||
.cmos_OK:
|
||
and high CMOS_CELL.ScreenSET.Mask.Sinc
|
||
and #40
|
||
ld a,3 ; 320 lines & no waits
|
||
jr z,.setVSyncAndWaits
|
||
dec a ; 312 lines & no waits
|
||
|
||
.setVSyncAndWaits:
|
||
ld (SYS_PAGE.VSyncAndWaits - #4000),A
|
||
|
||
INIT_CONFIG_ALL:
|
||
ld a,d
|
||
and high CMOS_CELL.ScreenSET.Mask.Int
|
||
jr z,.setDefaultINT ; set default int
|
||
|
||
xor high CMOS_CELL.ScreenSET.Mask.Int
|
||
LD HL,SCREEN_TABLES.ORIGINAL ; set original int
|
||
jr z,.setINT
|
||
|
||
and #10
|
||
LD HL,SCREEN_TABLES.SCORPION ; set scorpion int
|
||
jr z,.setINT
|
||
|
||
.setDefaultINT:
|
||
LD HL,SCREEN_TABLES.PENTAGON ; set pentagon int
|
||
.setINT:
|
||
LD (SYS_PAGE.SCREEN_TABLE - #4000),HL
|
||
;------------[new code end]-------------
|
||
;
|
||
LD DE,CNF_PORT.CNF_0 + ROM.BIOS
|
||
LD (SYS_PAGE.CONFIG_DE - #4000),DE
|
||
|
||
LD HL,SYS_PAGE.ZX_TASK.CURRENT - #4000 ; 㡨âì ¢á¥ § ¤ ç¨
|
||
LD DE,SYS_PAGE.ZX_TASK.CURRENT+1 - #4000
|
||
LD BC,_ZX_TASK - 1
|
||
LD (HL),0
|
||
LDIR
|
||
|
||
EX AF,AF'
|
||
OUT (SLOT2),A
|
||
|
||
CALL EMM.InitMem
|
||
;**************************************************************
|
||
; —⥨¥ ¯®á«¥¤¨å 256 ¡ ©â®¢ <20>‡“ ¢ á«ã¦¥¡ãî áâà ¨æã
|
||
; § 祬-â®, ⨯ , ä«¥è¥à ¬®£ â ¬ á®åà ¨âì ¤ ë¥ CMOS.
|
||
;READ_ROM_PAGE_X:
|
||
; IN A,(SLOT3)
|
||
; PUSH AF
|
||
; LD A,SYS_PAGE
|
||
; OUT (SLOT3),A
|
||
; CALL READ_ROM_PAGE_X ; READ CMOS-DATA
|
||
; POP AF
|
||
; OUT (SLOT3),A
|
||
;**************************************************************
|
||
RET
|
||
;----------------------------------------------------------------------;
|
||
|
||
;----------------------------------------------------------------------;
|
||
FN_TURBO:
|
||
CP 2
|
||
JR Z,.TURBO_SWITCH
|
||
CP 3
|
||
JR Z,.TURBO_SWITCH
|
||
CP #12
|
||
JR Z,.SET_FDD_720
|
||
CP #13
|
||
JR Z,.SET_FDD_1440
|
||
SCF
|
||
RET
|
||
|
||
;!FIXIT ¬¥ï¥¬ ¯«®â®áâì - ¬¥ï¥¬ ¢ á¨á⥬®© áâà ¨æ¥ ¨äã ®¡ í⮬
|
||
.SET_FDD_720:
|
||
LD A,FDD_Density.SET_720
|
||
OUT (FDD_Density),A
|
||
AND A
|
||
RET
|
||
;!FIXIT ¬¥ï¥¬ ¯«®â®áâì - ¬¥ï¥¬ ¢ á¨á⥬®© áâà ¨æ¥ ¨äã ®¡ í⮬
|
||
.SET_FDD_1440:
|
||
LD A,FDD_Density.SET_1440
|
||
OUT (FDD_Density),A
|
||
AND A
|
||
RET
|
||
|
||
.TURBO_SWITCH:
|
||
LD C,A
|
||
IN A,(SLOT3)
|
||
LD B,A
|
||
LD A,SYS_PAGE
|
||
OUT (SLOT3),A
|
||
;
|
||
;LD DE,(SYS_PAGE.CONFIG_DE)
|
||
;LD A,E
|
||
LD A,(SYS_PAGE.CONFIG_DE)
|
||
;
|
||
AND #FC ; !HARDCODE
|
||
OR C
|
||
;
|
||
;LD E,A
|
||
;LD (SYS_PAGE.CONFIG_DE),DE
|
||
LD (SYS_PAGE.CONFIG_DE),A
|
||
AND 3
|
||
;
|
||
OUT (SYS_PORT.ROM),A
|
||
LD A,B
|
||
OUT (SLOT3),A
|
||
AND A
|
||
RET
|
||
;----------------------------------------------------------------------;
|
||
|
||
|
||
;----------------------------------------------------------------------;
|
||
;!TODO
|
||
;FN_GET_SYS_VAR:
|
||
; ‚室: HL - ®¬¥à á¨á⥬®© ¯¥à¥¬¥®©
|
||
; ‚ë室: HL - § 票¥ á¨á⥬®© ¯¥à¥¬¥®©
|
||
; RET
|
||
;----------------------------------------------------------------------;
|
||
|
||
|
||
;!TODO ᪮¬¯®®¢ âì
|
||
;----------------------------------------------------------------------;
|
||
FN_SEND_BYTE:
|
||
LD E,A ; á®åà ¨âì ¡ ©â
|
||
CALL SEND_HALF_BYTE ; ¯¥à¥¤ âì ¯®«ã¡ ©â ¨§ …
|
||
RET C ; ¢®§¢à â ¯® ®è¨¡ª¥
|
||
LD A,E ; ᤢ¨ãâì ¡ ©â 4 ¡¨â
|
||
RRCA
|
||
RRCA
|
||
RRCA
|
||
RRCA
|
||
LD E,A
|
||
SEND_HALF_BYTE: ; ¯¥à¥¤ âì ¯®«®¢¨ã ¡ ©â _E_!!
|
||
LD A,E
|
||
OR #F0 ; ãáâ ®¢¨âì áâ à訥 ¡¨âë LPT ¤ â
|
||
OUT (Z84.PIO.Port_A.Data),A
|
||
LD BC,0 ; áç¥â稪 â ©¬- ãâ
|
||
WAIT_SENT_1:
|
||
IN A,(KEMPSTON.PC_Link) ; ¯à®¢¥à¨âì ¡¨â 4 1 ¯à¨ £®â®¢®á⨠PC
|
||
BIT 4,A
|
||
JR NZ,CONTINUE_SENT
|
||
DEC BC
|
||
LD A,B
|
||
OR C
|
||
JR NZ,WAIT_SENT_1
|
||
XOR A
|
||
SCF ; â ©¬- ãâ
|
||
RET
|
||
CONTINUE_SENT: ; PC - £®â®¢
|
||
LD A,E
|
||
AND #0F ; á¡à®á¨âì áâ à訥 ¡¨âë LPT -
|
||
OUT (Z84.PIO.Port_A.Data),A
|
||
; áç¥â稪 â ©¬- ãâ
|
||
LD BC,0
|
||
;
|
||
WAIT_SENT_2:
|
||
IN A,(KEMPSTON.PC_Link) ; ¯à®¢¥à¨âì ¡¨â 4 0 - á®®¡é¥¨¥ ®â PC
|
||
BIT 4,A
|
||
JR Z,CONTINUE_SENT2
|
||
DEC BC
|
||
LD A,B
|
||
OR C
|
||
JR NZ,WAIT_SENT_2
|
||
LD A,E
|
||
OR #F0 ; ãáâ ®¢¨âì áâ à訥 ¡¨âë LPT ¤ â
|
||
OUT (Z84.PIO.Port_A.Data),A
|
||
XOR A
|
||
SCF ; â ©¬- ãâ
|
||
RET
|
||
CONTINUE_SENT2: ; ¯®«ã¡ ©â ¯¥à¥¤
|
||
LD A,E
|
||
OR #F0 ; ãáâ ®¢¨âì áâ à訥 ¡¨âë LPT ¤ â
|
||
OUT (Z84.PIO.Port_A.Data),A
|
||
XOR A
|
||
RET
|
||
;----------------------------------------------------------------------;
|
||
|
||
;----------------------------------------------------------------------;
|
||
FN_RESEIVE_B: ; ¯à¨ïâì ¡ ©â ¢ A
|
||
CALL RESEIVE_POLU_BYTE ; ¯à¨ïâì ¯®«ã¡ ©â
|
||
RET C ; ¢®§¢à â ¯® ®è¨¡ª¥
|
||
RLCA
|
||
RLCA
|
||
RLCA
|
||
RLCA
|
||
AND #F0
|
||
LD E,A
|
||
CALL RESEIVE_POLU_BYTE ; ¢â®à®©
|
||
RET C
|
||
AND 0Fh
|
||
OR E
|
||
RET ; ¡ ©â ¯à¨ïâ
|
||
RESEIVE_POLU_BYTE: ; ¯à¨ïâì ¯®«®¢¨ã ¡ ©â ¢ …
|
||
LD A,#F0 ; ãáâ ®¢¨âì áâ à訥 ¡¨âë LPT ¤ â
|
||
OUT (Z84.PIO.Port_A.Data),A
|
||
LD BC,0 ; áç¥â稪 â ©¬- ãâ
|
||
WAIT_RES_1:
|
||
IN A,(KEMPSTON.PC_Link) ; ¯à®¢¥à¨âì ¡¨â 4 1 ¯à¨ £®â®¢®á⨠PC
|
||
BIT 4,A
|
||
JR NZ,CONTINUE_RES
|
||
DEC BC
|
||
LD A,B
|
||
OR C
|
||
JR NZ,WAIT_RES_1
|
||
XOR A
|
||
SCF ; â ©¬- ãâ
|
||
RET
|
||
CONTINUE_RES: ; PC - £®â®¢, ¦¤ âì 0
|
||
XOR A ; á¡à®á¨âì áâ à訥 ¡¨âë LPT - ¦¤¥¬ ¯®«ã¡ ©â
|
||
OUT (Z84.PIO.Port_A.Data),A
|
||
|
||
LD BC,0 ; áç¥â稪 â ©¬- ãâ
|
||
|
||
WAIT_RES_2:
|
||
IN A,(KEMPSTON.PC_Link) ; ¯à®¢¥à¨âì ¡¨â 4 0 - á®®¡é¥¨¥ ®â PC
|
||
BIT 4,A
|
||
JR Z,CONTINUE_RES2
|
||
DEC BC
|
||
LD A,B
|
||
OR C
|
||
JR NZ,WAIT_RES_2
|
||
LD A,#F0 ; ãáâ ®¢¨âì áâ à訥 ¡¨âë LPT ¤ â
|
||
OUT (Z84.PIO.Port_A.Data),A
|
||
SCF
|
||
RET ; ®è¨¡ª
|
||
CONTINUE_RES2: ; ¯®«ã¡ ©â ¢ëáâ ¢«¥
|
||
LOOP_EQ: ; ¯à®ç¨â âì ¥é¥ à §, çâ® ¡ë ᮢ¯ «®
|
||
AND #0F
|
||
LD B,A
|
||
IN A,(KEMPSTON.PC_Link)
|
||
AND #0F
|
||
CP B
|
||
JR NZ,LOOP_EQ
|
||
|
||
OR #F0 ; ãáâ ®¢¨âì áâ à訥 ¡¨âë LPT ¤ â ¢ 1 - ¯à¨ïâ®
|
||
OUT (Z84.PIO.Port_A.Data),A
|
||
RET
|
||
;----------------------------------------------------------------------;
|
||
;
|
||
|
||
;----------------------------------------------------------------------;
|
||
;**********************************
|
||
; START_DI:
|
||
; PUSH AF
|
||
; LD A,R
|
||
; LD A,#80
|
||
; JP PE,XX_DI2
|
||
; XOR A
|
||
; XX_DI2: LD R,A
|
||
; DI
|
||
; POP AF
|
||
; RET
|
||
;
|
||
; END_DI: PUSH AF
|
||
; LD A,R
|
||
; AND #80
|
||
; JR Z,XX_DI3
|
||
; EI
|
||
; POP AF ; PE
|
||
; RET
|
||
; XX_DI3: DI
|
||
; POP AF ; PO
|
||
; 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
|
||
;----------------------------------------------------------------------;
|
||
;----------------------------------------------------------------------;
|
||
|