mirror of
https://github.com/romychs/SprinterESP.git
synced 2025-04-18 01:32:42 +03:00
113 lines
2.2 KiB
NASM
113 lines
2.2 KiB
NASM
; ======================================================
|
||
; 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 73,bit 21 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 |