64kramsystem / 64kramsystem/ghidra-vice-connector

Keyboard input injection via BMP (0x72)

Aberta
#30 0 comentários 0 reações 0 responsáveis Ver no GitHub
priority: low
Linguagem predominante
Python
Estrelas
1
Forks
0
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

## Summary

Inject PETSCII text into the C64 keyboard buffer from Ghidra. Useful for typing BASIC commands, entering game passwords, or triggering text-based input handlers during a debugging session without switching focus to VICE.

Source: VICE BMP `Keyboard Feed` (0x72); confirmed in VICE source `src/monitor/monitor_binary.c`.

---

## BMP protocol details

**Command:** `CMD_KEYBOARD_FEED = 0x72`

Request payload:
```
text_len (2 LE)
text (text_len bytes, PETSCII encoding)
```

Response: standard ACK. VICE inserts the bytes into the keyboard buffer as if typed.

**PETSCII encoding notes:**
- Uppercase letters: same as ASCII (`A`=0x41)
- Lowercase letters in PETSCII graphics mode: offset; in text mode same as ASCII
- Common control chars: `RETURN`=0x0D, `SPACE`=0x20, `HOME`=0x13, `CLR`=0x93, `RUN`=0x83
- For plain ASCII text injected as BASIC input, standard ASCII bytes work for printable chars

---

## Implementation plan

### 1. `util.py`

```python
CMD_KEYBOARD_FEED = 0x72

def keyboard_feed(self, text: str):
"""
Inject text into the VICE keyboard buffer.
`text` should be ASCII; for RETURN append '\\r'.
"""
enc = text.encode('ascii')
payload = struct.pack('

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.