apple2js/js/main2.js

119 lines
3.1 KiB
JavaScript
Raw Normal View History

2019-03-01 05:21:18 +00:00
import Prefs from './prefs';
import { driveLights, initUI, updateUI } from './ui/apple2';
2019-03-01 05:21:18 +00:00
import Printer from './ui/printer';
import DiskII from './cards/disk2';
2019-03-01 05:21:18 +00:00
import LanguageCard from './cards/langcard';
import Parallel from './cards/parallel';
import RAMFactor from './cards/ramfactor';
import SmartPort from './cards/smartport';
2019-03-01 05:21:18 +00:00
import Thunderclock from './cards/thunderclock';
import VideoTerm from './cards/videoterm';
2019-03-01 05:21:18 +00:00
import apple2_charset from './roms/apple2_char';
2019-03-01 18:15:17 +00:00
import apple2j_charset from './roms/apple2j_char';
import apple2lc_charset from './roms/apple2lc_char';
import pigfont_charset from './roms/pigfont_char';
2019-03-01 05:21:18 +00:00
import Apple2ROM from './roms/fpbasic';
2019-03-01 18:15:17 +00:00
import Apple2jROM from './roms/apple2j_char';
2019-03-01 05:21:18 +00:00
import IntBASIC from './roms/intbasic';
import OriginalROM from './roms/original';
import { Apple2 } from './apple2';
2016-11-22 05:17:34 +00:00
export * from './ui/apple2';
2016-11-22 05:17:34 +00:00
var prefs = new Prefs();
2017-09-23 04:42:57 +00:00
var romVersion = prefs.readPref('computer_type2');
2016-11-28 01:28:49 +00:00
var rom;
var characterRom = apple2_charset;
2020-07-19 21:53:01 +00:00
var sectors = 16;
2017-09-23 04:42:57 +00:00
switch (romVersion) {
case 'apple2':
2016-11-28 01:28:49 +00:00
rom = new IntBASIC();
2017-09-23 04:42:57 +00:00
break;
2020-07-19 21:53:01 +00:00
case 'apple213':
rom = new IntBASIC();
sectors = 13;
break;
2019-03-05 19:29:55 +00:00
case 'original':
2016-11-28 01:28:49 +00:00
rom = new OriginalROM();
2017-09-23 04:42:57 +00:00
break;
2019-03-01 18:15:17 +00:00
case 'apple2jplus':
rom = new Apple2jROM();
characterRom = apple2j_charset;
2019-03-01 18:15:17 +00:00
break;
case 'apple2pig':
rom = new Apple2ROM();
characterRom = pigfont_charset;
2019-03-01 18:15:17 +00:00
break;
case 'apple2lc':
rom = new Apple2ROM();
characterRom = apple2lc_charset;
2019-03-01 18:15:17 +00:00
break;
2017-09-23 04:42:57 +00:00
default:
2016-11-28 01:28:49 +00:00
rom = new Apple2ROM();
}
var options = {
screen: [],
multiScreen: false,
rom: rom,
characterRom: characterRom,
e: false,
enhanced: false,
cards: [],
tick: updateUI
};
var canvas1 = document.getElementById('screen');
var canvas2 = document.getElementById('screen2');
var canvas3 = document.getElementById('screen3');
var canvas4 = document.getElementById('screen4');
options.screen[0] = canvas1.getContext('2d');
if (canvas4) {
options.multiScreen = true;
options.screen[1] = canvas2.getContext('2d');
options.screen[2] = canvas3.getContext('2d');
options.screen[3] = canvas4.getContext('2d');
} else if (canvas2) {
options.multiScreen = true;
options.screen[1] = options.screen[0];
options.screen[2] = canvas2.getContext('2d');
options.screen[3] = options.screen[2];
} else {
options.screen[1] = options.screen[0];
options.screen[2] = options.screen[0];
options.screen[3] = options.screen[0];
}
var apple2 = new Apple2(options);
var cpu = apple2.getCPU();
var io = apple2.getIO();
2017-09-23 04:42:57 +00:00
var printer = new Printer('#printer-modal .paper');
var lc = new LanguageCard(io, rom);
var parallel = new Parallel(io, printer);
var videoTerm = new VideoTerm(io, options.screen[0]);
var slinky = new RAMFactor(io, 1024 * 1024);
2020-07-19 21:53:01 +00:00
var disk2 = new DiskII(io, driveLights, sectors);
var clock = new Thunderclock(io);
var smartport = new SmartPort(io, cpu, { block: true });
2016-11-22 05:17:34 +00:00
initUI(apple2, disk2, smartport, false);
2016-11-28 01:28:49 +00:00
2016-12-06 05:16:21 +00:00
io.setSlot(0, lc);
io.setSlot(1, parallel);
io.setSlot(2, slinky);
io.setSlot(4, clock);
io.setSlot(3, videoTerm);
2016-12-06 05:16:21 +00:00
io.setSlot(6, disk2);
io.setSlot(7, smartport);
2016-11-22 05:17:34 +00:00
cpu.addPageHandler(lc);