mirror of
https://github.com/david-schmidt/tlc-apple2.git
synced 2024-11-25 19:32:06 +00:00
Link to the wiki
This commit is contained in:
parent
2ad0e7432e
commit
a96abf05fe
106
README.md
106
README.md
@ -13,108 +13,6 @@ 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
|
machines has come forward with the ability to get anything into or out of the
|
||||||
existing serial port.
|
existing serial port.
|
||||||
|
|
||||||
The goal: get data into and out of the TLC machine. Hard to do without functional I/O.
|
The goal: get data into and out of the TLC machine. Hard to do without functional I/O. Well, now - we have functional I/O.
|
||||||
|
|
||||||
### Audio and Joystick to the rescue
|
[Continue to TLC Wiki...](../../wiki)
|
||||||
|
|
||||||
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:
|
|
||||||
|
|
||||||
* [`C100-FFFF.bin`](https://github.com/david-schmidt/tlc-apple2/blob/master/rom/C100-FFFF.bin) - Raw binary
|
|
||||||
* [`C100-FFFF.txt`](https://github.com/david-schmidt/tlc-apple2/blob/master/rom/C100-FFFF.txt) - Monitor disassembly
|
|
||||||
|
|
||||||
Banked ROM exists in slots 2 and 3. The contents have been dumped as follows:
|
|
||||||
|
|
||||||
Slot 2:
|
|
||||||
* [`S2-C800-CFFF.bin`](https://github.com/david-schmidt/tlc-apple2/blob/master/rom/S2-C800-CFFF.bin) - Raw binary
|
|
||||||
* [`S2-C800-CFFF.txt`](https://github.com/david-schmidt/tlc-apple2/blob/master/rom/S2-C800-CFFF.txt) - Monitor disassembly
|
|
||||||
|
|
||||||
Slot 3:
|
|
||||||
* [`S3-C800-CFFF.bin`](https://github.com/david-schmidt/tlc-apple2/blob/master/rom/S3-C800-CFFF.bin) - Raw binary
|
|
||||||
* [`S3-C800-CFFF.txt`](https://github.com/david-schmidt/tlc-apple2/blob/master/rom/S3-C800-CFFF.txt) - Monitor disassembly
|
|
||||||
|
|
||||||
## 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](https://github.com/fadden/6502bench/releases) project are here:
|
|
||||||
|
|
||||||
* [`KERLT101.bin`](https://github.com/david-schmidt/tlc-apple2/blob/master/file/KERLT101.bin) - Raw binary
|
|
||||||
* [`KERLT101.bin.dis65`](https://github.com/david-schmidt/tlc-apple2/blob/master/file/KERLT101.bin.dis65) - SourceGen disassembly project
|
|
||||||
* [`KERLT101.bin_cc65.lst`](https://github.com/david-schmidt/tlc-apple2/blob/master/file/KERLT101.bin_cc65.lst) - ca65 assembly output listing
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
Loading…
Reference in New Issue
Block a user