675 lines
14 KiB
NASM
675 lines
14 KiB
NASM
;-----------------------------------------------------------------------;
|
||
; DATA FOR DCP
|
||
; ¢¡¨¢ ¥¬ ¢ â ¡«¨æã DCP.XLSX ã¦ë© ¢¥è¨© ¯®àâ,
|
||
; ᬮâਬ ᬥ饨¥ ¤«ï OUT (‘),x - íâ® ¤à¥á
|
||
;
|
||
;
|
||
; C C E D / A A A A A A A A A
|
||
; N N 1 O W 1 1 6 5 1 7 2 1 0
|
||
; F F 2 S R 5 4 3
|
||
; 1 0 8
|
||
;
|
||
; CCED/AAAAAAAAA
|
||
; NN1OW116517210
|
||
; FF2SR54 3
|
||
;DCP_DATA: 108
|
||
; ....0..11.1110
|
||
; WORD %00000001101110 ; - ¤à¥á
|
||
; WORD %00001001101111 ; - ¬ ᪠- 0 ¨§¬¥ï¥¬ë¥ ¡¨âë, 1 ¥¨§¬¥ï¥¬ë¥
|
||
; BYTE ACEX.Border_FE ; - ¯®àâ
|
||
|
||
; DCP END MARKER
|
||
; DW 0,0,0
|
||
;-----------------------------------------------------------------------;
|
||
;
|
||
;
|
||
;-----------------------------------------------------------------------;
|
||
DW %00'000'0'0000'0111
|
||
DW %00'010'0'0110'1111
|
||
DB ACEX.VG93_1F
|
||
DW %11'010'0'0000'0111
|
||
DW %11'010'0'0110'1111
|
||
DB ACEX.VG93_1F
|
||
|
||
DW %00'000'0'0010'0111
|
||
DW %00'010'0'0110'1111
|
||
DB ACEX.VG93_3F
|
||
DW %11'010'0'0010'0111
|
||
DW %11'010'0'0110'1111
|
||
DB ACEX.VG93_3F
|
||
|
||
DW %00'000'0'0100'0111
|
||
DW %00'010'0'0110'1111
|
||
DB ACEX.VG93_5F
|
||
DW %11'010'0'0100'0111
|
||
DW %11'010'0'0110'1111
|
||
DB ACEX.VG93_5F
|
||
|
||
DW %00'000'0'0110'0111
|
||
DW %00'010'0'0110'1111
|
||
DB ACEX.VG93_7F
|
||
DW %11'010'0'0110'0111
|
||
DW %11'010'0'0110'1111
|
||
DB ACEX.VG93_7F
|
||
|
||
DW %00'000'0'0110'1111
|
||
DW %00'011'0'0110'1111
|
||
DB ACEX.VG93_State
|
||
DW %11'010'0'0110'1111
|
||
DW %11'011'0'0110'1111
|
||
DB ACEX.VG93_State
|
||
; For joystick
|
||
DW %00'011'0'0000'0111
|
||
DW %10'011'0'0110'1111
|
||
DB ACEX.JOY_VG93
|
||
DW %10'011'0'0000'0111
|
||
DW %11'011'0'0110'1111
|
||
DB ACEX.JOY_VG93
|
||
|
||
; For VG93 with dos on
|
||
DW %00'001'0'0110'1111
|
||
DW %00'011'0'0110'1111
|
||
DB ACEX.JOY_VG93
|
||
|
||
; For VG93 with dos off
|
||
DW %11'011'0'0110'1111
|
||
DW %11'011'0'0110'1111
|
||
DB ACEX.JOY_VG93
|
||
|
||
DW %00'000'0'0010'1101
|
||
DW %11'011'1'1111'1111
|
||
DB ACEX.FDD720
|
||
DW %11'000'0'0010'1101
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.FDD720
|
||
|
||
DW %00'000'0'0011'1101
|
||
DW %11'011'1'1111'1111
|
||
DB ACEX.FDD144
|
||
DW %11'000'0'0011'1101
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.FDD144
|
||
|
||
;!FIXIT UNKNOWN PORTS--------------------------------------------------; dos on, ⮫쪮 ç¥à¥§ BC, ç⥨¥/§ ¯¨áì
|
||
DW %10'000'1'0010'1101
|
||
DW %11'010'1'1111'1111
|
||
DB #18
|
||
|
||
DW %10'000'1'0011'1101
|
||
DW %11'010'1'1111'1111
|
||
DB #19
|
||
|
||
DW %10'000'1'1010'1101
|
||
DW %11'010'1'1111'1111
|
||
DB #1A
|
||
;----------------------------------------------------------------------;
|
||
|
||
DW %00'000'1'0010'1101
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.ISA_CTRL
|
||
DW %10'000'1'1011'1101
|
||
DW %11'010'1'1111'1111
|
||
DB ACEX.ISA_CTRL
|
||
DW %11'000'1'0010'1101
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.ISA_CTRL
|
||
|
||
DW %00'001'1'0011'1101
|
||
DW %11'001'1'0111'1111
|
||
DB ACEX.CMOS_DATA.READ
|
||
DW %11'001'1'0011'1101
|
||
DW %11'001'1'0111'1111
|
||
DB ACEX.CMOS_DATA.READ
|
||
|
||
DW %00'000'1'1010'1101
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.CMOS_ADDR.WRITE
|
||
DW %11'000'1'1010'1101
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.CMOS_ADDR.WRITE
|
||
|
||
DW %00'000'1'0011'1101
|
||
DW %11'001'1'0111'1111
|
||
DB ACEX.CMOS_DATA.WRITE
|
||
DW %11'000'1'0011'1101
|
||
DW %11'001'1'0111'1111
|
||
DB ACEX.CMOS_DATA.WRITE
|
||
;
|
||
;---------HDD[v]
|
||
DW %00'000'0'0100'0000
|
||
DW %11'000'0'0110'1111
|
||
DB #20
|
||
DW %01'000'0'0100'0000
|
||
DW %11'010'0'0110'1111
|
||
DB #20
|
||
|
||
DW %10'000'0'0100'0000
|
||
DW %11'010'0'0110'1111
|
||
DB #20
|
||
DW %11'000'0'0100'0000
|
||
DW %11'000'0'0110'1111
|
||
DB #20
|
||
|
||
DW %00'000'0'0100'0001
|
||
DW %00'010'1'1110'1111
|
||
DB #21
|
||
DW %00'010'0'0100'0001
|
||
DW %11'010'1'1110'1111
|
||
DB #21
|
||
DW %11'010'0'0100'0001
|
||
DW %11'010'1'1110'1111
|
||
DB #21
|
||
|
||
DW %00'000'0'0100'0010
|
||
DW %00'010'1'1110'1111
|
||
DB #22
|
||
DW %00'010'0'0100'0010
|
||
DW %11'010'1'1110'1111
|
||
DB #22
|
||
DW %11'010'0'0100'0010
|
||
DW %11'010'1'1110'1111
|
||
DB #22
|
||
|
||
DW %00'000'0'0100'0011
|
||
DW %00'010'1'1110'1111
|
||
DB #23
|
||
DW %00'010'0'0100'0011
|
||
DW %11'010'1'1110'1111
|
||
DB #23
|
||
DW %11'010'0'0100'0011
|
||
DW %11'010'1'1110'1111
|
||
DB #23
|
||
|
||
DW %00'000'0'0100'0100
|
||
DW %00'010'1'1110'1111
|
||
DB #24
|
||
DW %00'010'0'0100'0100
|
||
DW %11'010'1'1110'1111
|
||
DB #24
|
||
DW %11'010'0'0100'0100
|
||
DW %11'010'1'1110'1111
|
||
DB #24
|
||
|
||
DW %00'000'0'0100'0101
|
||
DW %00'010'1'1110'1111
|
||
DB #25
|
||
DW %00'010'0'0100'0101
|
||
DW %11'010'1'1110'1111
|
||
DB #25
|
||
DW %11'010'0'0100'0101
|
||
DW %11'010'1'1110'1111
|
||
DB #25
|
||
|
||
DW %00'000'0'1100'0010
|
||
DW %00'010'1'1110'1111
|
||
DB #26
|
||
DW %00'010'0'1100'0010
|
||
DW %11'010'1'1110'1111
|
||
DB #26
|
||
DW %11'010'0'1100'0010
|
||
DW %11'010'1'1110'1111
|
||
DB #26
|
||
|
||
DW %00'000'0'1100'0011
|
||
DW %00'010'1'1110'1111
|
||
DB #27
|
||
DW %00'010'0'1100'0011
|
||
DW %11'010'1'1110'1111
|
||
DB #27
|
||
DW %11'010'0'1100'0011
|
||
DW %11'010'1'1110'1111
|
||
DB #27
|
||
;---------HDD[^]
|
||
;
|
||
DW %00'000'0'1100'0100
|
||
DW %00'010'1'1110'1111
|
||
DB ACEX.IDE_CONTROL_3F6
|
||
DW %00'010'0'1100'0100
|
||
DW %11'010'1'1110'1111
|
||
DB ACEX.IDE_CONTROL_3F6
|
||
DW %11'010'0'1100'0100
|
||
DW %11'010'1'1110'1111
|
||
DB ACEX.IDE_CONTROL_3F6
|
||
|
||
DW %00'000'0'1100'0101
|
||
DW %00'010'1'1110'1111
|
||
DB ACEX.IDE_STATUS_3F7
|
||
DW %00'010'0'1100'0101
|
||
DW %11'010'1'1110'1111
|
||
DB ACEX.IDE_STATUS_3F7
|
||
DW %11'010'0'1100'0101
|
||
DW %11'010'1'1110'1111
|
||
DB ACEX.IDE_STATUS_3F7
|
||
|
||
DW %00'000'0'0010'1100
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.IDE_CHANEL_1
|
||
DW %11'000'0'0010'1100
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.IDE_CHANEL_1
|
||
|
||
DW %00'000'0'0011'1100
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.IDE_CHANEL_2
|
||
DW %11'000'0'0011'1100
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.IDE_CHANEL_2
|
||
|
||
DW %00'000'0'1010'1101
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.VSYNC320
|
||
DW %11'000'0'1010'1101
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.VSYNC320
|
||
|
||
DW %00'000'0'1011'1101
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.VSYNC312
|
||
DW %11'000'0'1011'1101
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.VSYNC312
|
||
|
||
DW %00'000'0'1010'1100
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.RESET
|
||
DW %11'000'0'1010'1100
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.RESET
|
||
|
||
DW %00'000'0'1011'1100
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.UNKNOWN ;!FIXIT ¬®¦® ¯®ª ã¡à âì
|
||
DW %11'000'0'1011'1100
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.UNKNOWN ;!FIXIT ¬®¦® ¯®ª ã¡à âì
|
||
|
||
DW %00'010'0'0010'1011
|
||
DW %11'010'0'0110'1011
|
||
DB ACEX.ISA_Control ;!FIXIT ¬®¦® ¯®ª ã¡à âì ???
|
||
|
||
DW %00'011'0'0110'1110
|
||
DW %10'011'0'0110'1111
|
||
DB ACEX.ZX_Keyboard
|
||
DW %10'011'0'0110'1110
|
||
DW %11'011'0'0110'1111
|
||
DB ACEX.ZX_Keyboard
|
||
|
||
DW %00'001'1'1111'1101
|
||
DW %00'001'1'1111'1111
|
||
DB ACEX.AY_FFFD_READ
|
||
|
||
DW %00'001'1'1101'1111
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.Kempston_Mouse
|
||
DW %11'001'1'1101'1111
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.Kempston_Mouse
|
||
|
||
DW %00'011'0'0110'0011
|
||
DW %11'011'0'0110'1111
|
||
DB ACEX.CBL_OUT
|
||
DW %01'010'0'0110'0011
|
||
DW %11'010'0'0110'1111
|
||
DB ACEX.CBL_OUT
|
||
DW %10'010'0'0110'0011
|
||
DW %11'010'0'0110'1111
|
||
DB ACEX.CBL_OUT
|
||
DW %00'010'0'0000'0111
|
||
DW %11'011'0'0000'1111
|
||
DB ACEX.CBL_OUT
|
||
DW %00'011'0'0000'1000
|
||
DW %11'011'0'0110'1111
|
||
DB ACEX.CBL_OUT
|
||
DW %00'010'0'0110'1011
|
||
DW %10'010'0'0110'1111
|
||
DB ACEX.CBL_OUT
|
||
DW %10'010'0'0110'1011
|
||
DW %11'010'0'0110'1111
|
||
DB ACEX.CBL_OUT
|
||
|
||
DW %00'000'0'0100'0110
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.CBL_SYS_PORT
|
||
DW %11'000'0'0100'0110
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.CBL_SYS_PORT
|
||
|
||
DW %00'000'1'1111'1101
|
||
DW %00'001'1'1111'1111
|
||
DB ACEX.AY_FFFD_WRITE
|
||
|
||
DW %00'000'1'0111'1101
|
||
DW %00'001'1'1111'1111
|
||
DB ACEX.AY_BFFD
|
||
|
||
DW %00'000'0'0110'1101
|
||
DW %10'000'1'1111'1111
|
||
DB ACEX.Scorp_1FFD
|
||
DW %11'000'0'0110'1101
|
||
DW %11'000'1'1111'1111
|
||
DB ACEX.Scorp_1FFD
|
||
|
||
DW %00'000'0'1110'1101
|
||
DW %00'100'1'1110'1111
|
||
DB ACEX.Pent_7FFD
|
||
DW %00'100'0'1110'1101
|
||
DW %11'110'1'1110'1111
|
||
DB ACEX.Pent_7FFD
|
||
DW %11'100'0'1110'1101
|
||
DW %11'100'1'1110'1111
|
||
DB ACEX.Pent_7FFD
|
||
DW %10'000'0'0110'1101
|
||
DW %11'100'1'1110'1111
|
||
DB ACEX.Pent_7FFD
|
||
|
||
DW %00'000'0'0110'1110
|
||
DW %00'001'0'0110'1111
|
||
DB ACEX.Border_FE
|
||
|
||
DW %00'000'0'0101'0110
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.ALL_MODE
|
||
DW %11'000'0'0101'0110
|
||
DW %11'001'1'1111'1111
|
||
DB ACEX.ALL_MODE
|
||
|
||
DW %00'000'0'0000'1001
|
||
DW %00'010'0'0110'1111
|
||
DB ACEX.PORT_Y
|
||
DW %00'010'0'0000'1001
|
||
DW %11'010'0'0110'1111
|
||
DB ACEX.PORT_Y
|
||
DW %11'010'0'0000'1001
|
||
DW %11'010'0'0110'1111
|
||
DB ACEX.PORT_Y
|
||
|
||
DW %00'000'0'0100'1001
|
||
DW %00'010'0'0110'1111
|
||
DB ACEX.RGMOD
|
||
DW %00'010'0'0100'1001
|
||
DW %11'010'0'0110'1111
|
||
DB ACEX.RGMOD
|
||
DW %11'010'0'0100'1001
|
||
DW %11'010'0'0110'1111
|
||
DB ACEX.RGMOD
|
||
|
||
DW %00'000'0'0010'0100
|
||
DW %00'000'0'0010'1111
|
||
DB ACEX.CNF_PORT
|
||
|
||
;!FIXIT ¬®¦® ã¡à âì
|
||
DW %00'000'0'0110'1100
|
||
DW %11'001'0'0110'1111
|
||
DB ACEX.SCALE
|
||
DW %11'000'0'0110'1100
|
||
DW %11'001'0'0110'1111
|
||
DB ACEX.SCALE
|
||
|
||
|
||
DW %00'000'0'0000'1010
|
||
DW %00'010'0'0110'1111
|
||
DB ACEX.SLOT0
|
||
DW %00'010'0'0000'1010
|
||
DW %11'010'0'0110'1111
|
||
DB ACEX.SLOT0
|
||
DW %11'010'0'0000'1010
|
||
DW %11'010'0'0110'1111
|
||
DB ACEX.SLOT0
|
||
|
||
DW %00'000'0'0010'1010
|
||
DW %00'010'0'0110'1111
|
||
DB ACEX.SLOT1
|
||
DW %00'010'0'0010'1010
|
||
DW %11'010'0'0110'1111
|
||
DB ACEX.SLOT1
|
||
DW %11'010'0'0010'1010
|
||
DW %11'010'0'0110'1111
|
||
DB ACEX.SLOT1
|
||
|
||
DW %00'000'0'0100'1010
|
||
DW %00'010'0'0110'1111
|
||
DB ACEX.SLOT2
|
||
DW %00'010'0'0100'1010
|
||
DW %11'010'0'0110'1111
|
||
DB ACEX.SLOT2
|
||
DW %11'010'0'0100'1010
|
||
DW %11'010'0'0110'1111
|
||
DB ACEX.SLOT2
|
||
|
||
DW %00'000'0'0110'1010
|
||
DW %00'010'0'0110'1111
|
||
DB ACEX.SLOT3
|
||
DW %00'010'0'0110'1010
|
||
DW %11'010'0'0110'1111
|
||
DB ACEX.SLOT3
|
||
DW %11'010'0'0110'1010
|
||
DW %11'010'0'0110'1111
|
||
DB ACEX.SLOT3
|
||
; DCP END MARKER
|
||
DW 0,0,0
|
||
;-----------------------------------------------------------------------;
|
||
;
|
||
|
||
;
|
||
;----------------------------------------------------------------------;
|
||
DCP_INIT:
|
||
LD C,XL
|
||
LD B,XH
|
||
LD E,YL
|
||
LD D,YH
|
||
EXX
|
||
|
||
LD HL,#C000
|
||
LD DE,#C001
|
||
LD BC,#3FFF
|
||
LD (HL),L
|
||
LDIR
|
||
|
||
LD IY,DCP_DATA
|
||
LD IX,.ret
|
||
|
||
.loop: LD L,(IY)
|
||
LD H,(IY+1)
|
||
LD E,(IY+2)
|
||
LD D,(IY+3)
|
||
LD B,(IY+4)
|
||
JP DCP_CONFIG.PARSE_TABLE
|
||
|
||
.ret: LD BC,5
|
||
ADD IY,BC
|
||
LD A,(IY+2)
|
||
OR (IY+3)
|
||
JR NZ,.loop
|
||
|
||
EXX
|
||
LD XL,C
|
||
LD XH,B
|
||
LD YL,E
|
||
LD YH,D
|
||
|
||
; First IN command - OPEN DCP
|
||
IN A,(SLOT3)
|
||
JP (HL)
|
||
;-----------------------------------------------------------------------;
|
||
;
|
||
|
||
;
|
||
;-----------------------------------------------------------------------;
|
||
; ”ãªæ¨ï ¤¥è¨äà â®à ¯®à⮢.
|
||
; HL - ¤à¥á
|
||
; DE - ¬ ᪠- 0 ¨§¬¥ï¥¬ë¥ ¡¨âë, 1 ¥¨§¬¥ï¥¬ë¥
|
||
; B - ¯®àâ
|
||
;
|
||
DCP_CONFIG:
|
||
AND A
|
||
JP Z,PORTS_INIT
|
||
|
||
LD A,R
|
||
DI
|
||
PUSH AF
|
||
|
||
PUSH IX
|
||
LD IX,.exit
|
||
|
||
IN A,(SLOT3)
|
||
EX AF,AF'
|
||
LD A,DCP_PAGE
|
||
OUT (SLOT3),A
|
||
|
||
JR .PARSE_TABLE
|
||
|
||
.exit: EX AF,AF'
|
||
OUT (SLOT3),A
|
||
AND A
|
||
POP IX
|
||
POP AF
|
||
RET PO
|
||
EI
|
||
RET
|
||
|
||
.PARSE_TABLE:
|
||
LD A,L
|
||
AND E
|
||
LD L,A
|
||
|
||
LD A,H
|
||
AND D
|
||
OR #C0
|
||
LD H,A
|
||
|
||
LD A,D
|
||
OR #C0
|
||
LD D,A
|
||
|
||
.loop: LD (HL),B
|
||
|
||
LD A,L ; § ¬ ᪨஢ âì ¥¨§¬¥ï¥¬ë¥ ¡¨âë 1-¬¨
|
||
OR E ; ¤«ï ¯à®å®¦¤¥¨ï ¯¥à¥®á
|
||
INC A ; 㢥«¨ç¨âì ¤à¥á
|
||
JR Z,.carry ; ¢®§¨ª ¯¥à¥®á
|
||
|
||
OR E
|
||
XOR E ; ®¡ã«¨âì ¥¨§¬¥ï¥¬ë¥ ¡¨âë
|
||
LD C,A ; ¨§¬¥ï¥¬ ï ç áâì
|
||
|
||
LD A,L
|
||
AND E ; ¢ë¤¥«¨âì ¥¨§¬¥ï¥¬ãî
|
||
OR C
|
||
LD L,A ; ¤®¡ ¢¨âì ¨§¬¥ï¥¬ãî ç áâì
|
||
|
||
JR .loop ; 横«
|
||
; A = 0
|
||
.carry: LD A,L ; § ¡¨âì ¨§¬¥ï¥¬ë¥ ¡¨âë ã«ï¬¨
|
||
AND E
|
||
LD L,A
|
||
|
||
LD A,H ; § ¬ ᪨஢ âì ¥¨§¬¥ï¥¬ë¥ ¡¨âë 1-¬¨
|
||
OR D ; ¤«ï ¯à®å®¦¤¥¨ï ¯¥à¥®á
|
||
INC A ; 㢥«¨ç¨âì ¤à¥á
|
||
JR Z,.return
|
||
|
||
OR D
|
||
XOR D
|
||
LD C,A ; ¨§¬¥ï¥¬ ï ç áâì
|
||
|
||
LD A,H
|
||
AND D ; ¢ë¤¥«¨âì ¥¨§¬¥ï¥¬ãî
|
||
OR C
|
||
LD H,A ; ¤®¡ ¢¨âì ¨§¬¥ï¥¬ãî ç áâì
|
||
JR .loop
|
||
|
||
.return: JP (IX)
|
||
;-----------------------------------------------------------------------;
|
||
;
|
||
|
||
;----------------------------------------------------------------------;
|
||
;[x] 26/01/2024
|
||
READ_PORTS:
|
||
CALL SET_PORTS.Prepare
|
||
LD BC,0
|
||
IN B,(C)
|
||
JR SET_PORTS.End
|
||
|
||
;[x] 26/01/2024
|
||
; WRITE_PORTS:
|
||
; SCF
|
||
; RET
|
||
;----------------------------------------------------------------------;
|
||
|
||
;
|
||
;-----------------------------------------------------------------------;
|
||
;[x] ’¥¯¥àì íâ® ¥ 㦮: CALL from 3D13h! Žáâ®à®¦¥¥ á ¯à¥àë¢ ¨ï¬¨, «ãçè¥ £ á¨âì, ç⮡ ¥ ᡨâì ᨣ « DOS_ON
|
||
; in: A - ¢ãâ२© ¯®àâ, B - § 票¥ ¤«ï § ¯¨á¨ ¢® ¢ãâ२© ¯®àâ
|
||
; out: B - áâ ஥ § 票¥ ¢ãâ॥£® ¯®àâ ; <20>¥à¥¤ ¢ë室®¬ ¢®ááâ ¢«¨¢ ¥âáï ª®ä ¯à®¯¨á ï ¢ CONFIG_DE.
|
||
SET_PORTS:
|
||
CALL .Prepare
|
||
;
|
||
EX AF,AF'
|
||
LD A,B
|
||
LD BC,0
|
||
EX AF,AF'
|
||
;
|
||
; —⥨¥ ¯®àâ
|
||
IN A,(C)
|
||
; ‡ ¯¨áì ¯®àâ
|
||
EX AF,AF'
|
||
OUT (C),A ; ãáâ ®¢¨âì ®¢®¥ § 票¥ ¯®àâ
|
||
EX AF,AF'
|
||
;
|
||
LD B,A ; ¯à®è«®¥ á®áâ®ï¨¥ ¯®àâ
|
||
;
|
||
.End: LD A,DCP_PAGE ; ãáâ ®¢¨âì DCP
|
||
LD C,SLOT2
|
||
OUT (C),A
|
||
LD A,L
|
||
LD (#8000),A ; ¢¥àãâì ¯®àâ
|
||
LD A,H
|
||
LD (#8200),A ; ¢¥àãâì ¯®àâ
|
||
;
|
||
LD A,SYS_PAGE
|
||
OUT (C),A
|
||
LD A,(SYS_PAGE.CONFIG_DE-#4000)
|
||
OUT (C),D ; ¢¥àãâì áâà ¨æã
|
||
OUT (SYS_PORT.ROM),A
|
||
;
|
||
CALL DOS_OFF
|
||
;
|
||
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
|
||
BIT 2,E
|
||
RET Z
|
||
EI
|
||
RET
|
||
;AND A
|
||
;RET
|
||
;
|
||
.Prepare:
|
||
EX AF,AF'
|
||
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
|
||
AND A
|
||
LD A,R
|
||
PUSH AF
|
||
POP DE
|
||
DI
|
||
CALL DOS_ON
|
||
;
|
||
LD A,CNF_PORT.CNF_0 + ROM.BIOS
|
||
OUT (SYS_PORT.ROM),A
|
||
;
|
||
LD C,SLOT2 ; ¯®«ãç¨âì áâà ¨æã
|
||
IN D,(C)
|
||
;
|
||
LD A,DCP_PAGE ; ãáâ ®¢¨âì ®¢ãî
|
||
OUT (C),A
|
||
;
|
||
LD A,(#8000) ; á®åà ¨âì â® çâ® ¡ë«®
|
||
LD L,A
|
||
LD A,(#8200)
|
||
LD H,A
|
||
EX AF,AF' ; áâà ¨æ
|
||
;
|
||
LD (#8000),A ; ãáâ ®¢¨âì ¢ãâ२© ¯®àâ
|
||
LD (#8200),A
|
||
OUT (C),D ; ¢¥àãâì áâà ¨æã
|
||
RET
|
||
;-----------------------------------------------------------------------;
|
||
; |