source: xtideuniversalbios/trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Main.asm @ 536

Last change on this file since 536 was 536, checked in by krille_n_@…, 11 years ago

Changes:

  • Added support for the Silicon Valley Computer ADP50L controller (and possibly other IDE controllers from SVC using memory mapped I/O). Please note that this has not been tested in any way since I don't have any of these cards myself (make backups before trying this on drives with important data). Also, *if* it works, make sure it works reliably (stress test the disk system). Some things you should know: 1) Autodetection for this controller has not been added to XTIDECFG, you need to manually select the "SVC ADP50L" controller (and possibly change the BIOS segment address if not using the default of C800h). 2) The memory mapped I/O window is inside the ROM address space of the controller. The XTIDE Universal BIOS currently do not support this so that means you need to use another ROM (for example, an XTIDE or XTCF card or the BOOT ROM of a NIC). This presents another problem, the original ADP50L BIOS needs to be disabled somehow to avoid conflicts. Either pull the ROM chip or disable the BIOS by removing jumper J3. Note, I have no idea if any of this will actually work. It's basically a shot in the dark.
File size: 4.1 KB
Line 
1; Project name  :   XTIDE Universal BIOS Configurator v2
2; Description   :   Program start and exit.
3
4;
5; XTIDE Universal BIOS and Associated Tools
6; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2013 by XTIDE Universal BIOS Team.
7;
8; This program is free software; you can redistribute it and/or modify
9; it under the terms of the GNU General Public License as published by
10; the Free Software Foundation; either version 2 of the License, or
11; (at your option) any later version.
12;
13; This program is distributed in the hope that it will be useful,
14; but WITHOUT ANY WARRANTY; without even the implied warranty of
15; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16; GNU General Public License for more details.
17; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
18;
19
20; Include .inc files
21
22%define INCLUDE_MENU_DIALOGS
23%define INCLUDE_SERIAL_LIBRARY
24
25%include "AssemblyLibrary.inc"  ; Assembly Library. Must be included first!
26%include "Romvars.inc"          ; XTIDE Universal BIOS variables
27%include "IdeRegisters.inc"     ; Needed for port and device autodetection
28%include "JRIDE_ISA.inc"        ; For JR-IDE/ISA default segment
29%include "ADP50L.inc"           ; For ADP50L default segment
30%include "XTCF.inc"             ; For XT-CF modes
31
32%include "Version.inc"
33%include "MenuCfg.inc"
34%include "MenuStructs.inc"
35%include "Variables.inc"
36
37
38; Section containing code
39SECTION .text
40
41
42; Program first instruction.
43ORG 100h                        ; Code starts at offset 100h (DOS .COM)
44Start:
45    jmp     Main_Start
46
47; Include library sources
48%include "AssemblyLibrary.asm"
49
50; Include sources for this program
51%include "AutoConfigure.asm"
52%include "BiosFile.asm"
53%include "Buffers.asm"
54%include "Dialogs.asm"
55%include "EEPROM.asm"
56%include "Flash.asm"
57%include "IdeAutodetect.asm"
58%include "MenuEvents.asm"
59%include "Menuitem.asm"
60%include "MenuitemPrint.asm"
61%include "Menupage.asm"
62%include "Strings.asm"
63
64%include "BootMenuSettingsMenu.asm"
65%include "ConfigurationMenu.asm"
66%include "FlashMenu.asm"
67%include "IdeControllerMenu.asm"
68%include "MainMenu.asm"
69%include "MasterSlaveMenu.asm"
70
71
72
73;--------------------------------------------------------------------
74; Program start
75;--------------------------------------------------------------------
76ALIGN JUMP_ALIGN
77Main_Start:
78    mov     ax, SCREEN_BACKGROUND_CHARACTER_AND_ATTRIBUTE
79    call    InitializeScreenWithBackgroudCharAndAttrInAX
80
81    call    Main_InitializeCfgVars
82    call    MenuEvents_DisplayMenu
83    mov     ax, DOS_BACKGROUND_CHARACTER_AND_ATTRIBUTE
84    call    InitializeScreenWithBackgroudCharAndAttrInAX
85
86    ; Exit to DOS
87    mov     ax, 4C00h           ; Exit to DOS
88    int     21h
89
90
91;--------------------------------------------------------------------
92; InitializeScreenWithBackgroudCharAndAttrInAX
93;   Parameters:
94;       AL:     Background character
95;       AH:     Background attribute
96;   Returns:
97;       Nothing
98;   Corrupts registers:
99;       AX, DX, DI
100;--------------------------------------------------------------------
101ALIGN JUMP_ALIGN
102InitializeScreenWithBackgroudCharAndAttrInAX:
103    xchg    dx, ax
104    CALL_DISPLAY_LIBRARY InitializeDisplayContext   ; Reset cursor etc
105    xchg    ax, dx
106    JMP_DISPLAY_LIBRARY ClearScreenWithCharInALandAttrInAH
107
108
109;--------------------------------------------------------------------
110; Main_InitializeCfgVars
111;   Parameters:
112;       DS:     Segment to CFGVARS
113;   Returns:
114;       Nothing
115;   Corrupts registers:
116;       AX, BX, CX, DI
117;--------------------------------------------------------------------
118ALIGN JUMP_ALIGN
119Main_InitializeCfgVars:
120    push    es
121
122    call    Buffers_Clear
123    call    EEPROM_FindXtideUniversalBiosROMtoESDI
124    jnc     SHORT .InitializationCompleted
125    mov     [CFGVARS.wEepromSegment], es
126.InitializationCompleted:
127    pop     es
128    ret
129
130
131; Section containing initialized data
132SECTION .data
133
134ALIGN WORD_ALIGN
135g_cfgVars:
136istruc CFGVARS
137    at  CFGVARS.pMenupage,          dw  g_MenupageForMainMenu
138    at  CFGVARS.wFlags,             dw  DEFAULT_CFGVARS_FLAGS
139    at  CFGVARS.wEepromSegment,     dw  0
140    at  CFGVARS.bEepromType,        db  DEFAULT_EEPROM_TYPE
141    at  CFGVARS.bEepromPage,        db  DEFAULT_PAGE_SIZE
142    at  CFGVARS.bSdpCommand,        db  DEFAULT_SDP_COMMAND
143iend
144
145
146; Section containing uninitialized data
147SECTION .bss
Note: See TracBrowser for help on using the repository browser.