179 lines
5.1 KiB
JavaScript
179 lines
5.1 KiB
JavaScript
/*-------------------------------------------------------------------------
|
|
| SAE - Scripted Amiga Emulator
|
|
| https://github.com/naTmeg/ScriptedAmigaEmulator
|
|
|
|
|
| Copyright (C) 2012-2016 Rupert Hausberger
|
|
|
|
|
| This program is free software; you can redistribute it and/or
|
|
| modify it under the terms of the GNU General Public License
|
|
| as published by the Free Software Foundation; either version 2
|
|
| of the License, or (at your option) any later version.
|
|
|
|
|
| This program is distributed in the hope that it will be useful,
|
|
| but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
| GNU General Public License for more details.
|
|
|
|
|
| Note: ported from WinUAE 3.2.x
|
|
-------------------------------------------------------------------------*/
|
|
|
|
function SAEO_Filesys() {
|
|
this.uci_set_defaults = function(uci, rdb) {
|
|
//memset(uci, 0, sizeof(struct uaedev_config_info));
|
|
//controller
|
|
//if (uci.controller_type == 0)
|
|
uci.controller_type = SAEC_Config_Mount_Controller_Type_MB_IDE;
|
|
uci.controller_unit = 0; //IDE channel + unit
|
|
uci.controller_media_type = 0; // 1 = CF IDE, 0 = normal
|
|
uci.unit_feature_level = SAEC_Config_Mount_Controller_Level_ATA_2;
|
|
uci.unit_special_flags = 0; //1 = force LBA48
|
|
//file
|
|
//uci.type = UAEDEV_HDF;
|
|
//uci.file.name = "";
|
|
//uci.file.size = 0;
|
|
//uci.file.data = "";
|
|
uci.readonly = false;
|
|
//rdb
|
|
//drive geometry
|
|
uci.blocksize = 512;
|
|
uci.cyls = 0; // calculated/corrected highcyl
|
|
if (!rdb) {
|
|
uci.surfaces = 1;
|
|
uci.sectors = 32;
|
|
}
|
|
//partition
|
|
uci.bootable = true;
|
|
uci.automount = true;
|
|
uci.unit = 0;
|
|
uci.flags = 0;
|
|
uci.devname = "";
|
|
//DosEnvec
|
|
uci.sectorsperblock = 1;
|
|
if (!rdb)
|
|
uci.reserved = 2;
|
|
uci.interleave = false;
|
|
uci.lowcyl = 0;
|
|
uci.highcyl = 0; // zero if detected from size
|
|
uci.buffers = 50;
|
|
uci.bufmemtype = 1;
|
|
uci.maxtransfer = 0x7fffffff;
|
|
uci.mask = 0xffffffff;
|
|
uci.bootpri = 0;
|
|
uci.dostype = 0x444f5301;
|
|
//filesystem
|
|
uci.filesys = "";
|
|
//DeviceNode
|
|
uci.stacksize = 4000;
|
|
uci.priority = -129;
|
|
//uci.device_emu_unit = -1;
|
|
}
|
|
|
|
/*-----------------------------------------------------------------------*/
|
|
|
|
function allocuci(p, nr, idx, unitnum) {
|
|
if (typeof unitnum == "undefined")
|
|
unitnum = -1;
|
|
var uci = p.mount.config[nr];
|
|
if (idx >= 0) {
|
|
/*var ui = mountinfo.ui[idx];
|
|
ui.configureddrive = 1;*/
|
|
|
|
uci.configoffset = idx;
|
|
uci.unitnum = unitnum;
|
|
} else {
|
|
uci.configoffset = -1;
|
|
uci.unitnum = -1;
|
|
}
|
|
}
|
|
|
|
/*---------------------------------*/
|
|
|
|
function getunittype(uci) {
|
|
return "HD" //uci.type == UAEDEV_CD ? "CD" : (uci.type == UAEDEV_TAPE ? "TAPE" : "HD");
|
|
}
|
|
function ismainboardide() {
|
|
return SAEV_config.chipset.ide != 0;
|
|
}
|
|
/*function isa3000scsi() {
|
|
return SAEV_config.chipset.mbdmac == 1;
|
|
}
|
|
function isa4000tscsi() {
|
|
return SAEV_config.chipset.mbdmac == 2;
|
|
}
|
|
function iscdtvscsi() {
|
|
return currprefs.cs_cdtvscsi != 0;
|
|
}*/
|
|
function add_mainboard_unit_init() {
|
|
if (ismainboardide()) {
|
|
SAEF_log("filesys.add_mainboard_unit_init() Initializing mainboard IDE");
|
|
SAER.gayle.gayle_add_ide_unit(-1, null);
|
|
}
|
|
/*if (isa3000scsi()) {
|
|
SAEF_log("filesys.add_mainboard_unit_init() Initializing A3000 mainboard SCSI");
|
|
a3000_add_scsi_unit(-1, null, null);
|
|
}
|
|
if (isa4000tscsi()) {
|
|
SAEF_log("filesys.add_mainboard_unit_init() Initializing A4000T mainboard SCSI");
|
|
a4000t_add_scsi_unit(-1, null, null);
|
|
}
|
|
if (iscdtvscsi()) {
|
|
SAEF_log("filesys.add_mainboard_unit_init() Initializing CDTV SCSI expansion");
|
|
cdtv_add_scsi_unit(-1, null, null);
|
|
}*/
|
|
}
|
|
|
|
function add_ide_unit(type, unit, uci) {
|
|
var added = false;
|
|
if (type == SAEC_Config_Mount_Controller_Type_MB_IDE) {
|
|
if (ismainboardide()) {
|
|
SAEF_log("filesys.add_ide_unit() Adding mainboard IDE %s unit %d ('%s')", getunittype(uci), unit, uci.file.name);
|
|
SAER.gayle.gayle_add_ide_unit(unit, uci);
|
|
added = true;
|
|
}
|
|
}
|
|
return added;
|
|
}
|
|
|
|
function initialize_mountinfo() {
|
|
// init all controllers first
|
|
add_mainboard_unit_init();
|
|
|
|
for (var nr = 0; nr < 6; nr++) {
|
|
var uci = SAEV_config.mount.config[nr].ci;
|
|
var type = uci.controller_type;
|
|
var unit = uci.controller_unit;
|
|
var added = false;
|
|
if (type == 0 || uci.file.size == 0)
|
|
continue;
|
|
if (type == SAEC_Config_Mount_Controller_Type_MB_IDE)
|
|
added = add_ide_unit(type, unit, uci);
|
|
else if (type == SAEC_Config_Mount_Controller_Type_PCMCIA_SRAM) {
|
|
SAER.gayle.gayle_add_pcmcia_sram_unit(uci);
|
|
added = true;
|
|
}
|
|
else if (type == SAEC_Config_Mount_Controller_Type_PCMCIA_IDE) {
|
|
SAER.gayle.gayle_add_pcmcia_ide_unit(uci);
|
|
added = true;
|
|
}
|
|
if (added)
|
|
allocuci(SAEV_config, nr, -1);
|
|
}
|
|
}
|
|
function free_mountinfo() {
|
|
SAER.gayle.free_units();
|
|
}
|
|
|
|
/*-----------------------------------------------------------------------*/
|
|
|
|
this.start_threads = function() {} //filesys_start_threads()
|
|
|
|
this.cleanup = function() { //filesys_cleanup()
|
|
free_mountinfo();
|
|
}
|
|
|
|
this.reset = function() { //filesys_reset()
|
|
free_mountinfo();
|
|
initialize_mountinfo();
|
|
}
|
|
this.prepare_reset = function() {} //filesys_prepare_reset()
|
|
}
|