Commit graph

23 commits

Author SHA1 Message Date
copy 82fd344ad9 Floppy disk controller: Implement empty tray 2016-03-26 15:33:17 +01:00
copy 46474fdc18 Fix mask in sgdt and sidt 2016-02-05 17:04:11 +01:00
copy dd1de936dd raise irq in a single place in fdc 2016-01-01 23:35:10 +01:00
copy 84e3428689 Fix floppy args 2015-12-30 23:37:40 +01:00
copy 7fba276f86 Fix warnings 2015-09-15 21:58:40 +02:00
copy f557156256 trailing whitespace 2015-09-12 01:10:38 +02:00
copy f82373d6b2 Build state of emulator explicitly. Fixes #40 2015-05-18 22:18:59 +02:00
copy 3a824eda12 Change handling of interrupts to involve APIC 2015-05-17 01:56:50 +02:00
copy 742afcadbf Some minor changes 2015-04-22 04:15:32 +02:00
copy ba71b4b43a Rewrite CMOS 2015-02-25 18:23:10 +01:00
copy 0cec926450 whoops 2015-01-13 01:52:19 +01:00
copy a0da169168 Make _state_skip work by value (instead of key). Fixes certain Closure Compiler builds 2015-01-12 18:05:10 +01:00
copy 5fd2a1bd35 Improved handling of IO port operations 2014-10-21 21:51:42 +02:00
Fabian 9b031d4e40 Initial version of save/restore state feature, #18
Everything that is valid json plus arraybuffers and arraybuffer-views
can be restored automatically (without making changes to other code).
Properties that should not be part of the state buffer needed to be
annotated using a magic `_state_skip` property. Shared arraybuffer views
are broken during restoration and also need to be annotated. Adapters
are not (and should never be) saved.

Current limitations:
- Before restoring, the cpu needs to be initialised with the original
  settings. This is not a hard requirement and can be fixed later.
- Pending asynchronous operations are lost. It's a good idea to pause
  the cpu before saving the state.
2014-09-28 22:10:47 -07:00
copy 2a9759537d Minor cleanups 2014-07-13 00:42:39 +02:00
copy c49dcfde3e Report floppy drive even if it is empty. Fixes missing command interpreter in some DOSes booted via CDROM 2014-06-28 00:06:33 +02:00
copy 7a731ca061 Change CPU from closure to prototypical notation.
This change was necessary for several reasons:

- Code is much clearer and more modular
- The CPU object is now serializeable and therefore can be safed and
  restored
- A dynamic translator from instructions to (optimized) JavaScript is
  planned. It would use `new Function` to create functions at runtime.
  Functions created this way don't have access to any scope (except for
  the global scope) and therefore were not have been able to modify
  registers, etc. This is now possible through the cpu object
- Possibly, but not necessarily a speedgain can be achieved.
  See http://mrale.ph/blog/2012/09/23/grokking-v8-closures-for-fun.html

Additionally, some code was moved around.
2014-06-15 22:25:17 +02:00
Fabian c5fd846319 change floppy.js to prototypical definition5~ 2014-05-06 06:17:28 +02:00
copy 42bb76ff31 Move log() out of global 2014-01-10 02:54:47 +01:00
copy 0a59180db4 Preparations for new interface 2014-01-05 03:19:09 +01:00
copy 096001f9c9 Verify buffer read length and offset 2013-11-28 00:59:36 +01:00
copy 73b2861f18 more floppy types 2013-11-07 01:21:28 +01:00
copy 8180d49f24 first public release 2013-11-06 01:12:55 +01:00