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

Last change on this file since 544 was 536, checked in by krille_n_@…, 12 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.