---
title: WARP64U
url: 'https://wiki.teletypegames.org/stores/warp64u'
markdown: 'https://wiki.teletypegames.org/stores/warp64u.md'
lang: en
date: '2026-10-26'
description: 'WARP64U is the Teletype Games store on the Commodore 64, what DOSINST is on a DOS machine: it lists our C64 titles, installs and updates them on a disk drive over the network, and starts them. The current release is 0.1.1. It reads the C64 shelf of the WarpEngine over plain HTTP, http://archive.tel…'
taxonomy:
  tag:
    - c64
    - store
---

# WARP64U

**WARP64U** is the Teletype Games store on the Commodore 64, what DOSINST is on a DOS machine: it lists our C64 titles, installs and updates them on a disk drive over the network, and starts them. The current release is **0.1.1**.

It reads the C64 shelf of the WarpEngine over plain HTTP, `http://archive.teletypegames.org/C64/`, so it runs on any C64 with a network, not only on an Ultimate. WARP64U is on the same shelf itself, so it can update itself too.

# What it needs

- **A network**, one of: 
    - an **Ultimate** (C64 Ultimate, Ultimate 64, 1541 Ultimate-II+) with the **Command Interface turned on** in its menu. *Written from the documentation, not yet tried on hardware.*
    - a **SwiftLink** (or Turbo232) cartridge with a **WiFi modem** that dials `ATDT host:port` (Zimodem, WiModem232 and the like), 38400 baud, RTS/CTS.
    - an **RR-Net or ETH64** cartridge with DHCP on the network; WARP64U brings its own TCP/IP stack, [ip65](https://github.com/cc65/ip65).
- **A disk drive** the KERNAL can write: a 1541/1571/1581, an SD2IEC, a Pi1541, the drives of an Ultimate.

# Install and start

Take `warp64u-<version>.prg` from the [releases](https://git.teletypegames.org/stores/warp64u/releases) (or `WARP64U.PRG` from `http://archive.teletypegames.org/C64/`), put it on a disk as `WARP64U`, then:

```
LOAD"WARP64U",8,1
RUN
```

It finds the network (an Ultimate, then a modem, then an RR-Net/ETH64), reads the shelf and shows it beside what is on the disk. A title is *installed*, an *update* (the server has another version) or *local only*.

| Key |  |
|---|---|
| CRSR up/down | choose a title |
| RETURN | install, or update to the server's version |
| R | start the title (LOAD and RUN go through the keyboard buffer) |
| DEL | remove it from the disk (asks first) |
| F1 | read the shelf again |
| RUN/STOP | stop a download; in the list, quit |
| Q | quit |

# How it installs

1. `GET /C64/INDEX.TXT` over HTTP/1.0; each line is `file|version|size|crc32|title|author|description`.
2. The title is downloaded to `NAME.TMP` as it arrives, with its CRC-32 computed on the way.
3. Only if the size and the CRC-32 match: `S0:NAME`, then `R0:NAME=NAME.TMP`. Otherwise the temporary file goes and the installed version stays.
4. `WARP64U.IDX`, the list of titles installed on this disk, is written last.

# Settings

An optional `WARP64U.CFG` (SEQ, `KEY=value` lines) next to the program: `HOST`, `PORT`, `PATH`, `NET` (`uci`, `modem`, `ip65` or `auto`), `DRIVE` (by default the one WARP64U was loaded from) and `DIR` (an SD2IEC folder).

# Development

C with [cc65](https://cc65.github.io/); `make` builds the PRG and a D64, `make test` runs the host tests (the store and HTTP layers against a small test server). `scripts/vice-modem.sh` starts it in VICE with an emulated SwiftLink, connected to a Hayes modem emulator (`host/modem.py`) that dials the real archive. A tag `vX.Y.Z` makes the Gitea release and publishes to the WarpEngine, which puts it on the C64 shelf.

Related: [DOSINST](https://wiki.teletypegames.org/dos/dosinst), the same idea on DOS; [FTP server](https://wiki.teletypegames.org/infrastructure/ftp-server), which serves the archive; [WarpEngine](https://wiki.teletypegames.org/engines/warp-engine), whose shelves build the `INDEX.TXT`.

'; var prevLevel = 2; for (var i = 0; i < headings.length; i++) { var h = headings\[i\]; var text = h.textContent.trim(); var slug = text.toLowerCase() .replace(/\[áàâä\]/g,'a').replace(/\[éèêë\]/g,'e').replace(/\[íìîï\]/g,'i') .replace(/\[óòôöő\]/g,'o').replace(/\[úùûüű\]/g,'u') .replace(/\[^a-z0-9\]+/g, '-').replace(/^-|-$/g, ''); if (!slug) slug = 'heading-' + i; if (used\[slug\]) { slug += '-' + i; } used\[slug\] = true; h.id = slug; var level = parseInt(h.tagName.charAt(1)); var cls = level > 2 ? ' class="toc-child"' : ''; html += '- [' + text + '](#'%20+%20slug%20+%20')
'; } html += '
'; toc.innerHTML = html; // Scroll-spy: highlight current heading var links = toc.querySelectorAll('a'); var ids = \[\]; for (var j = 0; j < links.length; j++) ids.push(links\[j\].getAttribute('href').slice(1)); function updateActive() { var current = ''; for (var k = 0; k < ids.length; k++) { var el = document.getElementById(ids\[k\]); if (el && el.getBoundingClientRect().top <= 80) current = ids\[k\]; } for (var m = 0; m < links.length; m++) { links\[m\].parentNode.classList.toggle('active', links\[m\].getAttribute('href') === '#' + current); } } window.addEventListener('scroll', updateActive, { passive: true }); updateActive(); })();

---

## Navigation

- Parent: [Stores](https://wiki.teletypegames.org/stores.md)
- Previous: [WarpEngine RetroArch Store](https://wiki.teletypegames.org/stores/warp-engine-retroarch-store.md)
