Estex-DSS/DSS/first_init.asm
2025-10-30 23:25:12 +10:00

117 lines
2.7 KiB
NASM
Raw Permalink 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.

;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
; § âàñâáï ¯®á«¥ ¨­¨æ¨ «¨§ æ¨¨
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
; <20>¥à¢ë© áâ àâ á¨á⥬ë, ¯®á«¥ ¨­¨æ¨ «¨§ æ¨¨  ¤à¥á ¢ â ¡«¨æ¥ ¬¥­ï¥âáï ­  VERSION
;-----------------------------------------------------------------------;
F_START: DI
; § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£®
LD H,A
LD (.saveDRV),HL ; H - ­®¬¥à ãáâனá⢠, L - ­®¬¥à à §¤¥«  ­  ãáâனá⢥
;
LD HL,0 ; ¯¨á âì ¢ ­¨ªã¤ 
LD C,BIOS.FN_VERSION
RST ToBIOS
JR C,.err_oldBIOS
EX DE,HL
LD DE,MINIMUM_BIOS_VERSION
SBC HL,DE
JR C,.err_oldBIOS
;
.good: CALL DEPLOY ;íâ  ¯à®æ¥¤ãà  § âàñâáï ¯®á«¥ ¨á¯®«­¥­¨ï
RET C
CALL KEYBOARD_INIT
CALL PRINT_INIT
LD C,Dss.Mouse.Init
RST ToDSS.Mouse
LD A,(VMODE)
LD C,Dss.Mouse.SetVideoMode
RST ToDSS.Mouse
;
LD C,Dss.DRV.Init
RST ToDSS.DRV
LD (LDRIVE),A
; § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£®
.saveDRV+1: LD HL,0 ; H - ­®¬¥à ãáâனá⢠, L - ­®¬¥à à §¤¥«  ­  ãáâனá⢥
CALL BOOTDSK.SET
RET C
;
EI
;Set new address fn. VERSION
LD HL,DSS_API_TABLE
LD (HL),low VERSION
INC H
LD (HL),high VERSION
JP CLEAR_BUFFER_AND_INIT_PROC
;
.err_oldBIOS: IN A,(SLOT0)
OUT (SLOT3),A
LD HL,.err_oldBIOS_message + SLOT3.MEM_ADDR
CALL PCHARS
SCF
RET
.err_oldBIOS_message:
DB "\r\nWARNING! This version of DSS requires BIOS v"
DB STR_MINIMUM_BIOS_VERSION
DZ " or later to boot from IDE."
;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
DEPLOY: ;Allocate memory
LD BC,USING_MEMPAGES*256 + BIOS.GetMem
RST ToBIOS
RET C
LD C,A
;
IN A,(SLOT3)
PUSH AF
IN A,(SLOT0)
LD (DRV_CONTENT + DRIVES_DRIVER.DRV_PAGE.MAIN_PAGE_NUMBER),A
OUT (SLOT3),A
;
LD A,C
LD HL,BANKTBL + #C000
LD C,BIOS.GetMemBlkPages
RST ToBIOS
; ¤®«¦­  ¨¤â¨ ¯®á«¥ GetMemBlkPages, ç⮡ ¢¬¥áâ®
; § ªà뢠誨 #FF ¯®áâ ¢¨âì áâà ­¨æã COREPAGE
LD HL,COREPAGE + (#FF00 & BANKTBL)
IN A,(SLOT0)
LD (HL),A
; ¤«ï API ¤à ©¢¥à  ¬ë誨
LD (DRIVES_DRIVER.MOUSE_HANDLER.CorePage),A
LD A,((#FF00 & BANKTBL) + DRVPAGE)
LD (RST_0x30.drv_page),A
;
POP AF
OUT (SLOT3),A
SET_PAGE_X DRVPAGE
PUSH AF
;
LD HL,DRV_CONTENT
LD DE,#C000
LD BC,DRV_CONTENT.SIZE
LDIR
IN A,(SLOT3)
LD (DRV_PG_NUMBER),A
; [ ] CDFS prepare
/*
SET_PAGE_X FSPAGE
;
LD HL,FS_CONTENT
LD DE,#C000
LD BC,FS_CONTENT.SIZE
LDIR
IN A,(SLOT3)
LD (FS_PG_NUMBER),A
*/
;
POP AF
OUT (SLOT3),A
AND A
RET
.Size: EQU DEPLOY
;-----------------------------------------------------------------------;