---
title: DOS
url: 'https://wiki.teletypegames.org/hu/platforms/dos'
markdown: 'https://wiki.teletypegames.org/hu/platforms/dos.md'
lang: hu
date: '2026-10-26'
description: 'A DOS-programjaink C++98-ban készülnek, Open Watcom v2-vel fordítva: egy 16 bites DOS-programfájl (8086, large modell), és ahol van, egy 32 bites Win32-es konzolos build Windows 95-re és újabbra. Fej nélküli DOSBox Staging-ben és Wine alatt teszteljük őket, a közös kód a DOSLIB. Open Watcom v2: htt…'
taxonomy:
  tag:
    - howto
---

# DOS

A DOS-programjaink C++98-ban készülnek, **Open Watcom v2**-vel fordítva: egy 16 bites DOS-programfájl (8086, large modell), és ahol van, egy 32 bites Win32-es konzolos build Windows 95-re és újabbra. Fej nélküli **DOSBox Staging**-ben és **Wine** alatt teszteljük őket, a közös kód a [DOSLIB](https://wiki.teletypegames.org/hu/dos/doslib).

**Open Watcom v2:** https://github.com/open-watcom/open-watcom-v2 **DOSBox Staging:** https://www.dosbox-staging.org **Eszközrepó:** https://git.teletypegames.org/build/dos-tools **Ezzel az eszközlánccal készülő programok:** [GMENU](https://wiki.teletypegames.org/hu/dos/gmenu), [DOSINST](https://wiki.teletypegames.org/hu/dos/dosinst), [BMAGIC](https://wiki.teletypegames.org/hu/dos/bmagic), [TTGWIKI](https://wiki.teletypegames.org/hu/dos/ttgwiki)

---

# Egy program repója

Mint minden más platformon, egy DOS-program repójában egy egysoros marker és a metaadat van; a pipeline-t a teletypegames.org [WarpEngine](https://wiki.teletypegames.org/hu/engines/warp-engine)-je szolgálja ki, és minden, amit futtat, a builder image-ben van.

```yaml
# .woodpecker.yaml
platform: dos
```

```json
// metadata.json
{
  "name": "dosinst",
  "version": "0.6.1",
  "title": "DOSINST",
  "author": "Teletype Games",
  "desc": "Installs, updates and removes DOS programs from an FTP store.",
  "license": "GPL-3.0",
  "category": "tool",
  "dos": {
    "folder": "DOSINST",
    "files": ["DOSINST.EXE", "DOSINST.CFG", "README.md", "LICENSE"],
    "settings": ["DOSINST.CFG"],
    "store_name": "DOSInst Store",
    "store_description": "Installs, updates and removes DOS programs from this store.",
    "win32_folder": "DOSINSTW",
    "win32_files": ["DOSINSTW.EXE", "DOSINST.CFG", "README.md", "LICENSE"],
    "win32_store_name": "DOSInst Store for Windows",
    "win32_store_description": "DOSINST for Windows 95 and later."
  }
}
```

A `dos` szakasz mondja meg, mi kerül egy kiadásba: a mappa, amelyként a program települ, a benne lévő fájlok, a `settings`, amelyek a kiadás zipjében benne vannak, de egy bolti frissítésben soha (így egy frissítés megtartja a telepített program beállításait), és a név meg a szöveg, amit a DOSINST listája mutat. A `win32_` kulcsok ugyanezek egy Win32-es buildhez, opcionálisan.

A többi konvenció: a `SOURCE/build.sh` a `$WATCOM`-beli Open Watcommal a repó gyökerébe fordítja a programfájlokat, a tesztek pedig ott vannak, ahol a parancsok keresik őket. A verzió a `metadata.json` `version` mezője, mint minden platformon; ha a `SOURCE/app/version.h`-ban van `Version`, annak egyeznie kell vele (a kettőt együtt emeld).

# A pipeline

Push után a pipeline sorrendje: version → test → tag; a tagre: version → test → package → upload → publish → release. A `version` lépés az engine közös lépése, és a DOS csak tagből ad ki (`release_rule "tag"`), így a teszt utáni lépések csak tagre futnak. A taget a pipeline maga készíti (WarpEngine 1.9): a `metadata.json` új `version`-je a masterre pusholva a `tag` lépéstől megkapja a `vX.Y.Z` tagjét, és ez a tag adja ki. Egy push, amely nem emeli a verziót, csak tesztel; a masteren kívül a build `dev-<verzió>-<ág>`, és a `dev-<ág>` tagje áthelyeződik, ami a dev buildet a katalógusba kiadja, de a boltba soha (a polc a legújabb nem `dev-` kiadást veszi). 2026-10-27-ig a DOS-repók `metadata.json`-jában nem volt verzió, és kézi taggel adtak ki; a kézi tag ma is működik, és egyeznie kell a verzióval.

| Lépés | Parancs | Mikor | Mit csinál |
|---|---|---|---|
| test | `dos-check` | minden esemény | kódstílus (a DOSLIB clang-format-burkolója), unit-tesztek (`SOURCE/test/unit/run.sh`), egy szerveroldal Python-tesztjei (`server/test`) |
| test | `dos-build` | minden esemény | `SOURCE/build.sh`, utána a fájllisták minden `.EXE`-jének meg kell lennie |
| test | `dos-test` | minden esemény | `SOURCE/test/run.sh` (DOS fej nélküli DOSBox Staging-ben), `SOURCE/test/runw32.sh` (Win32 Wine alatt), `SOURCE/test/run.py` (DOSBox-képernyőtesztek) |
| tag |  | push után | az engine közös lépése (1.9): egy új verzió megkapja a `vX.Y.Z` tagjét, és annak pipeline-ja futtatja a lenti sorokat; egy már tagelt verzió nem ad ki semmit; egy dev build az ága `dev-<ág>` tagjét helyezi át |
| package | `dos-pack` | egy tag | a mappák zipjei és minden `.EXE` külön, a `.release-assets`-ben felsorolva |
| upload, publish |  | egy tag | a mappa zipje a `cartridge` asset, a Win32-es zip a `win_x86`; a feltöltött metaadat megtartja a `dos` szakaszt |
| release |  | egy verziótag | az engine közös kiadási lépése: a Gitea-kiadás a `RELEASE_NOTES.md`-vel, csatolva a `.release-assets` fájljait |

Nincs store lépés és nincs deploy-kulcs: a titkok csak a globális `application_token` és `gitea_token`. Az FTP-bolt, a `ftp://ftp.teletypegames.org/APPS`, ahonnan a [DOSINST](https://wiki.teletypegames.org/hu/dos/dosinst) telepít és frissít, a [WarpEngine](https://wiki.teletypegames.org/hu/engines/warp-engine) DOS-polca (`layout: "folders"`). Az engine minden publikáláskor a katalógusból építi újra: a zipből és a `dos` szakaszból megírja a mappákat a `settings` fájljaik nélkül, egy `INFO.INI`-vel és egy `FILES.LST`-vel. Egy a katalógusban elrejtett vagy törölt program kikerül a boltból.

# A builder image

`git.teletypegames.org/build/dos-builder` (az eszközrepó `builder.Dockerfile`-ja): Open Watcom v2, DOSBox Staging (a `/opt/dosbox-staging`-ben, a `PATH`-on kívül) és a Debian DOSBoxa (a `PATH`-on, a képernyőtesztekhez), 32 bites Wine, g++, Python pyftpdlibbel, clang-format, zip, jq és curl, a `dos-*` parancsokkal. A rögzített verziók a `/opt/dos-ci/versions`-ben vannak. Ugyanez az image helyben is lefuttatja egy program ellenőrzéseit:

```sh
docker run --rm -v "$PWD:/workspace" git.teletypegames.org/build/dos-builder:latest \
  sh -c 'dos-check && dos-build && dos-test && TAG=v1.2.3 dos-pack'
```

'; 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: [Platformok](https://wiki.teletypegames.org/hu/platforms.md)
- Previous: [Commodore 64](https://wiki.teletypegames.org/hu/platforms/c64.md)
- Next: [Ebitengine](https://wiki.teletypegames.org/hu/platforms/ebitengine.md)
