tlc-apple2/README.md
David Schmidt 6c327f4283
Add prototype code to bigbang at the joystick port (#2)
* Add PB0 bitbanger and build process

Signed-off-by: David Schmidt <1110325+david-schmidt@users.noreply.github.com>

* Update target labels

Signed-off-by: David Schmidt <1110325+david-schmidt@users.noreply.github.com>

* Tune for 7-bit ASCII coming from a host

Signed-off-by: David Schmidt <1110325+david-schmidt@users.noreply.github.com>

* Update docs for bitbang joystick cable

Signed-off-by: David Schmidt <1110325+david-schmidt@users.noreply.github.com>

---------

Signed-off-by: David Schmidt <1110325+david-schmidt@users.noreply.github.com>
2023-09-26 00:47:49 -04:00

5.7 KiB

tlc-apple2

01TLC

Some bits and bobs regarding the Tiger Learning Computer. The TLC was a "toy" computer that had an Apple IIe at its core. There was a UI that would come up by default that was an early, proprietary windowing system that was little more than a program launcher.

The TLC can be booted and you can get into Applesoft BASIC without any problem. The problem is that I/O is pretty difficult. No one with one of these machines has come forward with the ability to get anything into or out of the existing serial port.

The goal: get data into and out of the TLC machine. Hard to do without functional I/O.

Audio and Joystick to the rescue

One thing the TLC does have is sound. And a headphone jack. So we have... output. Looming on the horizon is bit-banged serial data via the joystick port. So we have... input.

A long time ago...

In the dark ages, when dinosaurs roamed the Earth, there was cassette tape. As an analog-digital storage medium. It was slow, crappy, error-prone, and all that - but it at least worked. Early Apple II specimens came with this audio interface built-in - the original Apple ][, all the way through to the last Apple IIe. But the audio jacks and attendant ROM code was missing from the IIgs, the IIc, and the IIc+. And the TLC.

Steal all teh cassette ROM

Handily enough, the early ROM code is quite tidy and compact; this is before the days of the crazy gymnastics of the IIe and beyond that moved Heaven and Earth to keep the entry points constant (because programmers are bad, and used them literally). The angle of attack:

  • Copy out just enough Apple II ROM code to do the moral equivalent of the monitor's save memory to tape command (i.e. *300.400W)
  • Change cassette output ($C020) to speaker output ($C030)
  • Assemble and get a raw hex dump of that code
  • Type that code into the TLC's RAM and run it, dumping all non-banked ROM ($C100-$FFFF)
  • Capture the audio on a modern computer (Windows hint: run soundrecorder /file path\to\filename.wav to get a .wav, not a .wma)
  • Run that audio through CiderPress, which knows how to take tape audio and reconstruct data from it
  • ???
  • Profit

The source code to do these activities is in the src directory, and the resulting ROM from the Tiger Learning computer is in the rom directory. A few pictures of the machine and its on-screen interface are in doc/images.

ROM contents

Nonbanked ROM dump is available in binary and in monitor ROM disassembly form:

Banked ROM exists in slots 2 and 3. The contents have been dumped as follows:

Slot 2:

Slot 3:

File contents

The TLC comes with a virtual disk available in slot 6, drive 1 as volume /LTWIN. This is the volume that is booted when the machine turns on. The contents of it are as follows:

]catalog

/LTWIN

 NAME          TYPE  BLOCKS  MODIFIED         CREATED          ENDFILE SUBTYPE

 BASIC.SYSTEM   SYS      21   6-DEC-91 16:48   6-DEC-91 16:48    10240
 PRODOS         SYS      35   6-MAY-93 17:10   2-NOV-92 21:09    17128
 STARTUP        BAS       1  <NO DATE>        <NO DATE>            176
 KERLT101       BIN      50  11-JAN-96  9:18  11-JAN-96  9:18    24764 A=$1400

BLOCKS FREE:  14     BLOCKS USED:  114     TOTAL BLOCKS:  128

STARTUP

Bootstrapping the TLC follows the normal Apple II boot sequence and loads up PRODOS and then runs the STARTUP Applesoft program from /LTWIN. STARTUP looks like this:

]load startup
]list

 10  PRINT CHR$ (4);"BLOAD KERLT101" 
 20  CALL 5120
 30 A = PEEK (25)
 40  IF A=1THEN GOTO 10
 50  HOME
 60  VTAB 10: HTAB 10: PRINT "To return to Desktop,"
 70  VTAB 11: HTAB 11: PRINT "please type LTWIN"
 80  POKE (49304),0
 90  POKE (49326),1
 100  END

The command LTWIN is a command that Tiger inserted into the ProDOS external command list (clumsily) that basically reboots the system so that you end up back at the graphical interface.

KERLT101

The contents of KERLT101 has been dumped and the beginnings of a 6502bench SourceGen project are here:

Entry is at $1400 which immediately jumps over a data area and starts up for real at $171F. There are clearly a lot of softswitches in the $C0xx space that the TLC is using. Figuring out what they do should be an interesting challenge.