mirror of
https://github.com/Tolik-Trek/Sprinter-BIOS.git
synced 2026-06-15 01:11:47 +03:00
238 lines
4.8 KiB
NASM
238 lines
4.8 KiB
NASM
; DISPLAY "Service"
|
||
; !FIXIT âãâ ¬®¦®, ¯®å®¤ã, ¤®åॠã¡à âì
|
||
|
||
; áâà ¨æë á ª®ä®© ¤«ï Sp97, ¤«ï ᮢ¬¥á⨬®áâ¨ á ¤à¥¢¨¬¨ ¯à®£ ¬¨
|
||
PG_SP1 equ #EC
|
||
PG_SP2 equ #EE
|
||
PG_AY equ #EA
|
||
;
|
||
|
||
;!TODO § ¬ãâ¨âì § «¨¢ªã ª®äë, à¥áâ àâ, ¯¥à¥å¢ â à¥á¥â ᨫ ¬¨ BIOS
|
||
PG_Sp2000 EQU #FE
|
||
;
|
||
RST_CONF:
|
||
;--[] ZX Spectrum
|
||
.AY8910:
|
||
LD D,#35 ;!HARDCODE ¢ëïá¨âì § çâ® à ìè¥ íâ ï祩ª ¢ ª¬®á ®â¢¥ç « . ¯®å®¦¥ åà ¥¨¥ § 票ï Port_All_Mode ¨«¨ CONFIG_DE+1
|
||
CALL CMOS_RD
|
||
OR 1
|
||
CALL CMOS_WR
|
||
|
||
LD BC,Port_All_Mode
|
||
IN A,(C)
|
||
AND #FE ;!HARDCODE
|
||
OUT (C),A ; ACC_OFF
|
||
|
||
LD A,PG_AY
|
||
|
||
LD DE,#FFFC
|
||
JR .INT_PLD
|
||
;--[]
|
||
|
||
;--[] Sprinter ZX
|
||
.SP97_1:
|
||
LD D,#35 ;!HARDCODE ¢ëïá¨âì § çâ® à ìè¥ íâ ï祩ª ¢ ª¬®á ®â¢¥ç « . ¯®å®¦¥ åà ¥¨¥ § 票ï Port_All_Mode ¨«¨ CONFIG_DE+1
|
||
CALL CMOS_RD
|
||
AND #FE
|
||
CALL CMOS_WR
|
||
|
||
LD BC,Port_All_Mode
|
||
IN A,(C)
|
||
AND #FE ;!HARDCODE
|
||
OUT (C),A ; ACC_OFF
|
||
|
||
LD A,PG_SP1
|
||
LD DE,#FFFE ;!HARDCODE
|
||
JR .INT_PLD
|
||
;--[]
|
||
|
||
;--[]
|
||
.SP97_2:
|
||
LD BC,Port_All_Mode
|
||
IN A,(C)
|
||
OR 1 ; ACC_ON
|
||
OUT (C),A
|
||
LD A,PG_SP2
|
||
LD DE,#FFFD ;!HARDCODE
|
||
JR .INT_PLD
|
||
;--[]
|
||
|
||
;--[]
|
||
.CUSTOM:
|
||
CP #80
|
||
JR NC,.CHOOSE_CNF
|
||
; only for old FLEX10K soft compatible
|
||
LD C,SLOT3
|
||
IN B,(C)
|
||
OUT (C),A ; PAGE á ¯à®è¨¢ª®©
|
||
LD DE,(#C090) ; PLD-ID
|
||
OUT (C),B ; RET page
|
||
;--[] ;JR INT_PLD
|
||
.INT_PLD: ; only for old FLEX10K soft compatible
|
||
LD C,SLOT3
|
||
IN B,(C)
|
||
LD A,SYS_PAGE
|
||
OUT (C),A
|
||
LD (SYS_PAGE.CONFIG_BYTE),DE
|
||
OUT (C),B
|
||
|
||
LD A,E ; config-byte
|
||
CP #FF
|
||
LD A,128
|
||
JR Z,.YES_CBL
|
||
XOR A
|
||
.YES_CBL:
|
||
LD BC,CBL.SYS_PORT
|
||
OUT (C),A
|
||
|
||
LD A,E ; config-byte
|
||
|
||
OR #FE ;!HARDCODE
|
||
LD BC,Port_All_Mode ; SYSTEM Spectrum/Sprinter
|
||
OUT (C),A
|
||
|
||
LD A,#3C
|
||
OUT (FDC_93.DrvCTRL),A
|
||
|
||
XOR A
|
||
RET
|
||
|
||
.CHOOSE_CNF:
|
||
;!TEST
|
||
CP PG_Sp2000
|
||
LD DE,SP2000_ConfID
|
||
JR Z,.INIT_ACEX
|
||
;
|
||
|
||
; only for old FLEX10K soft compatible
|
||
CP PG_SP1
|
||
LD DE,#FFFE ;!HARDCODE
|
||
JR Z,.INT_PLD
|
||
CP PG_SP2
|
||
LD DE,#FFFD
|
||
JR Z,.INT_PLD
|
||
CP PG_AY
|
||
LD DE,#FFFC
|
||
JR Z,.INT_PLD
|
||
SCF
|
||
RET
|
||
|
||
.INIT_ACEX:
|
||
; .. ... ... ..
|
||
;!TODO ᤥ« âì äãªæ¨î ¯® § «¨¢ª¥ ᢮¥© ª®äë, ¯¥à¥å¢ âã à¥á¥â .
|
||
; .. ... ... ..
|
||
LD BC,256*BIOS.REINIT.HARD_RESET + BIOS.REINIT
|
||
JP_to_BIOS
|
||
|
||
;***************************************
|
||
|
||
;!TEST
|
||
;--------------------------[;!TODO ¯®â¥áâ¨âì]--------------------------;
|
||
; B - ¯ à ¬¥âà á¡à®á
|
||
; B = 1 - RESTART.
|
||
; B = 2 - Soft reset
|
||
; B = 3 - Hard reset
|
||
; B = 4 - Reinit spectrum pages
|
||
REINIT: DEC B
|
||
JR Z,.Restart ;1
|
||
DEC B
|
||
JR Z,.SoftReset ;2
|
||
DEC B
|
||
JR Z,.HardReset ;3
|
||
DEC B
|
||
SCF
|
||
RET NZ
|
||
.ReinitZXpages: ;4
|
||
LD DE,RESERVED_PAGES ; â ¡«¨æ § ïâëå á¨á⥬ëå áâà ¨æ
|
||
LD HL,SYS_PAGE.RAMD_FAT ; €¤à¥á FAT އ“.
|
||
|
||
LD C,SLOT3
|
||
IN B,(C)
|
||
LD A,SYS_PAGE
|
||
OUT (SLOT3),A
|
||
|
||
LD A,(DE)
|
||
.zxloop:
|
||
CP #FF
|
||
JR Z,.endzxloop
|
||
INC DE
|
||
LD L,A
|
||
|
||
LD A,(HL)
|
||
AND A
|
||
JR NZ,.errorzxloop
|
||
|
||
LD A,(DE)
|
||
LD (HL),A
|
||
JR .zxloop
|
||
|
||
.errorzxloop:
|
||
DEC DE
|
||
LD HL,-RESERVED_PAGES-1
|
||
ADD HL,DE
|
||
JR NC,.errorzxloop_noChanges
|
||
|
||
DEC DE
|
||
LD H,high SYS_PAGE.RAMD_FAT
|
||
LD A,(DE)
|
||
LD L,A
|
||
LD A,#FF
|
||
LD (HL),A
|
||
.errorzxloop_noChanges:
|
||
SCF
|
||
.endzxloop:
|
||
OUT (C),B
|
||
RET
|
||
;
|
||
|
||
;!TEST
|
||
.HardReset:
|
||
DI
|
||
LD A,DCP_PAGE
|
||
OUT (SLOT1),A ; set DCP page
|
||
LD A,ACEX.RESET
|
||
LD (#4400),A ; open for WR
|
||
.loop: LD BC,#0100 ; 横« á¡à®á
|
||
OUT (C),C
|
||
LD BC,0
|
||
OUT (C),C
|
||
JR .loop ; ¯®«®áâìî § 横«¨âì!
|
||
;
|
||
|
||
;!TEST
|
||
.Restart:
|
||
DI
|
||
LD A,0
|
||
LD BC,#1FFD
|
||
OUT (C),A
|
||
LD B,#7F
|
||
OUT (C),A
|
||
LD A,#40
|
||
OUT (SLOT3),A
|
||
LD A,5
|
||
OUT (SLOT1),A
|
||
LD A,2
|
||
OUT (SLOT3),A
|
||
LD A,0
|
||
OUT (SLOT0),A
|
||
OUT (RGADR),A
|
||
OUT (RGMOD),A
|
||
JP 0 ;Restart
|
||
;
|
||
|
||
;
|
||
.SoftReset:
|
||
DI
|
||
LD A,#10
|
||
LD BC,#1FFD
|
||
OUT (C),A ; 8-ï áâà ¨æ !!
|
||
|
||
LD A,RESET_PAGE
|
||
OUT (SLOT3),A
|
||
LD A,CNF_PORT.TURBO.OFF
|
||
OUT (SYS_PORT.ROM),A
|
||
.loop2: LD (#C000),A ; Soft RESET !!!
|
||
JR .loop2
|
||
;
|
||
;----------------------------------------------------------------------;
|
||
; |