mirror of
https://github.com/Tolik-Trek/Sprinter-BIOS.git
synced 2026-11-10 11:23:11 +03:00
688 lines
15 KiB
NASM
688 lines
15 KiB
NASM
;-----------------------------------------------------------------------;
|
|
; DATA FOR DCPCollision between port #1F and CBL port fix
|
|
; ˘ˇ¨˘ Ą¬ ˘ â ˇ«¨ćă 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
|
|
; 108
|
|
;DCP_DATA: ....0..11.1110
|
|
; WORD %00000001101110 ; - b13..12 cnf, b11 Lock48, b10 dos, b9 r/w, b8..0 ¤ŕĄá
|
|
; WORD %00001001101111 ; - ¬ ᪠- 0 ¨§¬ĄďĄ¬ëĄ ˇ¨âë, 1 Ą¨§¬ĄďĄ¬ëĄ
|
|
; BYTE ACEX.Border_FE ; - Ż®ŕâ
|
|
|
|
;-----------------------------------------------------------------------;
|
|
;
|
|
.RECORD.Size EQU 5
|
|
;-----------------------------------------------------------------------;
|
|
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 ( Z84? ) ----------------------------------------; 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 ACEX.IDE_DATA_1F0
|
|
DW %01'000'0'0100'0000
|
|
DW %11'010'0'0110'1111
|
|
DB ACEX.IDE_DATA_1F0
|
|
DW %10'000'0'0100'0000
|
|
DW %11'010'0'0110'1111
|
|
DB ACEX.IDE_DATA_1F0
|
|
DW %11'000'0'0100'0000
|
|
DW %11'000'0'0110'1111
|
|
DB ACEX.IDE_DATA_1F0
|
|
|
|
DW %00'000'0'0100'0001
|
|
DW %00'010'1'1110'1111
|
|
DB ACEX.IDE_ERROR_1F1
|
|
DW %00'010'0'0100'0001
|
|
DW %11'010'1'1110'1111
|
|
DB ACEX.IDE_ERROR_1F1
|
|
DW %11'010'0'0100'0001
|
|
DW %11'010'1'1110'1111
|
|
DB ACEX.IDE_ERROR_1F1
|
|
|
|
DW %00'000'0'0100'0010
|
|
DW %00'010'1'1110'1111
|
|
DB ACEX.IDE_COUNTER_1F2
|
|
DW %00'010'0'0100'0010
|
|
DW %11'010'1'1110'1111
|
|
DB ACEX.IDE_COUNTER_1F2
|
|
DW %11'010'0'0100'0010
|
|
DW %11'010'1'1110'1111
|
|
DB ACEX.IDE_COUNTER_1F2
|
|
|
|
DW %00'000'0'0100'0011
|
|
DW %00'010'1'1110'1111
|
|
DB ACEX.IDE_SECTOR_1F3
|
|
DW %00'010'0'0100'0011
|
|
DW %11'010'1'1110'1111
|
|
DB ACEX.IDE_SECTOR_1F3
|
|
DW %11'010'0'0100'0011
|
|
DW %11'010'1'1110'1111
|
|
DB ACEX.IDE_SECTOR_1F3
|
|
|
|
DW %00'000'0'0100'0100
|
|
DW %00'010'1'1110'1111
|
|
DB ACEX.IDE_CYLINDER_L_1F4
|
|
DW %00'010'0'0100'0100
|
|
DW %11'010'1'1110'1111
|
|
DB ACEX.IDE_CYLINDER_L_1F4
|
|
DW %11'010'0'0100'0100
|
|
DW %11'010'1'1110'1111
|
|
DB ACEX.IDE_CYLINDER_L_1F4
|
|
|
|
DW %00'000'0'0100'0101
|
|
DW %00'010'1'1110'1111
|
|
DB ACEX.IDE_CYLINDER_H_1F5
|
|
DW %00'010'0'0100'0101
|
|
DW %11'010'1'1110'1111
|
|
DB ACEX.IDE_CYLINDER_H_1F5
|
|
DW %11'010'0'0100'0101
|
|
DW %11'010'1'1110'1111
|
|
DB ACEX.IDE_CYLINDER_H_1F5
|
|
|
|
DW %00'000'0'1100'0010
|
|
DW %00'010'1'1110'1111
|
|
DB ACEX.IDE_DEVICE_HEAD_1F6
|
|
DW %00'010'0'1100'0010
|
|
DW %11'010'1'1110'1111
|
|
DB ACEX.IDE_DEVICE_HEAD_1F6
|
|
DW %11'010'0'1100'0010
|
|
DW %11'010'1'1110'1111
|
|
DB ACEX.IDE_DEVICE_HEAD_1F6
|
|
|
|
DW %00'000'0'1100'0011
|
|
DW %00'010'1'1110'1111
|
|
DB ACEX.IDE_STATUS_CMD_1F7
|
|
DW %00'010'0'1100'0011
|
|
DW %11'010'1'1110'1111
|
|
DB ACEX.IDE_STATUS_CMD_1F7
|
|
DW %11'010'0'1100'0011
|
|
DW %11'010'1'1110'1111
|
|
DB ACEX.IDE_STATUS_CMD_1F7
|
|
;---------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
|
|
|
|
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
|
|
|
|
|
|
;-1F 0001 1111 x00x 0111
|
|
; 3F 0011 1111 x01x 0111
|
|
; 4F 0100 1111 x10x 0111
|
|
; 5F 0101 1111 x10x 0111
|
|
;+DF 1101 1111 x10x 1111 drum
|
|
; DD 1101 1101 x10x 1101 scorp
|
|
; FB 1111 1011 x11x 1011
|
|
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 %10'010'0'0110'1011
|
|
DW %11'010'0'0110'1111
|
|
DB ACEX.CBL_OUT
|
|
; [x] Collision between ports #1F and CBL fix
|
|
; DW %00'010'0'0000'0111
|
|
; DW %11'011'0'0000'1111
|
|
; DB ACEX.CBL_OUT
|
|
DW %00'010'0'0010'0111
|
|
DW %11'011'0'0010'1111
|
|
DB ACEX.CBL_OUT
|
|
DW %00'010'0'0100'0111
|
|
DW %11'011'0'0100'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 %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'000'1'1111'1111
|
|
DB ACEX.ALL_MODE
|
|
DW %11'000'0'0101'0110
|
|
DW %11'000'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
|
|
|
|
;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
|
|
;-----------------------------------------------------------------------;
|
|
;
|
|
|
|
;
|
|
;----------------------------------------------------------------------;
|
|
; ˘ë§ë˘ Ąâáď ¨§ POST_TEST.POST_3_INIT_DCP
|
|
DCP_INIT: LD E,YL
|
|
LD D,YH
|
|
EX DE,HL
|
|
LD E,XL
|
|
LD D,XH
|
|
;
|
|
LD BC,DCP_DATA.RECORD.Size
|
|
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: EXX
|
|
ADD IY,BC
|
|
EXX
|
|
LD A,(IY+2)
|
|
OR (IY+3)
|
|
JR NZ,.loop
|
|
EXX
|
|
LD XL,E
|
|
LD XH,D
|
|
EX DE,HL
|
|
LD YL,E
|
|
LD YH,D
|
|
|
|
; First IN command - OPEN DCP
|
|
IN A,(SLOT3)
|
|
JP POST_TEST.POST_3_OK
|
|
;-----------------------------------------------------------------------;
|
|
;
|
|
|
|
;
|
|
;-----------------------------------------------------------------------;
|
|
; ”ăŞć¨ď ¤Ąč¨äŕ â®ŕ Ż®ŕ⮢.
|
|
; 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 - áâ ஥ § 票Ą ˘ăâŕĄĄŁ® Ż®ŕâ ; ŹĄŕĄ¤ ˘ë室®¬ ˘®ááâ ˘«¨˘ Ąâáď Ş®ä Żŕ®Ż¨á ď ˘ 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
|
|
;-----------------------------------------------------------------------;
|
|
; |