:: My emulator

This is the home of my JavaScript Commodore LCD emulator. If you don't know what Commodore LCD ("CLCD" in my documents) is, please visit this page first. As usual, I often update the page with new information, corrections. If you have any feedback, bugfix, etc, please contact me. You can find contact information on this page. About other Commodore LCD emulators, please visit this page, though - as far as I know - my emulator is the only one currently (but this statement can be obsoleted meanwhile ...).

You can try my (on-line, written in JavaScript) emulator >> HERE << but you should read the rest of this page first.

Here is the test-ROM version.

This is a Commodore LCD emulator which tries to emulate the machine on its hardware level. That means: it runs the original unmodified ROM images* and (more or less at the moment ...) works, no custom modifications and patches are done (but see limitations).

The emulator itself (all parts) are written by me, and can be used, modified, redistribute under the terms of GNU/GPL license v3 or possible later versions. Currently I don't give download link, as it's a web "application", you can save the html and js files, it's still a download possibility :)

However the emulator wouldn't be born without some nice people, please visit the "thanks" page. I also learnt a lot from the disassembly tries of the ROM code, even if it's still far from being completed, you can see the partial result here (kernal only). I only touched the "raw" disassembly result at parts what I needed or what I was interested in during the work. For more information, please read the specification. That page also writes about the details of the emulation and about my emulator and its bugs too.

Current limitations/known bugs of the emulator

Usage of the emulator and the CLCD itself

This chapter is about the CLCD softwares itself. Note, that the SHELL, the setup etc, are not the emulator's setup, it's part of the CLCD ROM even on the original machine.

Currently no external disk is emulated. The included softwares can be tested though. After "starting" the emulator (visit the link above) the KERNAL scans for ROMs and you should press a key to continue when you will see the "SHELL" (basically a menu system, somewhat PDA like in my opinion.

Within the SHELL you can navigate between the available softwares with the cursor keys, and you can use enter/return to activate an item. You must choose BASIC to exit to BASIC, and you can use the "exit" command then to return to the SHELL. You can also type anything in the SHELL and by hitting enter/return it will be executed, so you can even type "basic" instead of navigate in the menu system.

The bottom line usually contains inverse "blocks" they refer for the F1...F8 keys. Usually F8 is the exit in all situation. In the SHELL you can use F7 to do some setup, cursor left-right navigates between the various settings, up-down selects the option (no need to press enter, etc just leave the selected - inverse - line where you want), here F8 exists from setup mode.

Setting up the default storage "def stor" can be left for RAMDISK. Since external IEC bus is not implemented in the emulator disk 8-11 won't work. The RAMDISK is a purely software thing (and of course the content won't be preserved on web page reloads ... on a real CLCD it's written that battery backs up even the memory, so normally you can use RAMDISK without problems and need to use external drives (though the low capacity can be a problem ...). However RAMDISK seems to be not work, I have no idea what the problem can be, please read the section "limitations" above about this topic.

The emulator

This emulator is written in JavaScript for modern browsers and it should work on at least latest versions of Chrome, Safari and Firefox (see section limitations above).

All parts of the emulator (even the CPU, VIA emulation) is written by me for this project. As I've stated, the software license is GNU/GPL v3 or possible any later version of GNU/GPL in the future.

At the beginning I've started with a Python implementation of the emulator which was a terminal based solution, and it was awfully slow. But it helped a lot to be able to hack/test my ideas on CLCD. Why would someone write an emulator in JavaScript then? Well, just pick an answer freely:

As I've started to write my own JavaScript based Enterprise-128 emulator some time ago, it was a quite logical choice to use JS again ... For a more mature application, some should implement the emulation inside VICE for example. The bonus: you have most components there already: 65C02, VIAs, IEC serial bus & drive, etc emulated certainly a much correct way compared to my quickly written ugly solutions ...