LC-3 Compiler User Manual for SHARP PC-1261/PC-1262

This is a compiler for Pocket Computer created around 1987~1988.

  • Compiler and Runtime Library are very compact and can coexist in memory.
    • You can edit, compile, and run source code in memory.
  • A lot of useful instructions for the game.
  • The generated code is small and fast because variables are stored in RAM.

I recently made PockEmul compatible with the LC-3 Compiler for the Sharp PC-1261/1262. It will be part of PockEmul 2.10.0

This required extensive groundwork, as the compiler relies heavily on undocumented features of the SC61860 processor, many of which had not yet been implemented in the emulator.

The compiler enables developers to write programs directly in BASIC, using special instructions, and then compile the code into LM format, all within the pocket computer itself.

It is particularly well-suited for creating fast-paced graphical games.

Originally developed in Japan, the compiler had no existing English documentation available until now.

To address this, I’ve translated the X thread by @poyokoma_danna, which details LC-3 functionalities, and supplemented it with a translation of the official documentation (hiroog/LC3_Compiler: LC-3 Compiler for SHARP PC-1261/PC-1262).

Continue reading “LC-3 Compiler User Manual for SHARP PC-1261/PC-1262”

An SC61860 bug since 25 years

Incredible — a bug in the SC61860 CPU used in classic Sharp devices has been fixed after 25 years!

Usually, a CPU bug is spotted quickly because everything crashes. But this one was a subtle side effect in batch instruction processing.

When I requested a batch of 0xFF, the loop exited without doing anything, instead of executing 256 times.

Turns out, it was just a while () {} that needed to be replaced with a do {} while ().

Now, the LC-3 compiler works correctly — it’s the one that uses 0xFF batches, unlike the standard ROM which never does.

It took me ages to find this bug, I was so convinced my algorithm was solid. obviously, after 25 years of faithful service…

PockEmul OS Requirements

There is one aspect that I have been neglecting since the release of PockEmul, which concerns the minimum OS versions supported by PockEmul.

This needs to change because I have too many issues testing different versions.

So starting from PockEmul 2.10, here are the different platforms that will be supported by PockEmul:

  • Android 8 (API 26) or higher, only on arm64-v8a (64-bit).
    No more 32Bit official release.
    I might release the APK for Android 7.1 and higher on pockemul.com, but without support.
  • iOS 14 or higher, architecture armv8(arm64).
  • Windows 10 (18098 or later), Windows 11 x86_64
  • macOS 11 or higher x86_64

Feel free to share your thoughts.

PockEmul issues and features requests

This post will list all current issues in PockEmul. Don’t hesitate to post in comments your features request.

Issues

VersionPlatformIssueFixed in
2.9.1AllIn the Settings, when the default value of a switch is ON, it is not displayed. If you want to force it OFF, toggle it to ON then OFF. 2.9.2
2.9.0AllCasio VX. Need to press ALL RESET to initialize memory2.9.1
2.9.0AllCasio VX, key IN not working2.9.1
2.8.1AllPC-1600 emulation broken2.9.0
2.8.1AndroidUnable to Start PockEmul Store for new customers. What a stupid bug !!
PockEmul 2.8.2 will be released ASAP.
2.8.2
2.8.1AllPC-1403 + CE-140F: issue on PRINT# commandInvestigate
2.8.0AllCanon X-07 function keys issue2.8.1
2.8.0AndroidOn android 13 fresh install, PockEmul ask for write permission at each startup.2.8.1
2.8.0Android32bit release crash.2.8.1
2.7.0AllThe combo Sharp PC-E500, CE-140f, CE-126p is not workingStill investigating. Very strange bug.

Features requests

  • New model HP-71B
  • Improve UI behavior:
    • Save the screen orientation in the session
    • Auto Power ON the calculator
    • Add option to fix the position on screen: done in 2.9.0
    • Add “Force Phone Behavior” in settings. Even on a tablet on one device will be on screen at a time. done in 2.9.0
  • Keyboard simulator with overclock up to 100x: done in 2.9.0