Jump to content
IGNORED

7800 Keyboard


Tempest

Recommended Posts

Hi Tempest

Maybe the Atari Lab Temp is not finished.

Maybe it turned into the Atari Lab Light Module.

When starting the Light Module, i put the Joystick into Port 2.

Then I could start the Lab Light.

I could hook up the light sensor and I could calibrate it. I also could hook.up the Temp sensor and could use it for measuring temperatures.

And i could start projects. There is only one bad thing...the manual is damn big for the Atari Lab....

so it will take some time, to check everything.

Give me a few days...at weekend, I have time to play around with it.

Now it would be great to see the Starwriter working somehow ?

Greetings Walter

  • Like 1
Link to comment
Share on other sites

Wow, I had no idea there was already an Atari 7800 keyboard, much less a word processor and BASIC interpreter for it!

 

Someone should design a USB HID adapter for the Atari joystick port!

 

Oh, wait:

usbhid.jpg.27a0f1ac5c13ee87b33207e0b454d7db.jpg

 

:)

 

It's an Atari DB9 to USB-A adapter, with a USB chip capable of supporting HIDs. I designed this months ago with the goal of supporting USB joysticks or a mouse on a 2600 or 7800, but from looking at the keyboard schematics posted here, it appears that the 7800 keyboard may only use the joystick directions and fire button for the protocol? Therefore it is possible that this device might allow you to use a cheap USB keyboard on a 7800 with proper programming to convert the USB stream into the 7800 keyboard protocol. Does anyone have info about the protocol of the 7800 keyboard, or does that still need to be reverse-engineered from the software?

 

Haven't had any boards made yet as it was more of a back-burner project, but with the topic here, maybe I should have some made?

 

Because someone will likely ask: No, you won't be able to charge your phone from a 7800 with this device ;)

  • Like 7
Link to comment
Share on other sites

Actually the AtariLab module goes into the left port (P1). The keyboard or joystick goes into the right port (P2).

I suspect that the temperature module doesn't have the joystick code enabled and is keyboard only. Despite what it says on the screen. The light module seems to have both temp and light modules in it.

 

I managed to dig out my AtariLab stuff. I'll try to grab some pics if Walter doesn't beat me to it.

 

Mitch

  • Like 1
Link to comment
Share on other sites

2 hours ago, Danjovic said:

Many usb keyboards can fallback into ps/2 mode, which simplifies the option for a microcontroller.

True, but I chose a chip that does proper USB enumeration so it would likely support most USB keyboards (provided they were compliant with normal USB keyboard specs.) I was planning to limit current to 100ma to not require a separate power supply, and so the keyboard would need to be able to operate within that spec - and I understand most keyboards do. If it doesn't you would need to use a powered USB hub.

  • Like 1
Link to comment
Share on other sites

15 hours ago, batari said:

It's an Atari DB9 to USB-A adapter, with a USB chip capable of supporting HIDs. I designed this months ago with the goal of supporting USB joysticks or a mouse on a 2600 or 7800, but from looking at the keyboard schematics posted here, it appears that the 7800 keyboard may only use the joystick directions and fire button for the protocol? Therefore it is possible that this device might allow you to use a cheap USB keyboard on a 7800 with proper programming to convert the USB stream into the 7800 keyboard protocol. Does anyone have info about the protocol of the 7800 keyboard, or does that still need to be reverse-engineered from the software?

 

Haven't had any boards made yet as it was more of a back-burner project, but with the topic here, maybe I should have some made?

Sounds super cool to me, at least! I'd been playing around with making a simple BASIC interpreter, with a big challenge being the input portion. I had played with creating my own driver in a7800 that uses the 31 combinations of joystick/fire button inputs to use as keyboard input (with a shift-lock to access more characters), but I had no way to implement it on the hardware end. If someone figures out the original protocol, I'd happily change my code to use it instead.

 

So - count me as interested in your project, and the possibility of hooking up a USB keyboard to the 7800.  ? 

  • Like 1
Link to comment
Share on other sites

On 4/12/2022 at 10:05 AM, Tempest said:

Here are the .dat files Curt sent me as well, maybe they can help?  Or are they the exact same as the rom files?

7800_Star_Typer_6-02-84.dat 8 kB · 5 downloads 7800_Star_Typer_6-28-84.dat 16 kB · 5 downloads

They're the same as the rom files, just without encryption signatures.

 

On 4/12/2022 at 9:44 AM, Trebor said:

Appears there needs to be an item corrected with the Star Typer dumps. 

While checking the signature for both files, they each yield the same result that a signature fix cannot correct:

The byte in question is FF, so guessing that they weren't testing this with a commercial bios, and possibly without a bios at all. There's also a secondary issue of the encryption area (the high nibble of the same byte) being "F" and the reset vector being below Fxxx.

 

Here's a rom with that byte patched up. It still seems to crash after running - it eventually hits BRK opcodes - which may be an errant NMI happening or something. I need to spend more time in the debugger, but today is a bit busy for me.

 

Star Typer 6-28-84_regionbyte.a78

  • Like 1
Link to comment
Share on other sites

12 hours ago, Mitch said:

Actually the AtariLab module goes into the left port (P1). The keyboard or joystick goes into the right port (P2).

I suspect that the temperature module doesn't have the joystick code enabled and is keyboard only. Despite what it says on the screen. The light module seems to have both temp and light modules in it.

 

I managed to dig out my AtariLab stuff. I'll try to grab some pics if Walter doesn't beat me to it.

 

Mitch

