david-schmidt / tlc-apple2

Some bits and bobs regarding the Tiger Learning Computer, sort of an Apple IIe packaged by Tiger Electronics in 1996
4 stars 0 forks source link

Identification bytes #1

Open inexorabletash opened 1 year ago

inexorabletash commented 1 year ago

I was looking to see what the TLC has in terms of ID bytes.

The usual suspects ($FBB3, $FB1E, $FBC0, $FBDD, $FBBF) are identical to an Enhanced Apple IIe.

I compared the F8 ROM with Enhanced IIe and here's the diff - offsets relative to $F800

< 00000280  c0 d8 20 bf c6 ad f3 03  49 a5 cd f4 03 d0 17 ad  |.. .....I.......|
---
> 00000280  c0 d8 20 3a ff ad f3 03  49 a5 cd f4 03 d0 17 ad  |.. :....I.......|
44,46c44,46
< 000002b0  03 ca d0 f7 a9 c6 4c 35  c6 a2 05 bd 00 02 29 df  |......L5......).|
< 000002c0  dd cf fa d0 08 ca 10 f3  ee f4 03 80 95 38 60 cc  |.............8`.|
< 000002d0  d4 d7 c9 ce 8d ea ea 20  8e fd a9 45 85 40 a9 00  |....... ...E.@..|
---
> 000002b0  03 ca d0 f7 a9 c8 86 00  85 01 a0 05 c6 01 a5 01  |................|
> 000002c0  c9 c0 f0 d7 8d f8 07 b1  00 d9 01 fb d0 ec 88 88  |................|
> 000002d0  10 f5 6c 00 00 00 00 20  8e fd a9 45 85 40 a9 00  |..l.... ...E.@..|

Quick disassembly shows a couple calls into $C600 space that are different. But usefully, this sequence looks suspicious:

FACF- CC D4 D7 C9 CE 8D EA EA

It's ASCII with high bits set, "LTWIN" plus carriage return. IIRC, that's the magic sequence equivalent to BYE to return to the TLC GUI? The routine before it is doing a comparison with the input buffer.

Anyway, those "LTWIN\r" bytes can probably be treated as effective ID bytes for the TLC.

david-schmidt commented 1 year ago

Ah, very cool. Thanks for the legwork. I'd also say LTWIN\r is a useful identifier. That was the command to get back to the windowing environment. :-)

david-schmidt commented 1 year ago

I did a little more investigation now that we have extracted the software it runs on bootup, and as mentioned in https://github.com/david-schmidt/tlc-apple2/wiki/Firmware,-System-Software#startup, that LTWIN command is somewhat improperly inserted into the external command list.