SprinterESP/Sources/ESPLib/isa.asm
2024-07-01 20:39:19 +03:00

113 lines
2.2 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

; ======================================================
; ISA Library for Sprinter
; By Romych's, 2024 (c)
; ======================================================
PORT_ISA EQU 0x9FBD
PORT_SYSTEM EQU 0x1FFD
ISA_BASE_A EQU 0xC000 ; Базовый адрес портов ISA в памяти
; --- PORT_ISA bits
ISA_A14 EQU 0x01
ISA_A15 EQU 0x02
ISA_A16 EQU 0x04
ISA_A17 EQU 0x08
ISA_A18 EQU 0x10
ISA_A19 EQU 0x20
ISA_AEN EQU 0x40
ISA_RST EQU 0x80
MODULE ISA
; ------------------------------------------------------
; Reset ISA device
; ------------------------------------------------------
ISA_RESET
PUSH AF
PUSH BC
PUSH HL
LD BC, PORT_ISA
LD A,ISA_RST | ISA_AEN ; RESET=1 AEN=1
OUT (C), A
LD HL,2000
CALL UTIL.DELAY
XOR A
OUT (C), A ; RESET=0 AEN=0
ADD HL,HL
CALL UTIL.DELAY
POP HL
POP BC
POP AF
RET
; ------------------------------------------------------
; Open access to ISA ports as memory
; Inp: A = 0 - ISA slot 0, 1 - ISA SLOT 1
; ------------------------------------------------------
ISA_OPEN
PUSH AF,BC
LD BC, PAGE3
IN A,(C)
LD (SAVE_MMU3), A
LD BC, PORT_SYSTEM
LD A, 0x11
OUT (C), A
ISA_SLOT+* LD A,0x01
SLA A
OR A, 0xD4 ; D4 - ISA1, D6 - ISA2
LD BC, PAGE3
OUT (C), A
LD BC, PORT_ISA
XOR A
OUT (C), A
POP BC,AF
RET
; ------------------------------------------------------
; Close access to ISA ports
; ------------------------------------------------------
ISA_CLOSE
PUSH AF,BC
LD A,0x01
LD BC,PORT_SYSTEM
OUT (C),A
LD BC,PAGE3
LD A,(SAVE_MMU3)
OUT (C),A
POP BC,AF
RET
; DELAY_20
; ;IN A,(PAGE1)
; LD A, CTC_CR_VEC | CTC_CR_SWR ; stop timer
; OUT (CTC_CH1), A
; ; Init Ch2 CTC - clk source for Ch3
; LD A,CTC_CT_PRE | CTC_CR_TCF | CTC_CR_SWR | CTC_CR_VEC
; OUT (CTC_CH2), A
; LD A, 4
; ; TO2->TRG3 = 875kHz / 256 / 4 = 854,5 Hz
; OUT (CTC_CH2), A
; LD A, CTC_CT_EI | CTC_CT_CTR | CTC_CR_TCF | CTC_CR_SWR | CTC_CR_VEC
; OUT (CTC_CH3), A
; LD A, 17
; OUT (CTC_CH3), A
; it vector defined in bit 7­3,bit 2­1 don't care, bit 0 = 0
; and loaded into channel 0
; To save memory page 0
SAVE_MMU0 DB 0
; To save memory page 3
SAVE_MMU3 DB 0
; ALIGN 256,0
ENDMODULE