So is it basically the same as the Atari 8-bit version?  Does it seem more or less complete?

Link to comment
Share on other sites

Disassembled the rom using distella to check for the accesses to the joystick ports.

Haven't figured out the protocol but it seems that this part performs an initialization

LDE01: LDA    #$0F    ;2
       STA    SWCHA   ;4
       STA    SWACNT  ;4
       LDA    #$00    ;2
       STA    $90     ;3
       STA    SWBCNT  ;4
       STA    $68     ;3
       STA    $67     ;3
       STA    $94     ;3
       STA    $95     ;3
       LDA    INPT5   ;3
       AND    #$80    ;2
       STA    $91     ;3
       LDA    #$03    ;2
       RTS            ;6

Right joystick pin is changed to be outputs (SWACNT = 0x0f).

It points to the connection of the keyboard on right joystick, and that the protocol may use the directionals as outputs

 

Maybe I was wrong in both my initial guesses, lol!

 

Well, no hurry, another part of the code looks to be waiting for a toggle in the fire button pin, but sure is on the right controller

LDFEA: LDA    INPT5   ;3
       AND    #$80    ;2
       CMP    $91     ;3
       BEQ    LDFEA   ;2
       STA    $91     ;3
       SEC            ;2
       RTS            ;6

 

Edited by Danjovic
Link to comment
Share on other sites

2 hours ago, RevEng said:

Here's a rom with that byte patched up. It still seems to crash after running - it eventually hits BRK opcodes - which may be an errant NMI happening or something. I need to spend more time in the debugger, but today is a bit busy for me.

Looks like the reset vector isn't right, which is why it crashes right away. It starts at $DA63, which does a "JSR $A940", but $A940 is floating bus. Further, the code around $DA63 looks bad. (e.g. the JSR return would run into an undocumented and pointless SLO opcode)

 

It's not clear if this is a rom that's corrupted, or if it needs some special kind of loader. (e.g. cassette or disk)

 

@Danjovic is there any regular init routine in the disassembly? You can search for "SEI", or writes to $1/INPTCTRL/VBLANK. (the latter would lock the console into 7800 mode.)

 

[edit] Ok, I see the init. It looks like the RESET vector is a couple of bytes off, which is weird. If you change it to $DA65 then it does a normal init, and then gets stuck in some loop. Looking at that now.

Link to comment
Share on other sites

2 hours ago, Tempest said:

So is it basically the same as the Atari 8-bit version?  Does it seem more or less complete?

It looks very similar to the A8 version. It has been a long time since I have used the A8 version so I don't really know how close it is but is pretty similar.

 

Mitch

Link to comment
Share on other sites

Hi Tempest

The Lab Light seems nearly complete.You can use it for Light and Temperature experimenting.

There are no errors. The only thing, which cannot be tested is the Keyboard option. What could we do with it?

Maybe hooking up a printer to print out our results? Or simply use it for movement in the program? I do not know. There is enough space

on the Lab module for other Add Ons, which were never released ?

But does anybody know something about a Basic Interpreter for the Keyboard? Are the any other programs?

Greetings Walter

Link to comment
Share on other sites

There were 6 different programs for the 7800 keyboard. The typing tutor program and the 2 AtariLab programs that the roms are in this thread. Also the DOS/basic program, Atari writer program (word processor) and Atari term (terminal) program.

 

Mitch

Link to comment
Share on other sites

Looking at ST Writer some more, I'm pretty sure it's a bad dump. :(

 

Here's some embedded text strings, which have missing characters:

00000450  20 20 20 20 20 20 20 20 20 20 20 20 00 4C 65 73             .Les
00000460  73 6F 6E 20 4F 6E 65 3A 20 54 65 61 63 68 65 73 son One: Teaches
00000470  20 74 68 65 20 75 73 65 20 6F 66 20 20 20 20 68  the use of    h
00000480  6F 6D 65 20 72 6F 77 20 6B 65 79 73 2C 20 61 73 ome row keys, as
00000490  64 66 20 6A 6B 6C 3B 20 67 68 20 20 20 54 79 70 df jkl; gh   Typ
000004A0  6F 6D 65 20 72 6F 77 20 6B 65 79 73 2C 20 61 73 ome row keys, as
000004B0  64 65 79 20 61 70 70 65 61 72 2E 20 20 20 20 20 dey appear.
000004C0  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
000004D0  20 20 20 20 20 20 20 20 20 20 20 20 20 00 4C 65              .Le
000004E0  20 20 6F 6E 20 54 77 6F 3A 20 54 65 61 63 68 65   on Two: Teache
000004F0  73 20 74 68 65 20 75 73 65 20 6F 66 20 20 20 75 s the use of   u
00000500  70 70 65 72 20 72 6F 77 20 6B 65 79 73 2C 20 71 pper row keys, q
00000510  77 65 72 20 75 69 6F 70 20 74 79 20 20 20 54 79 wer uiop ty   Ty
00000520  70 70 65 72 20 72 6F 77 20 6B 65 79 73 2C 20 71 pper row keys, q
00000530  74 68 65 79 20 61 70 70 65 61 72 2E 20 20 20 20 they appear.

That loop I mentioned before that never exits looks like it makes sense generally, but the "nop" at the top is likely a corrupted opcode...

DC2B: nop $4a
DC2D: bcs $dc33
DC2F: dey
DC30: bne $dc2d
DC32: dex
DC33: cpy #$17
DC35: bne $dc2b

That, coupled with a slightly off 6502 reset vector, makes me pretty sure we're seeing bitrot.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...