initial commit
@@ -0,0 +1,3 @@
|
|||||||
|
# Copy to .env.local for local development (never commit real secrets)
|
||||||
|
CLOUDFLARE_API_TOKEN=
|
||||||
|
CLOUDFLARE_ZONE_ID=
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
node_modules/
|
||||||
|
dist/
|
||||||
|
.astro/
|
||||||
|
.DS_Store
|
||||||
|
.venv/
|
||||||
|
/.tmp
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
.env.production
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
title: "28k8 tHE tEMPLE BBS"
|
||||||
|
emoji: "💾"
|
||||||
|
category: code
|
||||||
|
subcategory: "Web Projects"
|
||||||
|
status: active
|
||||||
|
stack: [Astro, React, TypeScript, Cloudflare Pages]
|
||||||
@@ -0,0 +1,189 @@
|
|||||||
|
# AGENTS.md - Projekt-Kontext für KI-Agenten
|
||||||
|
|
||||||
|
## Was ist das Projekt?
|
||||||
|
|
||||||
|
**28k8.moonweb.org** — Eine Retro-BBS-Homepage im Stil eines 90er-DOS-Terminals für "tHE tEMPLE bBS" (Augsburg, FidoNet 2:2480/330, Sysop: Stefan Koelle). Kein Backend, kein PHP, keine Datenbank, kein Tracking.
|
||||||
|
|
||||||
|
## Tech-Stack
|
||||||
|
|
||||||
|
| Bereich | Technologie |
|
||||||
|
|---|---|
|
||||||
|
| Framework | **Astro 4.15+** mit React-Islands |
|
||||||
|
| Rendering | Vollständig statisch (SSG), jede Route wird zur Build-Zeit vorgerendert |
|
||||||
|
| Hosting | **Cloudflare Pages** |
|
||||||
|
| DNS | Cloudflare |
|
||||||
|
| Content | Astro Content Collections + Zod-Schema-Validierung |
|
||||||
|
| Styling | CSS Custom Properties, DOS 16-Farben-Palette, kein CSS-Framework |
|
||||||
|
| TypeScript | Strict Mode, React-JSX |
|
||||||
|
|
||||||
|
## Dokumentenlage
|
||||||
|
|
||||||
|
| Datei | Inhalt |
|
||||||
|
|---|---|
|
||||||
|
| `PRD.md` | Anforderungsdokument für 28k8 |
|
||||||
|
| `PLAN.md` | Implementierungsplan (Astro) |
|
||||||
|
| `SPEC.md` | Technische Spezifikation (Astro) |
|
||||||
|
| `README.md` | Projekt-README |
|
||||||
|
|
||||||
|
## Projektstruktur
|
||||||
|
|
||||||
|
```
|
||||||
|
28k8-moonweb-org/
|
||||||
|
├── src/
|
||||||
|
│ ├── pages/ # Astro-Routing (eine Datei = eine URL)
|
||||||
|
│ │ ├── index.astro # / → Modem-Intro (nur beim ersten Besuch)
|
||||||
|
│ │ └── bbs/
|
||||||
|
│ │ ├── index.astro # /bbs/ → Hauptmenü (2×2-Kachel-Raster)
|
||||||
|
│ │ ├── legal-notice.astro
|
||||||
|
│ │ ├── pc/ # PHOB!A, Tr@nceMISSION, SkyLINE, Kosmos Design
|
||||||
|
│ │ ├── atari/ # Tropic DREAMs
|
||||||
|
│ │ ├── amiga/ # ESPRIT, MOD Files
|
||||||
|
│ │ └── fido/ # ANSI Art, Nodelist
|
||||||
|
│ ├── components/
|
||||||
|
│ │ ├── TerminalLayout.astro # Basis-HTML-Layout (head, meta, CSS-Import)
|
||||||
|
│ │ ├── TerminalShell.tsx # React-Island: Keyboard-Shortcuts
|
||||||
|
│ │ ├── ModemIntro.tsx # React-Island: Wahl-Simulation + Sound
|
||||||
|
│ │ ├── ModPlayer.tsx # React-Island: MOD Playlist + WASM Player
|
||||||
|
│ │ ├── AnsiArt.astro # Rendered vorberechnete ANSI-Art als HTML
|
||||||
|
│ │ ├── Tile.astro # Menü-Kachel-Component
|
||||||
|
│ │ ├── NavBar.astro # Navigation [B] [Q] [I]
|
||||||
|
│ │ ├── StatusBar.astro # "28800 bps | Line: V34 | 28k8.moonweb.org"
|
||||||
|
│ │ └── LetterFooter.astro # Dekorativer "tHE tEMPLE bBS"-Buchstaben-Footer
|
||||||
|
│ ├── data/
|
||||||
|
│ │ └── mods.json # MOD-Metadaten (pre-build generiert, committed)
|
||||||
|
│ ├── content/ # Markdown+Frontmatter für Releases
|
||||||
|
│ │ ├── config.ts # Zod-Schemas für Content Collections
|
||||||
|
│ │ ├── skyline/ # SkyLINE Productions Releases
|
||||||
|
│ │ ├── kosmos-design/ # Kosmos Design Releases
|
||||||
|
│ │ ├── tropicdreams/ # Tropic DREAMs Releases (Atari ST)
|
||||||
|
│ │ └── esprit/ # ESPRIT Releases (Amiga)
|
||||||
|
│ ├── lib/
|
||||||
|
│ │ ├── ansiArt.ts # BANNER_*, ANSI_GALLERY, BOX_* Exporte (HTML-Strings)
|
||||||
|
│ │ ├── keymap.ts # Tastatur-Zuordnungen (GLOBAL_NAV_KEYS, MENU_KEYS)
|
||||||
|
│ │ └── sound.ts # Audio-Playback für Modem-Intro
|
||||||
|
│ └── styles/
|
||||||
|
│ └── global.css # alle CSS-Variablen, Klassen, Responsive-Styles
|
||||||
|
├── public/
|
||||||
|
│ ├── images/ # skyline-header.png, og-image.png
|
||||||
|
│ ├── audio/ # dial-tone.mp3, dtmf-beeps.mp3, modem-handshake.mp3
|
||||||
|
│ ├── js/
|
||||||
|
│ │ ├── chiptune3.js # MOD Player Library (gepatcht für Script-Tag)
|
||||||
|
│ │ ├── chiptune3.worklet.js # AudioWorklet für libopenmpt
|
||||||
|
│ │ └── libopenmpt.worklet.js # libopenmpt WASM (~1.5 MB)
|
||||||
|
│ ├── favicon.ico
|
||||||
|
│ └── fonts/ # CP437-Webfont (geplant, noch nicht vorhanden)
|
||||||
|
├── tools/
|
||||||
|
│ ├── fetch_mods.py # Pre-build: Holt MOD-Metadaten von moonweb.org
|
||||||
|
│ ├── generate_ansi.py # Referenz-Script für ANSI-Art-Generierung
|
||||||
|
│ └── cp437_to_utf8.py # CP437 → UTF-8 Konverter für BBS-Dateien
|
||||||
|
├── prebuild.sh # Pre-build Orchestrator (ruft alle tools/fetch_*.py auf)
|
||||||
|
├── source-assets/
|
||||||
|
│ └── reference/ # Original-BBS-Screenshots als Design-Referenz
|
||||||
|
├── astro.config.mjs # site: https://28k8.moonweb.org, React-Integration
|
||||||
|
├── tsconfig.json # strict Mode, react-jsx
|
||||||
|
├── package.json # astro, @astrojs/react, react, react-dom, chiptune3
|
||||||
|
└── .env.example # CLOUDFLARE_API_TOKEN, CLOUDFLARE_ZONE_ID
|
||||||
|
```
|
||||||
|
|
||||||
|
## Routing & URLs
|
||||||
|
|
||||||
|
| URL | Seite | Bemerkung |
|
||||||
|
|---|---|---|
|
||||||
|
| `/` | Modem-Intro | Redirect zu `/bbs/` wenn `localStorage.hasConnected === 'true'` |
|
||||||
|
| `/bbs/` | Hauptmenü | 2×2-Kachel-Raster, Google-indexierbar |
|
||||||
|
| `/bbs/pc/phobia` | PHOB!A | Teaser → Link zu moonweb.org/phobia/ |
|
||||||
|
| `/bbs/pc/trancemission` | Tr@nceMISSION | Teaser → Link zu moonweb.org/tcm/ |
|
||||||
|
| `/bbs/pc/skyline` | SkyLINE Productions | Content aus Collections, Blau-Akzent |
|
||||||
|
| `/bbs/pc/kosmos-design` | Kosmos Design [KDS] | Own Releases + Outside Productions |
|
||||||
|
| `/bbs/atari/tropic-dreams` | Tropic DREAMs | Atari ST Releases (1990-1992) |
|
||||||
|
| `/bbs/amiga/esprit` | ESPRIT Releases | Amiga DemoMaker |
|
||||||
|
| `/bbs/amiga/mods` | MOD Files | Echte MODs von moonweb.org, WASM-Player (chiptune3) |
|
||||||
|
| `/bbs/fido/ansi-art` | BBS ANSI Art | Gallery mit 8 Filler-Patterns |
|
||||||
|
| `/bbs/fido/nodelist` | Fidonets & Nodelists | 9 Net-Boxen transkribiert |
|
||||||
|
| `/bbs/legal-notice` | Legal Notice | Pflichtangaben hinterlegt, Link zu hub.moonweb.org/impressum |
|
||||||
|
|
||||||
|
## Keyboard-Shortcuts (keymap.ts)
|
||||||
|
|
||||||
|
**Global:** `B` Back (history.back), `Q` Disconnect (clears localStorage), `I` Legal Notice
|
||||||
|
|
||||||
|
**Menu:** `P` PHOB!A, `T` Tr@nceMISSION, `S` SkyLINE, `K` Kosmos Design, `D` Tropic DREAMs, `E` ESPRIT, `M` MOD Files, `A` BBS ANSI Art, `N` Fidonets
|
||||||
|
|
||||||
|
## Content Collections (src/content/config.ts)
|
||||||
|
|
||||||
|
Schema für alle Releases:
|
||||||
|
```typescript
|
||||||
|
{ title, group, year?, platform, credits: [{role, name}], description,
|
||||||
|
download_url?, screenshot?, file_id_diz }
|
||||||
|
```
|
||||||
|
|
||||||
|
## ANSI-Art-System
|
||||||
|
|
||||||
|
1. `tools/generate_ansi.py` generiert HTML aus 5×7-Bitmap-Font + Dithering-Gradienten
|
||||||
|
2. Output landet als statische Strings in `src/lib/ansiArt.ts`
|
||||||
|
3. Components laden via `import { BANNER_X } from '../../lib/ansiArt'`
|
||||||
|
4. Rendered via `<AnsiArt html={BANNER_X} />` (zero JS, set:html)
|
||||||
|
|
||||||
|
CSS-Klassen: `c-border-red`, `c-main-red`, `c-shadow-red`, `c-border-blue`, `c-main-blue`, `c-shadow-blue`, `c-white`, `c-grey`, `c-pink`, `c-cyan`
|
||||||
|
|
||||||
|
## Lokaler Dev-Workflow
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install
|
||||||
|
npm run dev # → localhost:4321
|
||||||
|
npm run build # → prebuild.sh + dist/
|
||||||
|
npm run preview # → lokaler Production-Server
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pre-Build System
|
||||||
|
|
||||||
|
`prebuild.sh` lädt vor jedem Build externe Daten (JSON) und schreibt sie nach `src/data/`. Die JSON wird committed, der Build hängt nicht vom externen Server ab.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./prebuild.sh # alle Stages
|
||||||
|
./prebuild.sh mods # nur MOD-Metadaten
|
||||||
|
```
|
||||||
|
|
||||||
|
Aktive Stages:
|
||||||
|
| Stage | Script | Output | Beschreibung |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `mods` | `tools/fetch_mods.py` | `src/data/mods.json` | MOD-Metadaten von moonweb.org |
|
||||||
|
|
||||||
|
Neuen Stage hinzufügen:
|
||||||
|
1. `tools/fetch_<name>.py` erstellen (Output: `src/data/<name>.json`)
|
||||||
|
2. Case-Block in `prebuild.sh` ergänzen
|
||||||
|
3. `npm run build` ruft automatisch `prebuild.sh` auf
|
||||||
|
|
||||||
|
## CP437 → UTF-8 Konvertierung
|
||||||
|
|
||||||
|
Alte BBS-Dateien (FILES.BBS, kosmos.txt, etc.) sind im CP437-Kodiert (IBM PC Zeichensatz). Für die Anzeige auf der Website müssen sie konvertiert werden.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Einmal-Datei konvertieren (Output auf stdout)
|
||||||
|
python3 tools/cp437_to_utf8.py https://www.moonweb.org/files/pc/KDS/kosmos.txt
|
||||||
|
|
||||||
|
# In Datei speichern
|
||||||
|
python3 tools/cp437_to_utf8.py https://www.moonweb.org/files/pc/KDS/FILES.BBS src/data/kds-files-bbs.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
**Neue Dateien einbinden:**
|
||||||
|
1. Konvertieren: `python3 tools/cp437_to_utf8.py <url> src/data/<name>.txt`
|
||||||
|
2. In `.astro` einlesen: `const text = readFileSync('src/data/<name>.txt', 'utf-8');`
|
||||||
|
3. Overlay nutzen: `<TextOverlay title="datei.txt" content={text} />`
|
||||||
|
|
||||||
|
Konvertierte Dateien werden in `src/data/` gespeichert und committed.
|
||||||
|
|
||||||
|
## Design-Regeln
|
||||||
|
|
||||||
|
- DOS 16-Farben-Palette strikt, Hintergrund immer Schwarz
|
||||||
|
- Keine Scanlines, kein CRT-Curvature, kein Flicker
|
||||||
|
- CP437-Font für ANSI-Art, IBM Plex Mono für Fließtext
|
||||||
|
- Fix 80 Zeichen breit, vertikal scrollbar
|
||||||
|
- SkyLINE: einzige Seite mit Blau-Akzent (sonst immer Rot)
|
||||||
|
- Kompletter Content auf Englisch
|
||||||
|
- Barrierefreiheit explizit nicht priorisiert
|
||||||
|
|
||||||
|
## Offene Aufgaben
|
||||||
|
|
||||||
|
**Aktuelle Task-Liste:** `TODO.md` — dort steht der nächste Schritt ganz oben.
|
||||||
|
|
||||||
|
Bei neuem Kontext: Zuerst `TODO.md` lesen, dann `PLAN.md` (Roadmap), dann `SPEC.md` (Tech-Spec).
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
# PLAN.md - Implementation Roadmap (v2)
|
||||||
|
|
||||||
|
## Phase 0 - Scaffold (v1, done) + Phase 0.5 - v2 fixes (done in this drop)
|
||||||
|
- [x] Fix: ANSI banner renders (AnsiArt.astro + ansiArt.ts)
|
||||||
|
- [x] Fix: Disconnect clears state (NavBar.astro)
|
||||||
|
- [x] Fix: SkyLINE blue accent visible + real header PNG
|
||||||
|
- [x] 10 boxed ASCII banners w/ dithering bars, 8 gallery patterns, 9 net-boxes
|
||||||
|
- [x] Tropic DREAMs (4 real), SkyLINE (+3), Kosmos Design (7 new), ESPRIT (4 new)
|
||||||
|
- [x] MOD Files placeholder tracklist + visual player widget
|
||||||
|
- [x] PHOB!A / Tr@nceMISSION teaser text, favicon.ico + og-image.png
|
||||||
|
|
||||||
|
## Phase 1 - Make it actually run
|
||||||
|
- [ ] npm install, npm run dev, npm run build && npm run preview
|
||||||
|
- [ ] Modem-Intro-Audio-Clips bereitstellen: public/audio/dial-tone.mp3, dtmf-beeps.mp3, modem-handshake.mp3
|
||||||
|
|
||||||
|
## Phase 2 - Real ANSI rendering
|
||||||
|
- [ ] Feed real .ans files (via OpenCode) into source-assets/ansi/
|
||||||
|
- [ ] Self-host CP437 webfont under public/fonts/
|
||||||
|
|
||||||
|
## Phase 3 - Navigation polish
|
||||||
|
- [ ] /bbs/atari/ etc. as mobile anchors to /bbs/#atari
|
||||||
|
- [ ] Astro View Transitions, subtle text-build-in stutter effect
|
||||||
|
|
||||||
|
## Phase 4-5 - Visual + Content
|
||||||
|
- [ ] Replace filler gallery patterns with real scanned ANSI art
|
||||||
|
- [ ] Replace placeholder releases with real ones, write real Impressum text
|
||||||
|
|
||||||
|
## Phase 6 - Amiga MOD player
|
||||||
|
- [ ] Real WASM MOD player (libopenmpt.js/chiptune3.js), real .mod files
|
||||||
|
|
||||||
|
## Phase 7-8 - Infra & Launch
|
||||||
|
- [ ] files.moonweb.org, public GitHub repo + Cloudflare Pages
|
||||||
|
- [ ] sitemap.xml/robots.txt, full click-through incl. regression test of
|
||||||
|
the two v1 bugs (banner visibility + Disconnect)
|
||||||
@@ -0,0 +1,495 @@
|
|||||||
|
# PRD – 28k8.moonweb.org
|
||||||
|
**"tHE tEMPLE bBS" Retro Hub Page**
|
||||||
|
|
||||||
|
Status: v2.0
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Vision & Zweck
|
||||||
|
|
||||||
|
Eine persönliche Hub-Page unter `28k8.moonweb.org`, die die eigene BBS-/Demoscene-Vergangenheit der 90er Jahre in Augsburg dokumentiert und als Portal zu bereits existierenden Archiv-Subdomains (`phobia`, `tcm`) sowie neuen Unterseiten (SkyLINE, Kosmos Design, Tropic DREAMs, ESPRIT, MOD-Sammlung, BBS-ANSI-Art, Fidonet) dient.
|
||||||
|
|
||||||
|
Das ursprüngliche Vorbild ist das eigene BBS aus den 90ern:
|
||||||
|
|
||||||
|
```
|
||||||
|
tHE tEMPLE bBS
|
||||||
|
0821-2191038 (Augsburg)
|
||||||
|
Sysop: Stefan Koelle
|
||||||
|
Fido: 2:2480/330
|
||||||
|
```
|
||||||
|
|
||||||
|
Die Seite soll stilistisch wie ein echtes DOS-Terminal wirken (schwarzer Hintergrund, ANSI-Art, CP437-Font), aber technisch eine moderne, rein clientseitige Static Site sein – kein Backend, kein PHP.
|
||||||
|
|
||||||
|
**Kernprinzip:** Nostalgie-Genauigkeit im Design > moderne UX-Konventionen. Lieber weniger Schnickschnack als zu viel. Kleine, witzige moderne Gimmicks im alten Stil sind erlaubt (z. B. Modem-Dial-Sound, In-Browser-MOD-Player).
|
||||||
|
|
||||||
|
## 2. Ziele / Non-Goals
|
||||||
|
|
||||||
|
**Ziele:**
|
||||||
|
- Alle eigenen 90er-Projekte (PC/Atari ST/Amiga/BBS) an einem zentralen Ort dokumentieren
|
||||||
|
- Authentisches BBS-/Terminal-Gefühl per Maus (primär, ganze Box/Kachel klickbar inkl. Hover-State) **und** Tastatur (Fallback, eindeutige Buchstaben-Shortcuts)
|
||||||
|
- Vollständig statisch, SEO-fähig
|
||||||
|
- Wartbar über Markdown+Frontmatter im Git-Repo, Content-Pflege künftig primär durch AI-gestützte Edits
|
||||||
|
- Kein Server, kein PHP, keine Datenbank
|
||||||
|
- Komplett englischsprachiger Content
|
||||||
|
|
||||||
|
**Non-Goals:**
|
||||||
|
- Keine Barrierefreiheit/Accessibility
|
||||||
|
- Kein CMS, kein Backend, kein Login-System
|
||||||
|
- Kein Nodelist-Browser
|
||||||
|
- Keine Terminal-Effekte wie Scanlines/CRT-Curvature/Flicker
|
||||||
|
- Kein Guestbook/Kommentarfunktion
|
||||||
|
- Kein Analytics/Tracking jeglicher Art
|
||||||
|
- Kein Easter-Egg im Buchstaben-Footer (rein dekorativ)
|
||||||
|
|
||||||
|
## 3. Tech-Stack & Architektur
|
||||||
|
|
||||||
|
| Bereich | Entscheidung |
|
||||||
|
|---|---|
|
||||||
|
| Framework | **Astro** + React-Islands für interaktive Komponenten (Terminal-Input, MOD-Player, ANSI-Renderer) |
|
||||||
|
| Rendering | Vollständig statisch, jede Route wird zur Build-Zeit vorgerendert (SSG) |
|
||||||
|
| Hosting | **Cloudflare Pages** – Git-Push triggert automatisch Cloudflare-eigenen Build & Deploy |
|
||||||
|
| DNS/CDN | Cloudflare |
|
||||||
|
| Domain-Registrar | 1&1 IONOS (unverändert) |
|
||||||
|
| Backend | **Keins.** Kein PHP, keine serverseitige Logik jemals |
|
||||||
|
| Asset-Hosting (Downloads) | `files.moonweb.org` (Synology oder eigener Static-Fileserver-Container) |
|
||||||
|
| Asset-Ablage (Design-Referenz) | `source-assets/` im Haupt-Repo |
|
||||||
|
| Repo | Neues, öffentliches GitHub-Repo |
|
||||||
|
| Content-Format | Markdown mit Frontmatter pro Release/Seite |
|
||||||
|
|
||||||
|
### 3.1 Technologie-Entscheidung: Astro statt Eleventy
|
||||||
|
|
||||||
|
**Frage geklärt:** Eleventy (11ty) ist ein reiner Template-basierter Static-Site-Generator ohne eingebaute Interaktivitäts-Architektur – JS-Komponenten (Terminal-Input, ANSI-Renderer, MOD-Player) müssten manuell über einen separaten Bundler eingebunden werden, inkl. eigener Logik dafür, dass nur nötige Seiten JS laden.
|
||||||
|
|
||||||
|
Astro bietet **Islands Architecture**: jede Seite ist standardmäßig 100% statisches HTML/CSS, nur explizit markierte Komponenten (Terminal-Shell, MOD-Player) werden als React-Island hydriert. Zusätzlich: Content Collections mit Schema-Validierung (Zod) für Markdown+Frontmatter, integrierte View-Transitions-API für den gewünschten SPA-Effekt zwischen Subseiten. Deshalb Astro statt Eleventy – bessere Passform für "größtenteils statisch, aber gezielt interaktiv".
|
||||||
|
|
||||||
|
### 3.2 Lokaler Dev-Workflow
|
||||||
|
|
||||||
|
Damit vor jedem Push zu GitHub lokal getestet werden kann (Astro bringt das ohne Zusatztooling mit):
|
||||||
|
|
||||||
|
| Command | Zweck |
|
||||||
|
|---|---|
|
||||||
|
| `npm run dev` | Lokaler Dev-Server mit Hot-Reload (`localhost:4321`) für die Entwicklung |
|
||||||
|
| `npm run build` | Erzeugt den finalen statischen Build nach `dist/` – identisch zu dem, was Cloudflare Pages baut |
|
||||||
|
| `npm run preview` | Startet einen kleinen lokalen Webserver, der exakt den `dist/`-Static-Build ausliefert, zum Prüfen vor dem Push |
|
||||||
|
|
||||||
|
Damit ist ein vollständiger lokaler Build+Test-Zyklus möglich, ohne dass die GitHub Action/Cloudflare Pages involviert sein muss.
|
||||||
|
|
||||||
|
### CI/CD
|
||||||
|
- Push auf `main` → Cloudflare Pages Build (Astro build) → automatisches Deploy
|
||||||
|
- Preview-Deployments für Pull Requests (Cloudflare-Pages-Standardfeature)
|
||||||
|
- Kein SFTP/IONOS-Webspace-Deploy nötig
|
||||||
|
|
||||||
|
## 4. Informationsarchitektur / URL-Struktur
|
||||||
|
|
||||||
|
```
|
||||||
|
28k8.moonweb.org/ → Modem-Connect-Intro (nur beim ersten Besuch
|
||||||
|
bzw. nach explizitem "Disconnect")
|
||||||
|
28k8.moonweb.org/bbs/ → Hauptmenü (2x2-Kachel-Raster), Google-indexierbar
|
||||||
|
28k8.moonweb.org/bbs/pc/ → PC Section (Anchor-Ziel, kein eigenständiger Content)
|
||||||
|
28k8.moonweb.org/bbs/pc/phobia → Subseite PHOB!A
|
||||||
|
28k8.moonweb.org/bbs/pc/trancemission → Subseite Tr@nceMISSION
|
||||||
|
28k8.moonweb.org/bbs/pc/skyline → Subseite SkyLINE Productions
|
||||||
|
28k8.moonweb.org/bbs/pc/kosmos-design → Subseite Kosmos Design [KDS]
|
||||||
|
28k8.moonweb.org/bbs/atari/ → Atari Section (Anchor-Ziel)
|
||||||
|
28k8.moonweb.org/bbs/atari/tropic-dreams→ Subseite Tropic DREAMs
|
||||||
|
28k8.moonweb.org/bbs/amiga/ → Amiga Section (Anchor-Ziel)
|
||||||
|
28k8.moonweb.org/bbs/amiga/esprit → Subseite ESPRIT Releases
|
||||||
|
28k8.moonweb.org/bbs/amiga/mods → Subseite MOD Files (mit In-Browser-Player)
|
||||||
|
28k8.moonweb.org/bbs/fido/ → BBS & FIDO Section (Anchor-Ziel)
|
||||||
|
28k8.moonweb.org/bbs/fido/ansi-art → Subseite BBS ANSI Art
|
||||||
|
28k8.moonweb.org/bbs/fido/nodelist → Subseite Fidonets and Nodelists
|
||||||
|
28k8.moonweb.org/bbs/legal-notice → Legal Notice (Pflichtseite, eigener Menüpunkt)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Regeln:**
|
||||||
|
- `/` zeigt Intro nur beim allerersten Besuch (`localStorage`-Flag), danach Redirect zu `/bbs/`
|
||||||
|
- "Disconnect" setzt den Flag zurück und navigiert zu `/`
|
||||||
|
- Zurück-Navigation: `[B] Back` als Tastaturbefehl, zusätzlich klickbar
|
||||||
|
- Mobile: Section-URL scrollt zum Anchor innerhalb `/bbs/` (`/bbs/#atari`)
|
||||||
|
- Subseiten-Wechsel wirkt wie SPA (äußerer Terminal-Rahmen bleibt bestehen), aber jede Subseite hat eine echte, vorgerenderte, crawlbare URL
|
||||||
|
|
||||||
|
## 5. Interaktionsmodell
|
||||||
|
|
||||||
|
### 5.1 Modem-Connect-Intro (`/`)
|
||||||
|
- 28k8-Modem-SVG + simuliertes Terminalfenster, ATDT-Wählbefehl
|
||||||
|
- Line-Auswahl:
|
||||||
|
```
|
||||||
|
Line 1: +49-821-2191-038 [VFC V34] 28800
|
||||||
|
Line 2: +49-821-2191-036 [X75] 64000
|
||||||
|
```
|
||||||
|
- **Line 1:** Volle Modem-Einwahl-Simulation (Wählton → Pieptöne → Handshake-Sound) → Redirect zu `/bbs/`
|
||||||
|
- **Line 2:** Kein Sound, sofortiger Direktzugang → Redirect zu `/bbs/`
|
||||||
|
- Sound nur an dieser einen Stelle im gesamten Projekt
|
||||||
|
|
||||||
|
### 5.2 Hauptmenü (`/bbs/`) – Bedienlogik
|
||||||
|
- **Keine Section-Keys mehr** (P/A/G/F entfallen) – Sections selbst sind reine visuelle Gruppierung ohne eigenes Ziel
|
||||||
|
- **Jeder einzelne Menüpunkt bekommt einen global eindeutigen Tastatur-Shortcut** (siehe Keymap-Tabelle 5.2.1), Tastatur ist Fallback/Gimmick
|
||||||
|
- **Primäre Bedienung: Maus** – die **komplette Kachel/Box ist klickbar** (nicht nur der `[X]`-Buchstabe am Anfang der Zeile), inkl. Hover-State (z. B. Aufhellen der Box-Rahmenfarbe oder invertierter Text)
|
||||||
|
- Ungültige Tasteneingabe: keine Fehlermeldung, wird einfach ignoriert (kein "Invalid selection"-Text)
|
||||||
|
- Kein Sysop-Login-Screen, kein "New User"-Dialog – nach Intro direkt ins Hauptmenü
|
||||||
|
- **Statuszeile gewünscht:** unten im Hauptmenü (und ggf. auf Subseiten) eine Zeile im Stil `Connected: 28800 bps | Line: V34 | 28k8.moonweb.org` – Details (echte vs. simulierte Uhrzeit, weitere Felder) noch offen, siehe Abschnitt 15
|
||||||
|
- **Buchstaben-Button-Footer** ("t H E t E M P L E b B S", siehe Referenzscreen 7.2 Punkt 4) wird 1:1 optisch nachgebaut, ist aber **rein dekorativ, ohne Klickfunktion/Easter-Egg**
|
||||||
|
- **Layout: 2×2-Kachel-Raster** auf Desktop (siehe 14.1), auf Mobile 1 Spalte mit allen 4 Kacheln untereinander (siehe 14.1-Mobile)
|
||||||
|
- Kein Guestbook, kein Loading-Screen zwischen Seiten (sofortiger Content-Wechsel). Optional/nice-to-have: leicht verzögerter Textaufbau mit kleinem "Stocken" mitten in der Zeile beim ersten Erscheinen einer Box – kein Muss, kann später entschieden werden
|
||||||
|
- Legal Notice ist ein regulärer Menüpunkt im BBS-Stil (nicht nur ein unauffälliger Footer-Link)
|
||||||
|
|
||||||
|
### 5.2.1 Globaler Keymap
|
||||||
|
|
||||||
|
| Key | Ziel | Bereich |
|
||||||
|
|---|---|---|
|
||||||
|
| `B` | Back | global |
|
||||||
|
| `Q` | Disconnect | global |
|
||||||
|
| `I` | Legal Notice | global |
|
||||||
|
| `P` | PHOB!A | PC |
|
||||||
|
| `T` | Tr@nceMISSION | PC |
|
||||||
|
| `S` | SkyLINE Productions | PC |
|
||||||
|
| `K` | Kosmos Design [KDS] | PC |
|
||||||
|
| `D` | Tropic DREAMs | Atari ST |
|
||||||
|
| `E` | ESPRIT Releases | Amiga |
|
||||||
|
| `M` | MOD Files | Amiga |
|
||||||
|
| `A` | BBS ANSI Art | BBS & FIDO |
|
||||||
|
| `N` | Fidonets and Nodelists | BBS & FIDO |
|
||||||
|
|
||||||
|
**Offen:** Reihenfolge der Kacheln (welche Section oben-links im 2×2-Raster). `M` wurde als globaler Main-Menu-Key verworfen — bei nur 2 Ebenen und immer verfügbarem `[B] Back` ist er nicht nötig, stattdessen `M` für MOD Files (Amiga) reserviert.
|
||||||
|
|
||||||
|
### 5.3 Subseiten
|
||||||
|
- Gleiches Grundlayout: ANSI-Banner-Header + Einleitungstext + Release-Liste + Outbound-Link-Box
|
||||||
|
- Ausnahme SkyLINE: PNG-Header (Cyan "SKY"/Weiß "LINE" auf Blau-Gradient), zweispaltiges Listen-Layout (siehe 14.2)
|
||||||
|
- Content-Wechsel behält äußeren Terminal-Rahmen bei
|
||||||
|
|
||||||
|
## 6. Design-System
|
||||||
|
|
||||||
|
| Element | Vorgabe |
|
||||||
|
|---|---|
|
||||||
|
| Grundfarben | Strikt DOS 16-Farben-Palette, Hintergrund konsequent Schwarz |
|
||||||
|
| Vordergrundfarbe Standard | Grau/Weiß, angelehnt an MS-DOS 6.22 |
|
||||||
|
| **Verboten** | DOS-Blau als Hintergrund |
|
||||||
|
| Hauptfarbe gesamte Seite | Dunkelrot/Hellrot (bestätigt durch Original-Screens) |
|
||||||
|
| SkyLINE-Ausnahme | **Nur innerhalb** der SkyLINE-Subseite: zusätzlich Blau/Hellblau als Akzent (PNG-Header + Rahmen-Akzente), Rest der Seite bleibt sonst konsistent im roten Grundton |
|
||||||
|
| Box-/Rahmen-Stile | (a) eckige Klammerboxen `[ Titel ]`; (b) runde Divider mit `º`/`°` für große Abschnittsüberschriften |
|
||||||
|
| Terminal-Effekte | Keine Scanlines, kein Flicker, kein CRT-Curvature |
|
||||||
|
| Font (ANSI/echte Retro-Art) | Echte CP437/DOS-Font (z. B. "Web 437"/"Perfect DOS VGA 437") |
|
||||||
|
| Font (Fake-BBS-Fließtext) | IBM Plex Mono o. ä. Monospace |
|
||||||
|
| Breite | Fix 80 Zeichen breit, vertikal unendlich scrollbar |
|
||||||
|
| Sound | Ausschließlich der Modem-Connect-Sound in der Intro |
|
||||||
|
| Barrierefreiheit | Explizit nicht priorisiert |
|
||||||
|
| Analytics | Keins – kein Tracking jeglicher Art |
|
||||||
|
| Favicon/Social-Preview | **Ja, vollständig umsetzen** – Retro-Favicon (z. B. Ausschnitt Temple-BBS-Logo) + Open-Graph-Bild für Link-Previews (Discord/Mastodon/etc.) |
|
||||||
|
|
||||||
|
### 6.1 Kachel-Styling-Beschreibung (textuelle Spezifikation, noch nicht visuell umgesetzt)
|
||||||
|
|
||||||
|
Die 4 Hauptmenü-Kacheln sollen "stylischer" wirken als reine Einfarb-Boxen, aber ohne die 16-Farben-Grenze zu verlassen. Ansatz: **Dithering-Farbverläufe per ANSI-Blockzeichen**, eine klassische Scene-Technik – durch Kombination von Halbraster-Zeichen (`░` `▒` `▓` `█`) mit wechselnder Vorder-/Hintergrundfarbe lässt sich innerhalb der 16-Farben-Palette ein Verlaufseffekt simulieren (z. B. Kachel-Kopfzeile: oben helles Rot auf dunklem Rot mit `█`-Zeichen, darunter zunehmend `▓`→`▒`→`░` für einen weichen Übergang zum schwarzen Body). Diese Technik wurde in echten 90er-ANSI-Artworks häufig für Logo-Hintergründe und Balken verwendet und passt damit stilecht. Die konkrete Umsetzung (welche Zeichen, welche Farbpaare pro Kachel) wird erst in der Design-/Umsetzungsphase ausgearbeitet, hier nur als Anforderung dokumentiert.
|
||||||
|
|
||||||
|
### 6.2 Box-Interaktion
|
||||||
|
- Die **gesamte Kachel bzw. gesamte FILE_ID.DIZ-Box** ist eine klickbare Fläche (nicht nur das Shortcut-Zeichen)
|
||||||
|
- Hover-State erforderlich (visuelle Rückmeldung, z. B. hellere Rahmenfarbe oder Farbinversion), Umsetzungsdetail folgt in der Design-Phase
|
||||||
|
|
||||||
|
### 6.3 Content-Sprache
|
||||||
|
**Die komplette Live-Seite wird auf Englisch verfasst** – Menütexte, Einleitungstexte, FILE_ID.DIZ-Beschreibungen, Statusmeldungen, Fehlertexte (falls vorhanden) und so weit rechtlich zulässig auch das Impressum. Dieses PRD-Dokument selbst bleibt als internes Planungsdokument auf Deutsch.
|
||||||
|
|
||||||
|
## 7. ANSI-Art-Handling
|
||||||
|
|
||||||
|
- Quellmaterial: `.ANS`-Dateien (transkribiert) sowie Foto-Screenshots als aktuelle visuelle Referenz
|
||||||
|
- Rendering-Strategie: Hybrid (teilweise Live-ANSI-Rendering, größtenteils Fake-BBS-Look mit CP437-Font)
|
||||||
|
- BBS-ANSI-Art-Galerie: ca. 8 Snippets, untereinander, mit Fake-BBS-Kontexttexten dazwischen
|
||||||
|
|
||||||
|
### 7.1 Asset-Intake & Ablage-Konvention
|
||||||
|
|
||||||
|
| Kategorie | Beispiel | Ablageort |
|
||||||
|
|---|---|---|
|
||||||
|
| Design-Referenz | Fotos/Screenshots Original-BBS | `source-assets/reference/` im Haupt-Repo |
|
||||||
|
| Enduser-Downloads | `.ans`, Disk-Images, `.mod`-Dateien | `files.moonweb.org` |
|
||||||
|
|
||||||
|
Kein ZIP im Repo committen (nur als Transportweg). Kebab-case-Dateinamen mit Herkunfts-Tag.
|
||||||
|
|
||||||
|
### 7.2 Bereits gesichtetes Referenzmaterial (Stand 12.08.2026)
|
||||||
|
|
||||||
|
1. Hauptmenü-Screen (rot/pink): Blocklogo, "USEFULL INFORMATION"/"SUPPORTED NETS" mit `º...°`-Divider
|
||||||
|
2. Hauptmenü-Screen (Line-1/Line-2): bestätigt Wortlaut, FidoNet-Adressen, Tagline
|
||||||
|
3. Tr@nceMISSION-Crack-Intro: ASCII-Blocklogo, Stilvorbild (Inhalt nicht übernehmen)
|
||||||
|
4. Regular-Nets-Übersicht: `[ Titel ]`-Rahmenmuster, Buchstaben-Button-Footer
|
||||||
|
5. Pixel-Logo-Variante: Sponsor-Tags, Kandidat für Fidonet-Seite
|
||||||
|
6. ASCII-Slash-Logo mit `%KDS world headquarter%`-Tag
|
||||||
|
7. SkyLINE-PNG-Header: Cyan/Weiß auf Blau-Gradient
|
||||||
|
|
||||||
|
## 8. Content-Modell (Markdown + Frontmatter)
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
title: "Runner"
|
||||||
|
group: "Tropic DREAMs"
|
||||||
|
year: 1991
|
||||||
|
platform: "Atari ST"
|
||||||
|
credits:
|
||||||
|
- role: "Idea"
|
||||||
|
name: "CPK"
|
||||||
|
- role: "Coding"
|
||||||
|
name: "Stefan"
|
||||||
|
description: >
|
||||||
|
An all-round helper tool including a database, memo, system overview,
|
||||||
|
and a game.
|
||||||
|
download_url: "https://files.moonweb.org/atari/tropic-dreams/runner.zip"
|
||||||
|
screenshot: "https://files.moonweb.org/atari/tropic-dreams/runner_shot1.png"
|
||||||
|
file_id_diz: |
|
||||||
|
RUNNER v1.0
|
||||||
|
by Tropic DREAMs
|
||||||
|
All-round helper
|
||||||
|
tool w/ Hangman
|
||||||
|
game. (~25 chars
|
||||||
|
per line wrap)
|
||||||
|
---
|
||||||
|
```
|
||||||
|
|
||||||
|
Content-Sprache in allen Feldern: Englisch (siehe 6.3).
|
||||||
|
|
||||||
|
## 9. Sections & Menüpunkte
|
||||||
|
|
||||||
|
### PC Section
|
||||||
|
Hardware: Colani 486 DX-50 / DOS / VGA / Soundblaster AWE32
|
||||||
|
|
||||||
|
| Menüpunkt | Key | Status | Ziel |
|
||||||
|
|---|---|---|---|
|
||||||
|
| PHOB!A | `P` | Bestehende Subdomain | `moonweb.org/phobia/` |
|
||||||
|
| Tr@nceMISSION | `T` | Bestehende Subdomain, Releases nachtragen | `moonweb.org/tcm/` |
|
||||||
|
| SkyLINE Productions | `S` | **Neue Subseite, MVP #1** | FILE_ID.DIZ-Liste + Screenshots + PNG-Header |
|
||||||
|
| Kosmos Design [KDS] | `K` | **Neue Subseite** | 4 Releases + Fremdproductions integriert |
|
||||||
|
|
||||||
|
### Atari ST Section
|
||||||
|
Hardware: 1040 STFM (1MB) / Mega 4 (4MB, 60MB HDD)
|
||||||
|
|
||||||
|
| Menüpunkt | Key | Status |
|
||||||
|
|---|---|---|
|
||||||
|
| Tropic DREAMs | `D` | **Neue Subseite**, Inhalte vollständig vorhanden (International Kegeln and Bowling 1990, Runner 1991, Atom Oh No! 1991, TOP Tools 1992) |
|
||||||
|
|
||||||
|
### Amiga Section
|
||||||
|
Hardware: Amiga 500, 1MB, 2 Diskdrives
|
||||||
|
|
||||||
|
| Menüpunkt | Key | Status |
|
||||||
|
|---|---|---|
|
||||||
|
| ESPRIT Releases | `E` | **Neue Subseite** – Content TBD |
|
||||||
|
| MOD Files | `F` | **Neue Subseite** mit In-Browser-MOD-Player |
|
||||||
|
|
||||||
|
### BBS & FIDO Section
|
||||||
|
Hardware: 486dx2-66 OS/2 Warp 3; PHOBOS 486dx2-66 OS/2-Mailbox
|
||||||
|
|
||||||
|
| Menüpunkt | Key | Status |
|
||||||
|
|---|---|---|
|
||||||
|
| BBS ANSI Art | `A` | **Neue Subseite** – ca. 8 Snippets |
|
||||||
|
| Fidonets and Nodelists | `N` | **Neue Subseite** – Nodelist 2:2480/330 |
|
||||||
|
|
||||||
|
## 10. Downloads & Asset-Strategie
|
||||||
|
|
||||||
|
Original-Assets werden direkt zum Download angeboten, gehostet auf `files.moonweb.org`. Design-Referenzmaterial separat in `source-assets/reference/`.
|
||||||
|
|
||||||
|
## 11. SEO & Crawlability
|
||||||
|
|
||||||
|
`/bbs/` und alle Subseiten vollständig vorgerendert. `sitemap.xml`/`robots.txt`. Aussagekräftige `<title>`/`<meta description>` (Englisch) pro Subseite.
|
||||||
|
|
||||||
|
## 12. Offene Punkte (TBD)
|
||||||
|
|
||||||
|
- [ ] Weitere `.ANS`-Rohdateien ins Repo übernehmen
|
||||||
|
- [ ] Finale Release-Texte/FILE_ID.DIZ-Inhalte (Englisch) für SkyLINE, Kosmos Design, ESPRIT
|
||||||
|
- [ ] Technisches Setup von `files.moonweb.org`
|
||||||
|
- [ ] Foto vom Amiga 500 nachreichen
|
||||||
|
- [ ] Sponsor-/Affiliation-Tags: welche als Flavor-Text auf der Fidonet-Seite erscheinen
|
||||||
|
- [ ] Cloudflare Pages Projekt-Setup
|
||||||
|
- [ ] Fehlende Tr@nceMISSION-Releases nachtragen
|
||||||
|
- [ ] Referenzbilder gemäß 7.1 ins Repo einpflegen
|
||||||
|
- [ ] **Keymap-Bestätigung** (Tabelle 5.2.1) und Kachel-Reihenfolge im 2×2-Raster
|
||||||
|
- [ ] Konkrete Umsetzung der Dithering-Gradient-Kacheln (Abschnitt 6.1) in der Design-Phase
|
||||||
|
- [ ] Optionaler "Stocken beim Textaufbau"-Effekt: einbauen oder weglassen (nice-to-have, kein Muss)
|
||||||
|
- [x] Legal Notice-Inhalt (Pflichtangaben) zusammenstellen
|
||||||
|
|
||||||
|
## 13. MVP-Reihenfolge (Vorschlag)
|
||||||
|
|
||||||
|
1. Grundgerüst: Astro-Projekt, Terminal-Shell-Komponente, Routing `/`, `/bbs/`
|
||||||
|
2. Modem-Connect-Intro mit Line-1/Line-2-Logik und Sound
|
||||||
|
3. Hauptmenü `/bbs/` mit 2×2-Kachel-Raster und Buchstaben-Button-Footer
|
||||||
|
4. **SkyLINE-Subseite** als erste vollständige Content-Subseite (zweispaltiges Listen-Layout)
|
||||||
|
5. Rollout der übrigen Subseiten nach demselben Template
|
||||||
|
6. MOD-Player-Integration (Amiga-Section)
|
||||||
|
7. Deployment-Pipeline (Cloudflare Pages) parallel von Anfang an aktivieren
|
||||||
|
|
||||||
|
## 14. Wireframes (ASCII-Scribbles, Layout-Sketches)
|
||||||
|
|
||||||
|
**Hinweis:** Grobe Struktur-Skizzen, keine finale ANSI-Kunst. Farbverläufe/Dithering (siehe 6.1) sind hier nur als Kommentar markiert, nicht ausgezeichnet.
|
||||||
|
|
||||||
|
### 14.1 Hauptmenü `/bbs/` – Desktop: 2×2-Kachel-Raster (je Kachel ~40 Zeichen)
|
||||||
|
|
||||||
|
```
|
||||||
|
================================================================================
|
||||||
|
|| [ ASCII-LOGO PLATZHALTER: "tHE tEMPLE bBS" Blockschrift-Banner, ||
|
||||||
|
|| Referenz: source-assets/reference/temple-bbs-mainmenu-red-v1.jpg ] ||
|
||||||
|
|| DemoBoard - MultiNetServer - no ratios - Augsburg, DE ||
|
||||||
|
|| FidoNet: 2:2480/330 - 2:2480/331 ||
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
+--------------------------------------++--------------------------------------+
|
||||||
|
| PC SECTION || ATARI ST SECTION |
|
||||||
|
| <- Kachel-Kopf mit Dither-Gradient || <- Kachel-Kopf mit Dither-Gradient |
|
||||||
|
| (siehe 6.1), Farbe dunkelrot->hellrot || (siehe 6.1), Farbe dunkelrot->hellrot |
|
||||||
|
| || |
|
||||||
|
| Colani 486 DX-50 / DOS / VGA / || 1040 STFM (1MB) / Mega 4 (4MB, |
|
||||||
|
| Soundblaster AWE32 || 60MB HD) |
|
||||||
|
| || |
|
||||||
|
| [P] PHOB!A || [D] Tropic DREAMs |
|
||||||
|
| [T] Tr@nceMISSION || |
|
||||||
|
| [S] SkyLINE Productions || |
|
||||||
|
| [K] Kosmos Design [KDS] || |
|
||||||
|
| || |
|
||||||
|
| (ganze Kachel klickbar + Hover) || (ganze Kachel klickbar + Hover) |
|
||||||
|
+--------------------------------------++--------------------------------------+
|
||||||
|
+--------------------------------------++--------------------------------------+
|
||||||
|
| AMIGA SECTION || BBS & FIDO SECTION |
|
||||||
|
| || |
|
||||||
|
| Amiga 500, 1MB, 2 Diskdrives || 486dx2-66 OS/2 Warp3 / PHOBOS |
|
||||||
|
| || Mailbox |
|
||||||
|
| [E] ESPRIT Releases || [A] BBS ANSI Art |
|
||||||
|
| [F] MOD Files || [N] Fidonets and Nodelists |
|
||||||
|
| || |
|
||||||
|
+--------------------------------------++--------------------------------------+
|
||||||
|
|
||||||
|
[B] Back [Q] Disconnect [I] Legal Notice
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
| t | H | E | | t | E | M | P | L | E | | b | B | S | <- rein dekorativ
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Status: 28800 bps | Line V34 | 28k8.moonweb.org <- Statuszeile
|
||||||
|
================================================================================
|
||||||
|
```
|
||||||
|
|
||||||
|
### 14.1-Mobile Hauptmenü – Kacheln gestapelt (1 Spalte)
|
||||||
|
|
||||||
|
```
|
||||||
|
================================
|
||||||
|
|| ASCII-LOGO (verkleinert) ||
|
||||||
|
================================
|
||||||
|
|
||||||
|
+------------------------------+
|
||||||
|
| PC SECTION |
|
||||||
|
| Colani 486 DX-50 / DOS / |
|
||||||
|
| VGA / Soundblaster AWE32 |
|
||||||
|
| |
|
||||||
|
| [P] PHOB!A |
|
||||||
|
| [T] Tr@nceMISSION |
|
||||||
|
| [S] SkyLINE Productions |
|
||||||
|
| [K] Kosmos Design [KDS] |
|
||||||
|
+------------------------------+
|
||||||
|
|
||||||
|
+------------------------------+
|
||||||
|
| ATARI ST SECTION |
|
||||||
|
| 1040 STFM (1MB) / Mega 4 |
|
||||||
|
| |
|
||||||
|
| [D] Tropic DREAMs |
|
||||||
|
+------------------------------+
|
||||||
|
|
||||||
|
+------------------------------+
|
||||||
|
| AMIGA SECTION |
|
||||||
|
| Amiga 500, 1MB, 2 Disk |
|
||||||
|
| |
|
||||||
|
| [E] ESPRIT Releases |
|
||||||
|
| [F] MOD Files |
|
||||||
|
+------------------------------+
|
||||||
|
|
||||||
|
+------------------------------+
|
||||||
|
| BBS & FIDO SECTION |
|
||||||
|
| 486dx2-66 OS/2 Warp3 |
|
||||||
|
| |
|
||||||
|
| [A] BBS ANSI Art |
|
||||||
|
| [N] Fidonets and Nodelists |
|
||||||
|
+------------------------------+
|
||||||
|
|
||||||
|
[B] Back [Q] Disconnect [I] Legal Notice
|
||||||
|
Status: 28800 bps | V34
|
||||||
|
================================
|
||||||
|
```
|
||||||
|
|
||||||
|
### 14.2 SkyLINE-Subseite `/bbs/pc/skyline` – Desktop, zweispaltige Liste
|
||||||
|
|
||||||
|
```
|
||||||
|
================================================================================
|
||||||
|
|| [ PNG-HEADER: skyline-header.png - Cyan "SKY" + Weiss "LINE" auf ||
|
||||||
|
|| blauem Gradient-Banner, darunter schwarzer Hintergrund ] ||
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
[B] Back to Main Menu 28k8.moonweb.org/bbs/pc/skyline
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------
|
||||||
|
SkyLINE Productions
|
||||||
|
Intro text (TBD, English): Application software for the 486, small tools
|
||||||
|
and subdemos. Most of my own PC releases happened here.
|
||||||
|
--------------------------------------------------------------------------
|
||||||
|
|
||||||
|
+----------------------------------------+ +-------------------------+
|
||||||
|
| TOOLNAME v1.0 | | [ FILE_ID.DIZ ]--[ 01 ] |
|
||||||
|
| by SkyLINE Productions | | .-----------------. |
|
||||||
|
| Year: 199x Platform: DOS/486 | | | TOOLNAME v1.0 | |
|
||||||
|
| Credits: Coding-Stefan | Gfx-... | | | by SkyLINE Prod.| |
|
||||||
|
| | | | --------------- | |
|
||||||
|
| [Screenshot Thumbnail Placeholder] | | | Short descr., | |
|
||||||
|
| (files.moonweb.org, ca. 240x160) | | | wrapped at ~25 | |
|
||||||
|
| | | | chars, like the | |
|
||||||
|
| [D]ownload [S]creenshot [I]nfo | | | original DIZ. | |
|
||||||
|
| | | '-----------------' |
|
||||||
|
| (ganze Box klickbar + Hover) | | (~25 Zeichen breit) |
|
||||||
|
+----------------------------------------+ +-------------------------+
|
||||||
|
|
||||||
|
+----------------------------------------+ +-------------------------+
|
||||||
|
| ... naechstes Release, gleiches Muster, untereinander in der Liste ... |
|
||||||
|
+----------------------------------------+ +-------------------------+
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------
|
||||||
|
[B] Back [Q] Disconnect
|
||||||
|
================================================================================
|
||||||
|
```
|
||||||
|
|
||||||
|
### 14.2-Mobile SkyLINE – gestapelte Spalten pro Release
|
||||||
|
|
||||||
|
```
|
||||||
|
================================
|
||||||
|
|| PNG-HEADER (verkleinert) ||
|
||||||
|
================================
|
||||||
|
[B] Back
|
||||||
|
|
||||||
|
SkyLINE Productions
|
||||||
|
Intro text (TBD, English)...
|
||||||
|
|
||||||
|
+------------------------------+
|
||||||
|
| TOOLNAME v1.0 |
|
||||||
|
| by SkyLINE Productions |
|
||||||
|
| Year: 199x Platform: DOS |
|
||||||
|
| Credits: Coding-Stefan |
|
||||||
|
| |
|
||||||
|
| [Screenshot Placeholder] |
|
||||||
|
| |
|
||||||
|
| [D]ownload [S]creenshot |
|
||||||
|
+------------------------------+
|
||||||
|
+------------------------------+
|
||||||
|
| [ FILE_ID.DIZ ]------[ 01 ] |
|
||||||
|
| .--------------------. |
|
||||||
|
| | TOOLNAME v1.0 | |
|
||||||
|
| | by SkyLINE Prod. | |
|
||||||
|
| | Short descr. text | |
|
||||||
|
| | wrapped ~25 chars | |
|
||||||
|
| '--------------------' |
|
||||||
|
+------------------------------+
|
||||||
|
|
||||||
|
... (naechstes Release darunter) ...
|
||||||
|
|
||||||
|
[B] Back [Q] Disconnect
|
||||||
|
================================
|
||||||
|
```
|
||||||
|
|
||||||
|
## 15. Noch offene Detailfragen
|
||||||
|
|
||||||
|
- [ ] Reihenfolge der Kacheln im 2×2-Raster (Vorschlag: PC oben-links, Atari oben-rechts, Amiga unten-links, BBS&FIDO unten-rechts – zu bestätigen)
|
||||||
|
- [ ] Keymap-Tabelle 5.2.1: passt so oder andere Wunsch-Buchstaben (historisch aus Original-BBS-Menü)?
|
||||||
|
- [ ] Statuszeile: exakte Felder (echte vs. simulierte Uhrzeit, weitere Angaben wie "Time online")
|
||||||
|
- [ ] Optionaler Stocken-Effekt beim Textaufbau: einbauen oder nicht (nice-to-have)
|
||||||
|
- [x] Legal Notice: Pflichtangaben zusammenstellen (Name, Anschrift, Kontakt – rechtlich notwendig)
|
||||||
|
- [ ] Konkrete Farbpaare/Zeichen für die Dithering-Gradient-Kacheln (Abschnitt 6.1) in der Design-Phase festlegen
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Ende PRD v2.0**
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
# 28k8.moonweb.org - tHE tEMPLE bBS Retro Hub (v2)
|
||||||
|
|
||||||
|
A 90s BBS/demoscene retro hub, built with Astro + React Islands, deployed
|
||||||
|
on Cloudflare Pages. No backend, no PHP, no database, no tracking.
|
||||||
|
|
||||||
|
## v2 highlights
|
||||||
|
- The colored TEMPLE ANSI banner now actually renders on the main menu.
|
||||||
|
- Disconnect works correctly (clears state, returns to the intro screen).
|
||||||
|
- SkyLINE has a visible blue accent + a real generated header image.
|
||||||
|
- 10 full ASCII banners with color gradients across every page, an 8-item
|
||||||
|
ANSI-art gallery, and real net-list content from the original screenshots.
|
||||||
|
- Lots more content: Tropic DREAMs (all 4 real releases), SkyLINE (+3),
|
||||||
|
Kosmos Design (7, new), ESPRIT (4, new), MOD Files tracklist.
|
||||||
|
|
||||||
|
## Start here
|
||||||
|
1. PRD.md - requirements + v1.4 changelog
|
||||||
|
2. SPEC.md - technical spec, what changed and why
|
||||||
|
3. PLAN.md - phase-by-phase remaining work
|
||||||
|
|
||||||
|
## Quick start
|
||||||
|
```
|
||||||
|
npm install
|
||||||
|
npm run dev # http://localhost:4321
|
||||||
|
npm run build # -> dist/
|
||||||
|
npm run preview # serve the production build locally
|
||||||
|
```
|
||||||
|
|
||||||
|
## Deployment
|
||||||
|
Cloudflare Pages, connected directly to this repo. Build command
|
||||||
|
`npm run build`, output directory `dist`.
|
||||||
|
|
||||||
|
## WelcomeBanner (Startseite)
|
||||||
|
|
||||||
|
Das "THE TEMPLE BBS"-Logo auf der Startseite wird als CP437-Text mit
|
||||||
|
Typewriter-Animation dargestellt. Der Text kommt aus einer echten
|
||||||
|
CP437-Datei und wird mit einem IBM-VGA-Webfont gerendert.
|
||||||
|
|
||||||
|
### Dateien
|
||||||
|
|
||||||
|
| Datei | Zweck |
|
||||||
|
|---|---|
|
||||||
|
| `source-assets/welcome.txt` | Original-Datei (CP437-kodiert) |
|
||||||
|
| `source-assets/welcome-utf8.txt` | UTF-8-Version, wird von Astro eingelesen |
|
||||||
|
| `src/components/WelcomeBanner.astro` | Komponente (Rendering + Animation) |
|
||||||
|
| `public/fonts/Px437_IBM_VGA_8x16.woff2` | CP437-Webfont (6.6 KB) |
|
||||||
|
| `public/fonts/Px437_IBM_VGA_8x16.ttf` | Font als Fallback |
|
||||||
|
| `src/styles/global.css:2` | `@font-face`-Definition |
|
||||||
|
|
||||||
|
### Warum zwei Textdateien?
|
||||||
|
|
||||||
|
Node.js unterstützt `cp437` nicht in `TextDecoder`. Die Original-Datei
|
||||||
|
wird daher per Python in UTF-8 konvertiert und die `.txt`-Datei mit
|
||||||
|
abgespeichert. Bei Änderungen an `welcome.txt` muss die UTF-8-Version
|
||||||
|
neu generiert werden:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 -c "
|
||||||
|
with open('source-assets/welcome.txt','rb') as f: d=f.read()
|
||||||
|
with open('source-assets/welcome-utf8.txt','w',encoding='utf-8') as f: f.write(d.decode('cp437'))
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Animation anpassen
|
||||||
|
|
||||||
|
In `src/components/WelcomeBanner.astro`, Zeile 24-26:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
const BASE = 8; // Basis-delay pro Zeichen (ms)
|
||||||
|
const FAST = 4; // Delay für Leerzeichen (ms)
|
||||||
|
const HARD_PAUSES: [number, number][] = [[34, 400], [98, 350]];
|
||||||
|
// [Zeichen-Position, Pause in ms]
|
||||||
|
```
|
||||||
|
|
||||||
|
- **`BASE`/`FAST`** kleiner = schneller
|
||||||
|
- **`HARD_PAUSES`** = 2 bewusste Pausen mitten in einer Zeile.
|
||||||
|
Position 34 ≈ Mitte der 1. Zeile, Position 98 ≈ Mitte der 2. Zeile.
|
||||||
|
Werte an Text anpassen wenn sich die Zeilenlängen ändern.
|
||||||
|
|
||||||
|
### Font
|
||||||
|
|
||||||
|
`Px437 IBM VGA 8x16` von int10h.org (Oldschool PC Font Pack v2.2,
|
||||||
|
CC BY-SA 4.0). Enthält 288 Glyphs inkl. aller CP437-Block-Zeichen
|
||||||
|
(█, ▄, ▀, ▌, ▐, ░, ▒, ▓) und Box-Drawing-Zeichen.
|
||||||
|
|
||||||
|
Der Font ist über `--font-ansi` in `global.css` verfügbar und wird
|
||||||
|
auch von den ANSI-Art-Bannern (`ansiArt.ts`) genutzt.
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
# SPEC.md - 28k8.moonweb.org Technical Specification (v2)
|
||||||
|
|
||||||
|
## v2 changes (bug fixes + requested improvements)
|
||||||
|
1. Fixed: ANSI banner not visible - v1 only showed a placeholder <pre> comment.
|
||||||
|
Now rendered via src/components/AnsiArt.astro + src/lib/ansiArt.ts (precomputed
|
||||||
|
colored HTML via set:html, zero JS required).
|
||||||
|
2. Fixed: Disconnect not working - v1's mouse link never cleared localStorage,
|
||||||
|
so '/' bounced straight back to '/bbs/'. Fixed in src/components/NavBar.astro
|
||||||
|
via a plain onclick attribute that clears state before navigating.
|
||||||
|
3. More content: Tropic DREAMs (4 real releases), SkyLINE (+3), Kosmos Design
|
||||||
|
(7, new collection), ESPRIT (4, new collection), MOD Files tracklist, BBS
|
||||||
|
ANSI Art gallery (8 filler patterns), PHOB!A/Tr@nceMISSION teaser text.
|
||||||
|
4. More period ASCII art + gradients: 10 full boxed banners (5x7 bitmap font)
|
||||||
|
each with a dithering gradient bar, plus 9 net-list boxes transcribed
|
||||||
|
verbatim from the original reference screenshots (Fidonet/Nodelist page).
|
||||||
|
5. SkyLINE blue accent strengthened (headings/tiles/diz-box/nav-bar) + a real
|
||||||
|
generated header PNG (public/images/skyline-header.png).
|
||||||
|
|
||||||
|
## Repository layout delta
|
||||||
|
src/lib/ansiArt.ts, src/components/AnsiArt.astro, src/components/NavBar.astro,
|
||||||
|
tools/generate_ansi.py, public/images/skyline-header.png, public/favicon.ico,
|
||||||
|
public/og-image.png, src/content/kosmos-design/*.md, src/content/esprit/*.md
|
||||||
|
|
||||||
|
## AnsiArt contract
|
||||||
|
BANNER_<NAME> / ANSI_GALLERY / BOX_<NAME> exports, HTML with CSS classes
|
||||||
|
c-border-red, c-main-red, c-shadow-red, c-border-blue, c-main-blue,
|
||||||
|
c-shadow-blue, c-white, c-grey, c-pink, c-cyan (all in global.css).
|
||||||
|
Render via <AnsiArt html={BANNER_X} />.
|
||||||
|
|
||||||
|
## NavBar contract
|
||||||
|
optional [B] Back (history.back()), always [Q] Disconnect
|
||||||
|
(clears localStorage.hasConnected via onclick, then navigates to /),
|
||||||
|
optional [I] Impressum & Privacy. Use everywhere instead of ad-hoc links.
|
||||||
|
|
||||||
|
## Everything else
|
||||||
|
Routing table, design tokens, local dev workflow (npm run dev/build/preview),
|
||||||
|
deployment (Cloudflare Pages) - unchanged from v1. See PRD.md and PLAN.md.
|
||||||
@@ -0,0 +1,155 @@
|
|||||||
|
# TODO.md - Offene Aufgaben & Workflow
|
||||||
|
|
||||||
|
Stand: 13.08.2026 | Referenz: PLAN.md, SPEC.md, PRD.md
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## NÄCHSTER SCHRITT: Phase 1 (fertig)
|
||||||
|
|
||||||
|
### P1.1 Build-Chain testen
|
||||||
|
- [x] `npm install` ausgeführt
|
||||||
|
- [x] `npm run dev` → localhost:4321 funktioniert
|
||||||
|
- [x] `npm run build` → dist/ mit 12 Seiten erfolgreich
|
||||||
|
- [x] `npm run preview` → lokaler Production-Server (nächster Schritt)
|
||||||
|
|
||||||
|
### P1.2 Modem-Intro Audio
|
||||||
|
- [x] dial-tone.mp3 besorgen/erstellen → public/audio/
|
||||||
|
- [x] dtmf-beeps.mp3 besorgen/erstellen → public/audio/
|
||||||
|
- [x] modem-handshake.mp3 besorgen/erstellen → public/audio/
|
||||||
|
- [x] ModemIntro.tsx testen (Line 1 = Sound, Line 2 = Direktzugang)
|
||||||
|
|
||||||
|
### P1.3 Pre-Build System
|
||||||
|
- [x] `tools/fetch_mods.py` — MOD-Metadaten von moonweb.org
|
||||||
|
- [x] `prebuild.sh` — ruft alle Pre-Build Stages auf
|
||||||
|
- [x] `npm run build` führt automatisch prebuild.sh aus
|
||||||
|
- [x] `src/data/mods.json` — gecachte MOD-Daten
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## VOR DEM LIVE-TEST
|
||||||
|
|
||||||
|
### Inhalt aufräumen
|
||||||
|
- [ ] Placeholder-Texte in Content-Dateien entfernen (`[Placeholder/fake content]`, PRD.md-Referenzen)
|
||||||
|
- [ ] `src/content/skyline/disk-doctor.md`
|
||||||
|
- [ ] `src/content/skyline/example-tool.md`
|
||||||
|
- [ ] `src/content/skyline/megademo-93.md`
|
||||||
|
- [ ] `src/content/skyline/sky-file-manager.md`
|
||||||
|
- [ ] `src/content/esprit/esprit-utility-music.md`
|
||||||
|
- [ ] `src/content/esprit/esprit-demomaker-1.md`
|
||||||
|
- [ ] `src/content/esprit/esprit-utility-copy.md`
|
||||||
|
- [ ] `src/content/esprit/esprit-demomaker-2.md`
|
||||||
|
- [ ] `src/content/kosmos-design/kds-intro-1.md`
|
||||||
|
- [ ] `src/content/kosmos-design/kds-cracktro-pack.md`
|
||||||
|
- [ ] `src/content/kosmos-design/kds-slideshow.md`
|
||||||
|
- [ ] `src/content/kosmos-design/kds-musicdisk.md`
|
||||||
|
- [ ] Placeholder-Hinweise in Seiten-Descriptions entfernen:
|
||||||
|
- [ ] `src/pages/bbs/pc/skyline.astro` (PRD.md 12)
|
||||||
|
- [ ] `src/pages/bbs/pc/trancemission.astro` (PRD.md section 12)
|
||||||
|
- [ ] `src/pages/bbs/pc/kosmos-design.astro` (PRD.md 12)
|
||||||
|
- [ ] `src/pages/bbs/amiga/esprit.astro` (PRD.md 12)
|
||||||
|
- [ ] `src/pages/bbs/fido/ansi-art.astro` (PRD.md section 3)
|
||||||
|
|
||||||
|
### Asset-Hosting
|
||||||
|
- [ ] `files.moonweb.org` einrichten (Synology oder Static-Fileserver)
|
||||||
|
- [ ] Download-Dateien (.zip, .mod) dort ablegen
|
||||||
|
- [ ] Links in Content-Dateien prüfen/aktualisieren
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## DANACH: Phase 2 - ANSI-Art
|
||||||
|
|
||||||
|
### P2.1 Echte .ans Dateien
|
||||||
|
- [ ] Original .ans Dateien aus den 90ern besorgen
|
||||||
|
- [ ] In source-assets/ansi/ ablegen
|
||||||
|
- [ ] generate_ansi.py anpassen oder neuen Parser schreiben
|
||||||
|
- [ ] In ansiArt.ts einbinden (Fallback auf generierte Patterns)
|
||||||
|
|
||||||
|
### P2.2 CP437 Webfont
|
||||||
|
- [ ] Passenden CP437/DOS-Font beschaffen (Web 437, Perfect DOS VGA 437)
|
||||||
|
- [ ] Als WOFF2 unter public/fonts/ ablegen
|
||||||
|
- [ ] @font-face in global.css korrigieren (aktuell: `src: local('Web 437')` → funktioniert nur wenn Font installiert)
|
||||||
|
- [ ] Testing: ANSI-Art mit echtem Font rendern
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## DANACH: Phase 3 - Navigation
|
||||||
|
|
||||||
|
### P3.1 Mobile Anchors
|
||||||
|
- [ ] /bbs/atari/ → /bbs/#atari als Scroll-Ziel
|
||||||
|
- [ ] /bbs/amiga/ → /bbs/#amiga
|
||||||
|
- [ ] /bbs/fido/ → /bbs/#fido
|
||||||
|
- [ ] /bbs/pc/ → /bbs/#pc (falls nötig)
|
||||||
|
|
||||||
|
### P3.2 View Transitions
|
||||||
|
- [ ] Astro View Transitions einbauen
|
||||||
|
- [ ] Optional: Subtiler Textaufbau-Effekt ("Stottern")
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## DANACH: Phase 4-5 - Content & Visual
|
||||||
|
|
||||||
|
### P4.1 Echte ANSI-Art
|
||||||
|
- [ ] 8 Filler-Patterns durch echte gescannte/analysierte .ans ersetzen
|
||||||
|
- [ ] BBS ANSI Art Seite aktualisieren
|
||||||
|
|
||||||
|
### P4.2 Echte Releases
|
||||||
|
- [ ] SkyLINE: placeholder/disk-doctor.md → echte Inhalte
|
||||||
|
- [ ] SkyLINE: example-tool.md → echte Inhalte
|
||||||
|
- [ ] Kosmos Design: Prüfen ob alle Credits korrekt sind
|
||||||
|
- [ ] ESPRIT: Prüfen ob alle Inhalte korrekt sind
|
||||||
|
- [ ] Tr@nceMISSION: Fehlende Releases nachtragen (PRD.md 12)
|
||||||
|
|
||||||
|
### P4.3 Impressum
|
||||||
|
- [x] Pflichtangaben zusammenstellen (Name, Anschrift, Kontakt)
|
||||||
|
- [x] legal-notice.astro ausfüllen
|
||||||
|
- [x] Auf Englisch (PRD.md 6.3)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## DANACH: Phase 6 - MOD Player
|
||||||
|
|
||||||
|
### P6.1 WASM MOD Player
|
||||||
|
- [x] chiptune3.js (libopenmpt AudioWorklet) eingebunden
|
||||||
|
- [x] `tools/fetch_mods.py` → `src/data/mods.json` (pre-build)
|
||||||
|
- [x] `ModPlayer.tsx` React-Island mit Playlist
|
||||||
|
- [x] `prebuild.sh` Orchestrator für alle Pre-Build Stages
|
||||||
|
- [ ] Echte .mod Dateien auf files.moonweb.org bereitstellen (oder direkt von moonweb.org streamen)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## LETZTE PHASE: 7-8 - Infra & Launch
|
||||||
|
|
||||||
|
### P7.1 Asset-Hosting
|
||||||
|
- [ ] files.moonweb.org einrichten (Synology oder Static-Fileserver)
|
||||||
|
- [ ] Alle Downloads (.ans, .mod, Disk-Images) dort ablegen
|
||||||
|
- [ ] Links in Content-Dateien aktualisieren
|
||||||
|
|
||||||
|
### P7.2 Deployment
|
||||||
|
- [ ] GitHub-Repo veröffentlichen
|
||||||
|
- [ ] Cloudflare Pages Projekt anlegen
|
||||||
|
- [ ] Build-Command: `npm run build`, Output: `dist`
|
||||||
|
- [ ] DNS-Eintrag für 28k8.moonweb.org prüfen
|
||||||
|
- [ ] Erstes Live-Deploy
|
||||||
|
|
||||||
|
### P7.3 SEO & Finalisierung
|
||||||
|
- [ ] sitemap.xml generieren
|
||||||
|
- [ ] robots.txt anlegen
|
||||||
|
- [ ] <title> und <meta description> pro Seite prüfen
|
||||||
|
- [ ] Full click-through Regression Test
|
||||||
|
- [ ] Banner sichtbar auf Hauptmenü?
|
||||||
|
- [ ] Disconnect → localStorage geleert → Redirect zu /?
|
||||||
|
- [ ] Alle Keyboard-Shortcuts funktionieren?
|
||||||
|
- [ ] Mobile Ansicht: Kacheln gestapelt?
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## EMBEDDED CONTEXT (für neuen Chat)
|
||||||
|
|
||||||
|
Wenn du diesen Kontext in einem neuen Chat öffnest:
|
||||||
|
|
||||||
|
1. Lies diese Datei als erstes
|
||||||
|
2. Das NÄCHSTE unmittelbare Ziel steht oben unter "NÄCHSTER SCHRITT"
|
||||||
|
3. Fertige Phasen sind unten (hier aktuell: Phase 1 + Pre-Launch Checklist)
|
||||||
|
4. Referenz-Dokumente: PLAN.md (Roadmap), SPEC.md (Tech-Spec), PRD.md (Anforderungen)
|
||||||
|
5. AGENTS.md hat die Projektstruktur und technischen Details
|
||||||
|
6. Wenn Phase 1 fertig ist → diese Datei aktualisieren, Phase 1 als done markieren, Phase 2 als nächstes setzen
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
import { defineConfig } from 'astro/config';
|
||||||
|
import react from '@astrojs/react';
|
||||||
|
export default defineConfig({ site: 'https://28k8.moonweb.org', integrations: [react()], output: 'static', server: { host: '0.0.0.0' }, vite: { server: { allowedHosts: true } } });
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"name": "28k8-moonweb-org",
|
||||||
|
"version": "0.2.0",
|
||||||
|
"private": true,
|
||||||
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"prebuild": "./prebuild.sh",
|
||||||
|
"dev": "astro dev",
|
||||||
|
"start": "astro dev",
|
||||||
|
"build": "./prebuild.sh && astro build",
|
||||||
|
"preview": "astro preview",
|
||||||
|
"astro": "astro"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@astrojs/react": "^3.6.0",
|
||||||
|
"astro": "^4.15.0",
|
||||||
|
"chiptune3": "^0.8.7",
|
||||||
|
"react": "^18.3.1",
|
||||||
|
"react-dom": "^18.3.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/react": "^18.3.3",
|
||||||
|
"@types/react-dom": "^18.3.0",
|
||||||
|
"typescript": "^5.5.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# prebuild.sh - Run all prebuild stages before `npm run build`.
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# ./prebuild.sh # run all stages
|
||||||
|
# ./prebuild.sh mods # run only the mods fetch
|
||||||
|
#
|
||||||
|
# This script is called automatically by `npm run prebuild`.
|
||||||
|
# Each stage fetches data from external sources and writes JSON
|
||||||
|
# to src/data/. The JSON is committed to the repo so builds
|
||||||
|
# don't depend on external servers.
|
||||||
|
#
|
||||||
|
# To add a new prebuild stage:
|
||||||
|
# 1. Create tools/fetch_<name>.py (or .sh)
|
||||||
|
# 2. Have it write to src/data/<name>.json
|
||||||
|
# 3. Add a case block below
|
||||||
|
# 4. The stage will be called on next prebuild.sh run
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
STAGE="${1:-all}"
|
||||||
|
|
||||||
|
run_stage() {
|
||||||
|
local name="$1"
|
||||||
|
local script="$2"
|
||||||
|
echo "▶ prebuild: $name"
|
||||||
|
if [ ! -f "$SCRIPT_DIR/$script" ]; then
|
||||||
|
echo " ⚠ $script not found, skipping"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
python3 "$SCRIPT_DIR/$script"
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "=== prebuild.sh: running stages ==="
|
||||||
|
|
||||||
|
if [ "$STAGE" = "all" ] || [ "$STAGE" = "mods" ]; then
|
||||||
|
run_stage "mods" "tools/fetch_mods.py"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add new stages here:
|
||||||
|
# if [ "$STAGE" = "all" ] || [ "$STAGE" = "releases" ]; then
|
||||||
|
# run_stage "releases" "tools/fetch_releases.py"
|
||||||
|
# fi
|
||||||
|
|
||||||
|
echo "=== prebuild.sh: done ==="
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Place the three modem intro audio clips here: dial-tone.mp3, dtmf-beeps.mp3, modem-handshake.mp3. Only sound in the project (PRD.md 5.1/6).
|
||||||
|
After Width: | Height: | Size: 769 B |
@@ -0,0 +1 @@
|
|||||||
|
Production web images live here. Large downloadable assets belong on files.moonweb.org (PRD.md 10).
|
||||||
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 8.0 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 24 KiB |
@@ -0,0 +1,124 @@
|
|||||||
|
/*
|
||||||
|
chiptune3 (worklet version) - patched for <script> loading
|
||||||
|
Source: npm chiptune3, only export+import.meta.url changed
|
||||||
|
*/
|
||||||
|
|
||||||
|
const defaultCfg = {
|
||||||
|
repeatCount: -1,
|
||||||
|
stereoSeparation: 100,
|
||||||
|
interpolationFilter: 0,
|
||||||
|
context: false,
|
||||||
|
}
|
||||||
|
|
||||||
|
class ChiptuneJsPlayer {
|
||||||
|
constructor(cfg) {
|
||||||
|
this.config = {...defaultCfg, ...cfg}
|
||||||
|
|
||||||
|
if (this.config.context) {
|
||||||
|
if (!this.config.context.destination) {
|
||||||
|
throw('ChiptuneJsPlayer: This is not an audio context')
|
||||||
|
}
|
||||||
|
this.context = this.config.context
|
||||||
|
this.destination = false
|
||||||
|
} else {
|
||||||
|
this.context = new AudioContext()
|
||||||
|
this.destination = this.context.destination
|
||||||
|
}
|
||||||
|
delete this.config.context
|
||||||
|
|
||||||
|
this.gain = this.context.createGain()
|
||||||
|
this.gain.gain.value = 1
|
||||||
|
|
||||||
|
this.handlers = []
|
||||||
|
|
||||||
|
this.context.audioWorklet.addModule('/js/chiptune3.worklet.js')
|
||||||
|
.then(()=>{
|
||||||
|
this.processNode = new AudioWorkletNode(this.context, 'libopenmpt-processor', {
|
||||||
|
numberOfInputs: 0,
|
||||||
|
numberOfOutputs: 1,
|
||||||
|
outputChannelCount: [2]
|
||||||
|
})
|
||||||
|
this.processNode.port.onmessage = this.handleMessage_.bind(this)
|
||||||
|
this.processNode.port.postMessage({cmd:'config', val:this.config})
|
||||||
|
this.fireEvent('onInitialized')
|
||||||
|
|
||||||
|
this.processNode.connect(this.gain)
|
||||||
|
if (this.destination) this.gain.connect(this.destination)
|
||||||
|
})
|
||||||
|
.catch(e=>console.error(e))
|
||||||
|
}
|
||||||
|
|
||||||
|
handleMessage_(msg) {
|
||||||
|
switch (msg.data.cmd) {
|
||||||
|
case 'meta':
|
||||||
|
this.meta = msg.data.meta
|
||||||
|
this.duration = msg.data.meta.dur
|
||||||
|
this.fireEvent('onMetadata', this.meta)
|
||||||
|
break
|
||||||
|
case 'pos':
|
||||||
|
this.currentTime = msg.data.pos
|
||||||
|
this.order = msg.data.order
|
||||||
|
this.pattern = msg.data.pattern
|
||||||
|
this.row = msg.data.row
|
||||||
|
this.fireEvent('onProgress', msg.data)
|
||||||
|
break
|
||||||
|
case 'end':
|
||||||
|
this.fireEvent('onEnded')
|
||||||
|
break
|
||||||
|
case 'err':
|
||||||
|
this.fireEvent('onError', {type: msg.data.val})
|
||||||
|
break
|
||||||
|
case 'fullAudioData':
|
||||||
|
this.fireEvent('onFullAudioData', msg.data)
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
console.log('Received unknown message',msg.data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fireEvent(eventName, response) {
|
||||||
|
const handlers = this.handlers
|
||||||
|
if (handlers.length) {
|
||||||
|
handlers.forEach(function (handler) {
|
||||||
|
if (handler.eventName === eventName) {
|
||||||
|
handler.handler(response)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
addHandler(eventName, handler) { this.handlers.push({eventName: eventName, handler: handler}) }
|
||||||
|
onInitialized(handler) { this.addHandler('onInitialized', handler) }
|
||||||
|
onEnded(handler) { this.addHandler('onEnded', handler) }
|
||||||
|
onError(handler) { this.addHandler('onError', handler) }
|
||||||
|
onMetadata(handler) { this.addHandler('onMetadata', handler) }
|
||||||
|
onProgress(handler) { this.addHandler('onProgress', handler) }
|
||||||
|
onFullAudioData(handler) { this.addHandler('onFullAudioData', handler) }
|
||||||
|
|
||||||
|
postMsg(cmd, val) {
|
||||||
|
if (this.processNode)
|
||||||
|
this.processNode.port.postMessage({cmd:cmd,val:val})
|
||||||
|
}
|
||||||
|
load(url) {
|
||||||
|
fetch(url)
|
||||||
|
.then(response => response.arrayBuffer())
|
||||||
|
.then(arrayBuffer => this.play(arrayBuffer))
|
||||||
|
.catch(e=>{this.fireEvent('onError', {type: 'Load'})})
|
||||||
|
}
|
||||||
|
play(val) { this.postMsg('play', val) }
|
||||||
|
stop() { this.postMsg('stop') }
|
||||||
|
pause() { this.postMsg('pause') }
|
||||||
|
unpause() { this.postMsg('unpause') }
|
||||||
|
togglePause() { this.postMsg('togglePause') }
|
||||||
|
setRepeatCount(val) { this.postMsg('repeatCount', val) }
|
||||||
|
setPitch(val) { this.postMsg('setPitch', val) }
|
||||||
|
setTempo(val) { this.postMsg('setTempo', val) }
|
||||||
|
setPos(val) { this.postMsg('setPos', val) }
|
||||||
|
setOrderRow(o,r) { this.postMsg('setOrderRow', {o:o,r:r}) }
|
||||||
|
setVol(val) { this.gain.gain.value = val }
|
||||||
|
selectSubsong(val) { this.postMsg('selectSubsong', val) }
|
||||||
|
seek(val) { this.setPos(val) }
|
||||||
|
getCurrentTime() { return this.currentTime }
|
||||||
|
decodeAll(ab) { this.postMsg('decodeAll', ab) }
|
||||||
|
}
|
||||||
|
|
||||||
|
window.ChiptuneJsPlayer = ChiptuneJsPlayer;
|
||||||
@@ -0,0 +1,362 @@
|
|||||||
|
/*
|
||||||
|
AudioWorklet: DrSnuggles
|
||||||
|
*/
|
||||||
|
|
||||||
|
import libopenmptPromise from './libopenmpt.worklet.js'
|
||||||
|
|
||||||
|
// consts
|
||||||
|
const OPENMPT_MODULE_RENDER_STEREOSEPARATION_PERCENT = 2
|
||||||
|
const OPENMPT_MODULE_RENDER_INTERPOLATIONFILTER_LENGTH = 3
|
||||||
|
|
||||||
|
// vars
|
||||||
|
let libopenmpt
|
||||||
|
|
||||||
|
// init
|
||||||
|
libopenmptPromise()
|
||||||
|
.then(res => {
|
||||||
|
libopenmpt = res
|
||||||
|
|
||||||
|
if (!libopenmpt.stackSave) return
|
||||||
|
// set libopenmpt version to display later
|
||||||
|
let stack = libopenmpt.stackSave()
|
||||||
|
libopenmpt.version = libopenmpt.UTF8ToString(libopenmpt._openmpt_get_string(asciiToStack('library_version')))
|
||||||
|
libopenmpt.build = libopenmpt.UTF8ToString(libopenmpt._openmpt_get_string(asciiToStack('build')))
|
||||||
|
libopenmpt.stackRestore(stack)
|
||||||
|
})
|
||||||
|
.catch(e => console.error(e))
|
||||||
|
|
||||||
|
//
|
||||||
|
// Helpers
|
||||||
|
//
|
||||||
|
function asciiToStack(str) {
|
||||||
|
const stackStr = libopenmpt.stackAlloc(str.length + 1) // DrS: needed to export in emscripten
|
||||||
|
writeAsciiToMemory(str, stackStr) // no longer in Emscripten, see below
|
||||||
|
return stackStr
|
||||||
|
}
|
||||||
|
function writeAsciiToMemory(str,buffer,dontAddNull){for(let i=0;i<str.length;++i){libopenmpt.HEAP8[buffer++>>0]=str.charCodeAt(i)}if(!dontAddNull)libopenmpt.HEAP8[buffer>>0]=0}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Processor
|
||||||
|
//
|
||||||
|
class MPT extends AudioWorkletProcessor {
|
||||||
|
constructor() {
|
||||||
|
super()
|
||||||
|
this.port.onmessage = this.handleMessage_.bind(this)
|
||||||
|
this.paused = false
|
||||||
|
this.config = {
|
||||||
|
repeatCount: -1, // -1 = play endless, 0 = play once, do not repeat
|
||||||
|
stereoSeparation: 100, // percents
|
||||||
|
interpolationFilter: 0, // https://lib.openmpt.org/doc/group__openmpt__module__render__param.html
|
||||||
|
}
|
||||||
|
this.channels = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
process(inputList, outputList, parameters) {
|
||||||
|
if (!this.modulePtr || !this.leftPtr || !this.rightPtr || this.paused) return true //silence
|
||||||
|
|
||||||
|
const left = outputList[0][0]
|
||||||
|
const right = outputList[0][1]
|
||||||
|
|
||||||
|
const actualFramesPerChunk = libopenmpt._openmpt_module_read_float_stereo(this.modulePtr, sampleRate, left.length, this.leftPtr, this.rightPtr)
|
||||||
|
if (actualFramesPerChunk == 0) {
|
||||||
|
//this.paused = true
|
||||||
|
// modulePtr will be 0 on openmpt: error: openmpt_module_read_float_stereo: ERROR: module * not valid or other openmpt error
|
||||||
|
const error = !this.modulePtr
|
||||||
|
if (error) {
|
||||||
|
this.port.postMessage({cmd:'err',val:'Process'})
|
||||||
|
} else {
|
||||||
|
this.port.postMessage({cmd:'end'})
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
left.set(libopenmpt.HEAPF32.subarray(this.leftPtr / 4, this.leftPtr / 4 + actualFramesPerChunk))
|
||||||
|
right.set(libopenmpt.HEAPF32.subarray(this.rightPtr / 4, this.rightPtr / 4 + actualFramesPerChunk))
|
||||||
|
|
||||||
|
// post progress
|
||||||
|
// openmpt_module_get_current_order
|
||||||
|
|
||||||
|
let msg = {
|
||||||
|
cmd: 'pos',
|
||||||
|
pos: libopenmpt._openmpt_module_get_position_seconds(this.modulePtr),
|
||||||
|
// pos in song
|
||||||
|
order: libopenmpt._openmpt_module_get_current_order(this.modulePtr),
|
||||||
|
pattern: libopenmpt._openmpt_module_get_current_pattern(this.modulePtr),
|
||||||
|
row: libopenmpt._openmpt_module_get_current_row(this.modulePtr),
|
||||||
|
// channel volumes
|
||||||
|
//chVol: [], // ch0Left, ch0Right, ch1Left, ...
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
for (let i = 0; i < this.channels; i++) {
|
||||||
|
msg.chVol.push( {
|
||||||
|
left: libopenmpt._openmpt_module_get_current_channel_vu_left(this.modulePtr, i),
|
||||||
|
right: libopenmpt._openmpt_module_get_current_channel_vu_right(this.modulePtr, i),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
this.port.postMessage( msg )
|
||||||
|
|
||||||
|
return true // def. needed for Chrome
|
||||||
|
}
|
||||||
|
|
||||||
|
handleMessage_(msg) {
|
||||||
|
//console.log('[Processor:Received]',msg.data)
|
||||||
|
const v = msg.data.val
|
||||||
|
switch (msg.data.cmd) {
|
||||||
|
case 'config':
|
||||||
|
this.config = v
|
||||||
|
break
|
||||||
|
case 'play':
|
||||||
|
this.play(v, false)
|
||||||
|
break
|
||||||
|
case 'pause':
|
||||||
|
this.paused = true
|
||||||
|
break
|
||||||
|
case 'unpause':
|
||||||
|
this.paused = false
|
||||||
|
break
|
||||||
|
case 'togglePause':
|
||||||
|
this.paused = !this.paused
|
||||||
|
break
|
||||||
|
case 'stop':
|
||||||
|
this.stop()
|
||||||
|
break
|
||||||
|
case 'meta':
|
||||||
|
this.meta()
|
||||||
|
break
|
||||||
|
case 'repeatCount':
|
||||||
|
this.config.repeatCount = v
|
||||||
|
if (!this.modulePtr) return
|
||||||
|
libopenmpt._openmpt_module_set_repeat_count(this.modulePtr, this.config.repeatCount)
|
||||||
|
break
|
||||||
|
case 'setPitch':
|
||||||
|
if (!libopenmpt.stackSave || !this.modulePtr) return
|
||||||
|
libopenmpt._openmpt_module_ctl_set(this.modulePtr, asciiToStack('play.pitch_factor'), asciiToStack(v.toString()))
|
||||||
|
break
|
||||||
|
case 'setTempo':
|
||||||
|
if (!libopenmpt.stackSave || !this.modulePtr) return
|
||||||
|
libopenmpt._openmpt_module_ctl_set(this.modulePtr, asciiToStack('play.tempo_factor'), asciiToStack(v.toString()))
|
||||||
|
break
|
||||||
|
case 'selectSubsong':
|
||||||
|
if (!this.modulePtr) return
|
||||||
|
libopenmpt._openmpt_module_select_subsong(this.modulePtr, v)
|
||||||
|
//this.meta()
|
||||||
|
break
|
||||||
|
case 'setPos':
|
||||||
|
if (!this.modulePtr) return
|
||||||
|
libopenmpt._openmpt_module_set_position_seconds(this.modulePtr, v)
|
||||||
|
break
|
||||||
|
case 'setOrderRow':
|
||||||
|
if (!this.modulePtr) return
|
||||||
|
libopenmpt._openmpt_module_set_position_order_row(this.modulePtr, v.o, v.r)
|
||||||
|
break
|
||||||
|
/*
|
||||||
|
case 'toggleMute'
|
||||||
|
// openmpt_module_ext_get_interface(mod_ext, interface_id, interface, interface_size)
|
||||||
|
// openmpt_module_ext_interface_interactive
|
||||||
|
// set_channel_mute_status
|
||||||
|
// https://lib.openmpt.org/doc/group__libopenmpt__ext__c.html#ga0275a35da407cd092232a20d3535c9e4
|
||||||
|
if (!this.modulePtr) return
|
||||||
|
//const extPtr = libopenmpt.openmpt_module_ext_get_interface(mod_ext, interface_id, interface, interface_size)
|
||||||
|
break
|
||||||
|
*/
|
||||||
|
case 'decodeAll':
|
||||||
|
this.decodeAll(v)
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
console.log('Received unknown message',msg.data)
|
||||||
|
}
|
||||||
|
} // handleMessage_
|
||||||
|
|
||||||
|
decodeAll(buffer) {
|
||||||
|
this.play(buffer, true)
|
||||||
|
|
||||||
|
// now build the full audioData
|
||||||
|
const left = [], right = []
|
||||||
|
const maxFramesPerChunk = 128
|
||||||
|
let actualFramesPerChunk = libopenmpt._openmpt_module_read_float_stereo(this.modulePtr, sampleRate, maxFramesPerChunk, this.leftPtr, this.rightPtr)
|
||||||
|
while (actualFramesPerChunk != 0) {
|
||||||
|
left.push( ...libopenmpt.HEAPF32.subarray(this.leftPtr / 4, this.leftPtr / 4 + actualFramesPerChunk) )
|
||||||
|
right.push( ...libopenmpt.HEAPF32.subarray(this.rightPtr / 4, this.rightPtr / 4 + actualFramesPerChunk) )
|
||||||
|
actualFramesPerChunk = libopenmpt._openmpt_module_read_float_stereo(this.modulePtr, sampleRate, maxFramesPerChunk, this.leftPtr, this.rightPtr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// post final data
|
||||||
|
let msg = {
|
||||||
|
cmd: 'fullAudioData',
|
||||||
|
meta: this.getMeta(),
|
||||||
|
data: [left,right]
|
||||||
|
}
|
||||||
|
this.port.postMessage( msg )
|
||||||
|
|
||||||
|
this.stop()
|
||||||
|
}
|
||||||
|
|
||||||
|
play(buffer, paused = false) {
|
||||||
|
this.stop()
|
||||||
|
|
||||||
|
const maxFramesPerChunk = 128 // thats what worklet is using
|
||||||
|
const byteArray = new Int8Array(buffer)
|
||||||
|
const ptrToFile = libopenmpt._malloc(byteArray.byteLength)
|
||||||
|
libopenmpt.HEAPU8.set(byteArray, ptrToFile)
|
||||||
|
this.modulePtr = libopenmpt._openmpt_module_create_from_memory(ptrToFile, byteArray.byteLength, 0, 0, 0)
|
||||||
|
|
||||||
|
if(this.modulePtr === 0) {
|
||||||
|
// could not create module
|
||||||
|
this.port.postMessage({cmd:'err',val:'ptr'})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (libopenmpt.stackSave) {
|
||||||
|
const stack = libopenmpt.stackSave()
|
||||||
|
libopenmpt._openmpt_module_ctl_set(this.modulePtr, asciiToStack('render.resampler.emulate_amiga'), asciiToStack('1'))
|
||||||
|
libopenmpt._openmpt_module_ctl_set(this.modulePtr, asciiToStack('render.resampler.emulate_amiga_type'), asciiToStack('a1200'))
|
||||||
|
//libopenmpt._openmpt_module_ctl_set('play.pitch_factor', e.target.value.toString());
|
||||||
|
|
||||||
|
libopenmpt.stackRestore(stack)
|
||||||
|
}
|
||||||
|
|
||||||
|
this.paused = paused
|
||||||
|
this.leftPtr = libopenmpt._malloc(4 * maxFramesPerChunk) // 4x = float
|
||||||
|
this.rightPtr = libopenmpt._malloc(4 * maxFramesPerChunk)
|
||||||
|
|
||||||
|
// set config options on module
|
||||||
|
libopenmpt._openmpt_module_set_repeat_count(this.modulePtr, this.config.repeatCount)
|
||||||
|
libopenmpt._openmpt_module_set_render_param(this.modulePtr, OPENMPT_MODULE_RENDER_STEREOSEPARATION_PERCENT, this.config.stereoSeparation)
|
||||||
|
libopenmpt._openmpt_module_set_render_param(this.modulePtr, OPENMPT_MODULE_RENDER_INTERPOLATIONFILTER_LENGTH, this.config.interpolationFilter)
|
||||||
|
|
||||||
|
// post back tracks metadata
|
||||||
|
if (!paused) this.meta()
|
||||||
|
}
|
||||||
|
stop() {
|
||||||
|
if (!this.modulePtr) return
|
||||||
|
if (this.modulePtr != 0) {
|
||||||
|
libopenmpt._openmpt_module_destroy(this.modulePtr)
|
||||||
|
this.modulePtr = 0
|
||||||
|
}
|
||||||
|
if (this.leftBufferPtr != 0) {
|
||||||
|
libopenmpt._free(this.leftBufferPtr)
|
||||||
|
this.leftBufferPtr = 0
|
||||||
|
}
|
||||||
|
if (this.rightBufferPtr != 0) {
|
||||||
|
libopenmpt._free(this.rightBufferPtr)
|
||||||
|
this.rightBufferPtr = 0
|
||||||
|
}
|
||||||
|
this.channels = 0
|
||||||
|
}
|
||||||
|
meta() {
|
||||||
|
this.port.postMessage({cmd: 'meta', meta: this.getMeta()})
|
||||||
|
}
|
||||||
|
getSong() {
|
||||||
|
if (!libopenmpt.UTF8ToString || !this.modulePtr) return false
|
||||||
|
|
||||||
|
// https://lib.openmpt.org/doc/
|
||||||
|
let song = {
|
||||||
|
channels: [],
|
||||||
|
instruments: [],
|
||||||
|
samples: [],
|
||||||
|
orders: [],
|
||||||
|
numSubsongs: libopenmpt._openmpt_module_get_num_subsongs(this.modulePtr),
|
||||||
|
patterns: [],
|
||||||
|
}
|
||||||
|
// channels
|
||||||
|
const chNum = libopenmpt._openmpt_module_get_num_channels(this.modulePtr)
|
||||||
|
this.channel = chNum
|
||||||
|
for (let i = 0; i < chNum; i++) {
|
||||||
|
song.channels.push( libopenmpt.UTF8ToString(libopenmpt._openmpt_module_get_channel_name(this.modulePtr, i)) )
|
||||||
|
}
|
||||||
|
// instruments
|
||||||
|
for (let i = 0, e = libopenmpt._openmpt_module_get_num_instruments(this.modulePtr); i < e; i++) {
|
||||||
|
song.instruments.push( libopenmpt.UTF8ToString(libopenmpt._openmpt_module_get_instrument_name(this.modulePtr, i)) )
|
||||||
|
}
|
||||||
|
// samples
|
||||||
|
for (let i = 0, e = libopenmpt._openmpt_module_get_num_samples(this.modulePtr); i < e; i++) {
|
||||||
|
song.samples.push( libopenmpt.UTF8ToString(libopenmpt._openmpt_module_get_sample_name(this.modulePtr, i)) )
|
||||||
|
}
|
||||||
|
// orders
|
||||||
|
for (let i = 0, e = libopenmpt._openmpt_module_get_num_orders(this.modulePtr); i < e; i++) {
|
||||||
|
song.orders.push( {
|
||||||
|
name: libopenmpt.UTF8ToString(libopenmpt._openmpt_module_get_order_name(this.modulePtr, i)),
|
||||||
|
pat: libopenmpt._openmpt_module_get_order_pattern(this.modulePtr, i),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// patterns
|
||||||
|
for (let patIdx = 0, patNum = libopenmpt._openmpt_module_get_num_patterns(this.modulePtr); patIdx < patNum; patIdx++) {
|
||||||
|
const pattern = {
|
||||||
|
name: libopenmpt.UTF8ToString(libopenmpt._openmpt_module_get_pattern_name(this.modulePtr, patIdx)),
|
||||||
|
rows: [],
|
||||||
|
}
|
||||||
|
// rows
|
||||||
|
for(let rowIdx = 0, rowNum = libopenmpt._openmpt_module_get_pattern_num_rows(this.modulePtr, patIdx); rowIdx < rowNum; rowIdx++) {
|
||||||
|
const row = []
|
||||||
|
// channels
|
||||||
|
for (let chIdx = 0; chIdx < chNum; chIdx++) {
|
||||||
|
const channel = []
|
||||||
|
for (let comIdx = 0; comIdx < 6; comIdx++) {
|
||||||
|
/* commands
|
||||||
|
OPENMPT_MODULE_COMMAND_NOTE = 0
|
||||||
|
OPENMPT_MODULE_COMMAND_INSTRUMENT = 1
|
||||||
|
OPENMPT_MODULE_COMMAND_VOLUMEEFFECT = 2
|
||||||
|
OPENMPT_MODULE_COMMAND_EFFECT = 3
|
||||||
|
OPENMPT_MODULE_COMMAND_VOLUME = 4
|
||||||
|
OPENMPT_MODULE_COMMAND_PARAMETER = 5
|
||||||
|
*/
|
||||||
|
channel.push( libopenmpt._openmpt_module_get_pattern_row_channel_command(this.modulePtr, patIdx, rowIdx, chIdx, comIdx) )
|
||||||
|
}
|
||||||
|
row.push( channel )
|
||||||
|
}
|
||||||
|
pattern.rows.push( row )
|
||||||
|
}
|
||||||
|
song.patterns.push( pattern )
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return song
|
||||||
|
}
|
||||||
|
getMeta() {
|
||||||
|
if (!libopenmpt.UTF8ToString || !this.modulePtr) return false
|
||||||
|
|
||||||
|
const data = {}
|
||||||
|
data.dur = libopenmpt._openmpt_module_get_duration_seconds(this.modulePtr)
|
||||||
|
if (data.dur == 0) {
|
||||||
|
// looks like an error occured reading the mod
|
||||||
|
this.port.postMessage({cmd:'err',val:'dur'})
|
||||||
|
}
|
||||||
|
const keys = libopenmpt.UTF8ToString(libopenmpt._openmpt_module_get_metadata_keys(this.modulePtr)).split(';')
|
||||||
|
for (let i = 0; i < keys.length; i++) {
|
||||||
|
const keyNameBuffer = libopenmpt._malloc(keys[i].length + 1)
|
||||||
|
writeAsciiToMemory(keys[i], keyNameBuffer)
|
||||||
|
data[keys[i]] = libopenmpt.UTF8ToString(libopenmpt._openmpt_module_get_metadata(this.modulePtr, keyNameBuffer))
|
||||||
|
libopenmpt._free(keyNameBuffer)
|
||||||
|
}
|
||||||
|
data.song = this.getSong()
|
||||||
|
data.totalOrders = data.song.orders.length // libopenmpt._openmpt_module_get_num_orders(this.modulePtr)
|
||||||
|
data.totalPatterns = data.song.patterns.length// libopenmpt._openmpt_module_get_num_patterns(this.modulePtr)
|
||||||
|
data.songs = this.getSongs()
|
||||||
|
data.libopenmptVersion = libopenmpt.version
|
||||||
|
data.libopenmptBuild = libopenmpt.build
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
getSongs() {
|
||||||
|
if (!libopenmpt.UTF8ToString) return '' // todo: ?? why string here
|
||||||
|
|
||||||
|
const subsongs = libopenmpt._openmpt_module_get_num_subsongs(this.modulePtr)
|
||||||
|
const names = []
|
||||||
|
for (let i = 0; i < subsongs; i++) {
|
||||||
|
const namePtr = libopenmpt._openmpt_module_get_subsong_name(this.modulePtr, i)
|
||||||
|
const name = libopenmpt.UTF8ToString(namePtr)
|
||||||
|
if(name != "") {
|
||||||
|
names.push(name)
|
||||||
|
} else {
|
||||||
|
names.push("Subsong " + (i + 1))
|
||||||
|
}
|
||||||
|
libopenmpt._openmpt_free_string(namePtr)
|
||||||
|
}
|
||||||
|
return names
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
registerProcessor('libopenmpt-processor', MPT)
|
||||||
|
After Width: | Height: | Size: 18 KiB |
@@ -0,0 +1,16 @@
|
|||||||
|
[?7h[40m[2J[31C[0;1;30mммммммммммммммм
|
||||||
|
[17Cммммммлллллллллллллллллллллллллллллллллмммммм
|
||||||
|
[12CммлллВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВл[41mпп[40mллллмм
|
||||||
|
[11CлВ[41mпп[40mВВБББББББББББББББББББББББББББББББББББББББББ[0;31mо[1;41mАА[0;31mн[1;30mВВВВВл
|
||||||
|
[11Cл[0;31mо[1;41mАА[0;31mн[1;30mАААААААА[0;31mмммм[1;30mААААА[0;31mмммм[1;30mААААА[0;31mмммм[1;30mААААА[0;31mмммм[1;30mААА[0;31mл[1;41mББ[0;31mн[1;30mБББББл
|
||||||
|
[11Cл[0;31mо[1;41mББ[0;31mн[7C[41m [1;40mлллл[41mм[0;31mм [41m [1;40mлллл[41mм[0;31mм [41m [1;40mлллл[41mм[0;31mм [41m [1;40mлллл[41mм[0;31mм о[1;41mВВ[40mл[41mммм[0;31mм[1;30mАл
|
||||||
|
[11Cл[0;31mо[1;41mВВ[0;31mн[6Cо[1mл[41mп[0;31mпп[1;41mп[40mлл[0;31mно[1mл[41mп[0;31mпп[1;41mп[40mлл[0;31mно[1mл[41mп[0;31mпп[1;41mп[40mлл[0;31mно[1mл[41mп[0;31mпп[1;41mп[40mлл[0;31mно[1mл[41mп[0;31mпп[1;41mп[40mлл[0;31mн[1;30mл
|
||||||
|
[11Cл[0;31mо[1mлл[41m [3C[0;31mмм о[1mл[0;31mл л[1;41mВВ[0;31mно[1mл[0;31mл л[1;41mВВ[0;31mно[1mл[0;31mл л[1;41mВВ[0;31mно[1mл[0;31mл[1;41mппппп[0;31mно[1mл[0;31mл л[1;41mВВ[0;31mн[1;30mл
|
||||||
|
[11Cл [0;31mл[1mлл[0;31mлмл[1;41mБА[0;31mно[1mлл[41mмБВ[40mл[0;31mл о[1mлл[41mмБВ[40mл[0;31mл о[1mлл[41mмБВ[40mл[0;31mл о[1mлл[41mмБВ[40mл[0;31mлмо[1mлл[41mмБВ[40mл[0;31mл [1;30mл
|
||||||
|
[11Cлм [0;31mл[1mлл[41mВБА[0;31mл пл[1mлллл[0;31mнм пл[1mлллл[0;31mнм пл[1mлллл[0;31mн пл[1mлллл[41mлл[0;31mнпл[1mлллл[0;31mн [1;30mл
|
||||||
|
[12Cл [0;31mппппп[5Cппппо[1mл[0;31mлм пл[1mл[0;31mло[1mл[0;31mлм пл[1mл[0;31mл[5Cпппппп пппп [1;30mл
|
||||||
|
[13Cппппппппппппппл [0;31mо[1mллл[0;31mлл[1;41mВБ[0;31mно[1mллл[0;31mлл[1;41mВБ[0;31mн [1;30mлппппппппппппппппп
|
||||||
|
[13C[34mў[36mњ[37mO[36mњ[34mў[36mњ[37mU[36mњ[34mў[36mњ[37mT[36mњ[34mў [30mпм [0;31mпл[1mл[41mВБА[0;31mл пл[1mл[41mВБА[0;31mл [1;30mл[5C[34mў[36mњ[37mO[36mњ[34mў[36mњ[37mF[36mњ[34mў [30m[mJ]
|
||||||
|
[10Cммммммммммммммммммлмм [0;31mпппп [1;30mмммм [0;31mппп [1;30mмлммммммммммммммммммммм
|
||||||
|
[10Cо[0;31mўњtњўњHњўњEњў ўњtњўњEњўњMњўњPњўњLњўњEњў ўњbњўњBњўњSњў[1;30mн
|
||||||
|
[10Cппппппппппппппппппппппппппппппппппппппппппппппппппппппппппп[0m
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[?7h[40m[2J[9C[0;34m°±²°±²°±² °±² °±² °±² °±² °±² °±² °±² °±² °±²°±²°
|
||||||
|
[9C°±²[7C°±² °±² °±² °±² °±² °±² °±²° °±² °±²
|
||||||
|
[9C°±²°±²°±² °±²°±² °±²°±²°±² °±² °±² °±²°±²°±² °±²°±²
|
||||||
|
[1;37mÚÄÄÄÄÄÄÄÄ¿[5C[0;34m°±² °±² °±²[7C°±² °±² °±² °±² ²°±² °±²
|
||||||
|
[1;37m³[0;34múúúúúúúú[1;37m³[0;34m±²°±²°±² °±² °±²[7C°±² °±²°±² °±² °±² °±² °±²°±²°[1;37mÚÄÄÄÄÄÄÄÄÄÄÄ¿[6;1H³[0;34mú[1;33mú[0;34múú[1;33mú[0;34múúú[1;37m³[22CÚÄÄÄÄÄÄÄÄ¿[25C³[0;34múúú[1;33mú[0;34múú[1;33mú[0;34múúúú[1;37m³[7;1H³[0;34múúúú[1;33mú[0;34múúú[1;37m³[8CÚÄÄÄÄÄ¿[7C³[33mú[0;34múúúúúúú[1;37mÃÄÄÄÄÄ¿[19C³[0;34múúúúúú[1;33mú[0;34múúúú[1;37m³[8;1H³[0;34múúúúúúúú[1;37mÃÄÄÄÄÄÄÄÄ´[0;34múúúúú[1;37m³[7C³[0;34múúúúú[1;33mú[0;34múú[1;37m³[33mú[0;34múú[1;33mú[0;34mú[1;37m³ ÚÄÄÄÄÄÄÄÄÄ¿[6C³[0;34múúú[1;33mú[0;34múúúúú[1;33mú[0;34mú[1;37m³[9;1H³[33mú[0;34múú[1;33mú[0;34múúúú[1;37m³[0;34múúúúú[1;33mú[0;34múú[1;37m³[0;34múú[1;33mú[0;34múú[1;37m³ ÚÄÄÄÄ´[0;34mú[1;33mú[0;34múúú[1;33mú[0;34múú[1;37m³[33mú[0;34múúúú[1;37m³ ³[0;34mú[1;33mú[0;34múú[1;33mú[0;34múúúú[1;37mÃÄÄÄÄÄÄ´[0;34múúúúúúú[1;33mú[0;34múúú[1;37m³[10;1H³[0;34múúúúúúúú[1;37m³[0;34múúúúúúúú[1;37m³[0;34mú[1;33mú[0;34múúú[1;37mÃÄÄ´[33mú[0;34múúú[1;37m³[0;34múúúúúúúú[1;37m³[0;34múúúú[1;33mú[37mÃÄÄ´[0;34múúúúúú[1;33mú[0;34múú[1;37m³[0;34múú[1;33mú[0;34múúú[1;37m³[0;34múúú[1;33mú[0;34múúúúúúú[1;37m³[11;1H³[8C³[8C³[5C³ ³ ³[8C³[5C³ ³[9C³[6C³[11C³[12;1H
|
||||||
|
[0;34mÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿[14;1H³[7C[1mFILES[7C[0;34m³[5C[1mDATABASE[5C[0;34m³ [1mMISCELLANEOUS [0;34m³ [1mSYSOP OPTIONS [0;34m³[15;1HÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´[16;1H³[1;36m([37mC[36m)[0;36mhange file area [34m³[1;36m([37mM[36m)[0;36message system [34m³[1;36m([37mT[36m)[0;36mime on system [34m³[1;36m([37m&[36m) [0;36mAdd Filedesc. [34m³[17;1H³[1;36m([37mF[36m)[0;36mile descriptions[34m³[1;36m([37mQ[36m)[0;36muestionnaire [34m³[1;36m([37mO[36m)[0;36mperator chat [34m³[1;36m([37m*[36m) [0;36mRead Sysoplog [34m³[18;1H³[1;36m([37mP[36m)[0;36mrogram directory[34m³[18C³[1;36m([37mA[36m)[0;36mnsi color on/off[34m³[1;36m([37mS[36m)[0;36mearch for File [34m³[19;1H³[1;36m([37mZ[36m)[0;36mippy file scan [34m³[1;36m([37mV[36m)[0;36miew bulletins [34m³[1;36m([37mX[36m)[0;36mpert mode toggle[34m³[1;36m([37mL[36m)[0;36mog Drive[8C[34m³[20;1H³[1;36m([37mD[36m)[0;36mownload file(s) [34m³[18C³[1;36m([37mH[36m)[0;36melp with BBS [34m³[1;36m([37m+[36m) [0;36mTrap Doors[5C[34m³[21;1H³[1;36m([37mU[36m)[0;36mpload file(s) [34m³[1;36m([37mK[36m)[0;36mnown caller log[34m³[1;36m([37mG[36m)[0;36moodbye log off [34m³[1;36m([37mE[36m)[0;36mcho Mail[8C[34m³[22;1HÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ[23;1H
|
||||||
|
|
||||||
|
[0m[255D
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
[?7h[40m[2J[8C[0;1;31mロ ロ ロ゚゚゚゚[8Cロ゚゚゚゚ ロワ ワロ ロ゚゚゚ワ ロ[5Cロ゚゚゚゚[10Cロ゚゚゚ワ ワ゚゚゚ワ
|
||||||
|
[5Cロ イ イ イ[9Cロ イ[5Cイ ゚ イ イ ロ イ[5Cイ[8Cロ[5Cイ イ イ
|
||||||
|
゚ア゚ ア ゚ ア ア ゚゚[5C゚ア゚ ア ゚゚ ア ア ア ゚゚ ア[5Cア ゚゚[5Cアワ゚゚ワ ア ゚ワ ゚゚゚ワ
|
||||||
|
[5Cー ー ー ー[9Cー ー[5Cー ー ー[5Cー[5Cー[8Cーワ ー ー ー ワ ー
|
||||||
|
[5C[0;31m゚ ゚ ゚ ゚゚゚゚゚[5C゚ ゚゚゚゚゚ ゚ ゚ ゚[5C゚゚゚゚゚ ゚゚゚゚゚ ゚ ゚゚ ゚゚゚゚ ゚゚゚
|
||||||
|
[13C[37mMULTI-NET-SERVER AUGSBURG - ONLINE: 2.00 - 5.30 - MAILONLY
|
||||||
|
|
||||||
|
|
||||||
|
[7C[31mレトト[ [37mRegular Nets [31m]トトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトソ
|
||||||
|
[7Cウ[1mTelefonNet......49:821/416484[6CFidoNet............2:2480/330[0;31mウ
|
||||||
|
[7Cタトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトル
|
||||||
|
|
||||||
|
[7Cレトト[ [37mFido Clone Nets [31m]トトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトソ
|
||||||
|
[7Cウ[1mXcessNet.........213:315/8630[6CNightNet......1000:10499/3033[0;31mウ
|
||||||
|
[7Cタトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトル
|
||||||
|
|
||||||
|
[7Cレトト[ [37mNets with single Topics [31m]トトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトソ
|
||||||
|
[7Cウ[1mKingsNet.........900:4990/115[6CSysopnet.........129:1492/130[0;31mウ
|
||||||
|
[7Cウ[1mSF-net............142:106/830[6CRavenet...........303:498/330[0;31mウ
|
||||||
|
[7Cウ[1mGernet.............21:496/330[6CMedNet...........80:4091/9177[0;31mウ
|
||||||
|
[7Cウ[1mMediaNet..........24:2510/220[6CPressNet.........193:2490/120[0;31mウ
|
||||||
|
[7Cタトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトル
|
||||||
|
|
||||||
|
[7Cレトト[ [37mSpecial Nets [31m]トトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトソ
|
||||||
|
[7Cウ[1m999er-MBG............999:2/56[6CBavariaNet.........95:106/113[0;31mウ
|
||||||
|
[7Cタトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトル
|
||||||
|
|
||||||
|
[7Cレトト[ [37mChat Nets [31m]トトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトソ
|
||||||
|
[7Cウ[1mUP-Net............??:498/soon[6CTacoNet............31:4990/22[0;31mウ
|
||||||
|
[7Cウ[1mPseudoNet...........33:104/20[6CFFNet..............60:666/330[0;31mウ
|
||||||
|
[7Cウ[1mPhantasy Net.....202:498/3030[6CBierNet............44:510/230[0;31mウ
|
||||||
|
[7Cタトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトル
|
||||||
|
|
||||||
|
[7Cレトト[ [37mDemo Nets [31m]トトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトソ
|
||||||
|
[7Cウ[1mAquaNet...........139:5050/41[6CScene-Net..........99:200/530[0;31mウ
|
||||||
|
[7Cタトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトル
|
||||||
|
|
||||||
|
[9Cレトトトソレトトトソレトトトソ レトトトソレトトトソレトトトソレトトトソレトトトソレトトトソ レトトトソレトトトソレトトトソ
|
||||||
|
[9Cウ [1mt [0;31mウウ [1mH [0;31mウウ [1mE [0;31mウ ウ [1mt [0;31mウウ [1mE [0;31mウウ [1mM [0;31mウウ [1mP [0;31mウウ [1mL [0;31mウウ [1mE [0;31mウ ウ [1mb [0;31mウウ [1mB [0;31mウウ [1mS [0;31mウ
|
||||||
|
[9Cタトトトルタトトトルタトトトル タトトトルタトトトルタトトトルタトトトルタトトトルタトトトル タトトトルタトトトルタトトトル
|
||||||
|
[7C[37mTHE DEMOBOARD IN AUGSBURG - FREQ FILES - FREE POINTS AND DOWNLINKS
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[0m[255D
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
[?7h[40m[2J[13C[0;1;31mÜÜÜþ
|
||||||
|
[8CþÛÛÛÛÛß[34CúßÛÛÛ[6C²ÛÛ
|
||||||
|
ÛÛÛÛÛÛÛ² ÛÛÛþ[11CþßÛÛ þÜ[7CÛÛÛ² ÛÛ[5CÛÛÛ[6CÛÛÛþ
|
||||||
|
ÛÛ ÛÛÛ[5CÛÛÛ ÛÛÛú ÛÛÛÜ ÛÛÛ úÛÛÛ ÛÛÛ úÛÛ ÛÛÛ[7CÛÛ² ÛÛÛú
|
||||||
|
[7CÛÛÛ[5C²ÛÛ úßÛÛ ÛÛ² ÛÛÛ ÛÛÛ ÛÛÛ[6CÛÛ ÛÛÛ[6CÛÛÛ úßÛÛ
|
||||||
|
[0;31mtHE [1mÛÛÛ[5CÛÛÛ[9CÛÛÛ ÛÛÛ ÛÛÛ ÛÛÛ[6CÛÛ ÛÛÛ[7CÛÛÛ
|
||||||
|
[6CÛÛÛú ÛÛÛ[10CÛÛÛ ÛÛ² ÛÛÛ ÛÛÛ[5CÛÛÛ ÛÛÛ[6CÛÛÛ
|
||||||
|
[6CÛÛÛ[5CÛÛ²ÛÜÜþ[5CÛÛÛú þß[5CÛÛÛ ÛÛÛ ßþÛÛÛ ÛÛÛ[7CÛÛÛÛÜÜþ
|
||||||
|
[5CÛÛÛú ÛÛÛ ßÛú[5CÛÛÛ[9CÛÛÛ ÛÛÛ[10CúÛÛ²[6CÛÛÛ ßÛú [0;31mbBS
|
||||||
|
[5C[1mÛÛÛ[5CÛÛÛ[9CÛÛÛ[9CÛÛÛú ÛÛÛ[10CÛÛÛ[5Cú ÛÛÛ
|
||||||
|
Û ÛÛ²ú[7CÛÛÛ þÛ ÛÛÛ[9CÛÛÛ ÛÛ²[11CÛÛÛ þÛ ²ÛÛÛ þÛ
|
||||||
|
þÛÛÛÛú[10CÛÛÛß úÛþ[9CÛþ[5CÛþ[13C²ÛÛÛß[7CÛÛÛß[0;31m[mJ]
|
||||||
|
|
||||||
|
[6C[1;30mï^` ï^` o¢“•oo¢“•oo¢“•oo¢“•oo¢“•oo¢“•oo¢“•oo¢“•oo¢“•oo¢“•o ï^` ï^`
|
||||||
|
|
||||||
|
[21C[0;31m§ø§ [1mt H E t E M P L E b B S [0;31m§ø§
|
||||||
|
|
||||||
|
§ø§line1§ø§+49÷821÷2191÷038§ø§v34+§øøø§line2§ø§+49÷821÷2191÷036§ø§isdn§ø§
|
||||||
|
|
||||||
|
[12C§ø§stoned÷brain÷records÷memberboard§ø§szenenet÷2nd÷hq§ø§
|
||||||
|
[6C§ø§net-server÷host÷bayern§ø§scenenet§ø§comanet§ø§oanet§ø§8bitnet§ø§
|
||||||
|
[15C§ø§expression÷distsite§ø§aironline÷supportsite§ø§
|
||||||
|
[31C§ø§freq÷netinfo§ø§
|
||||||
|
|
||||||
|
[6C[1;30mï^` ï^` u£–—uu£–—uu£–—uu£–—uu£–—uu£–—uu£–—uu£–—uu£–—uu£–—u ï^` ï^`[0m
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄ ▄▄▄ ▄ ▄▄▄▄▄▄ ▄▄▄▄ ▄▄▄▄▄▄
|
||||||
|
THE █████ ▄███ ████▀▄▀█ █████ █ ████ █████ BBS
|
||||||
|
█████ █████ ████ █ █████ █ ████ █████
|
||||||
|
█████ █████▀ ████ █ █████▀ ████ █████▀
|
||||||
|
█████ █████ ████ █ █████ ████ ▀████
|
||||||
|
█████ █████▄ ████ █ █████ █████▄ ▀██▄
|
||||||
|
|
||||||
|
t H E t E M P L E b B S
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
ワワワワワワワワワワワ ワワワ ワワワ ワ ワワワワワワ ワワワワ ワワワワワワ
|
||||||
|
THE ロロロロロ ワロロロ ロロロロ゚ワ゚ロ ロロロロロ ロ ロロロロ ロロロロロ BBS
|
||||||
|
ロロロロロ ロロロロロ ロロロロ ロ ロロロロロ ロ ロロロロ ロロロロロ
|
||||||
|
ロロロロロ ロロロロロ゚ ロロロロ ロ ロロロロロ゚ ロロロロ ロロロロロ゚
|
||||||
|
ロロロロロ ロロロロロ ロロロロ ロ ロロロロロ ロロロロ ゚ロロロロ
|
||||||
|
ロロロロロ ロロロロロワ ロロロロ ロ ロロロロロ ロロロロロワ ゚ロロワ
|
||||||
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
export interface Props { html: string; }
|
||||||
|
const { html } = Astro.props;
|
||||||
|
---
|
||||||
|
<Fragment set:html={html} />
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
const letters = ['t', 'H', 'E', ' ', 't', 'E', 'M', 'P', 'L', 'E', ' ', 'b', 'B', 'S'];
|
||||||
|
---
|
||||||
|
<div class="letter-footer" aria-hidden="true">
|
||||||
|
{letters.map((l) => l === ' ' ? <span class="letter-space">{'\u00A0'}</span> : <span>{l}</span>)}
|
||||||
|
<a href="/" onclick="localStorage.removeItem('hasConnected');">[Q] Disconnect</a>
|
||||||
|
<a href="/bbs/legal-notice">[I] Legal Notice</a>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,142 @@
|
|||||||
|
import { useState, useRef, useCallback } from 'react';
|
||||||
|
|
||||||
|
export interface ModEntry {
|
||||||
|
name: string;
|
||||||
|
title: string;
|
||||||
|
size_human: string;
|
||||||
|
channels: number;
|
||||||
|
sample_count: number;
|
||||||
|
modified: string;
|
||||||
|
url: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
declare global {
|
||||||
|
interface Window {
|
||||||
|
ChiptuneJsPlayer: any;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadScript(src: string): Promise<void> {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (document.querySelector(`script[src="${src}"]`)) { resolve(); return; }
|
||||||
|
const s = document.createElement('script');
|
||||||
|
s.src = src;
|
||||||
|
s.onload = () => resolve();
|
||||||
|
s.onerror = () => reject(new Error(`Failed to load ${src}`));
|
||||||
|
document.head.appendChild(s);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getPlayer(): Promise<any> {
|
||||||
|
await loadScript('/js/chiptune3.js');
|
||||||
|
return new Promise<any>((resolve) => {
|
||||||
|
const p = new window.ChiptuneJsPlayer({ repeatCount: 0 });
|
||||||
|
p.onInitialized(() => resolve(p));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function ModPlayer({ mods }: { mods: ModEntry[] }) {
|
||||||
|
const [currentIdx, setCurrentIdx] = useState(-1);
|
||||||
|
const [playing, setPlaying] = useState(false);
|
||||||
|
const [ready, setReady] = useState(false);
|
||||||
|
const playerRef = useRef<any>(null);
|
||||||
|
const loadingRef = useRef(false);
|
||||||
|
|
||||||
|
const ensurePlayer = useCallback(async () => {
|
||||||
|
if (playerRef.current) return playerRef.current;
|
||||||
|
if (loadingRef.current) return null;
|
||||||
|
loadingRef.current = true;
|
||||||
|
try {
|
||||||
|
const p = await getPlayer();
|
||||||
|
p.onEnded(() => {
|
||||||
|
setCurrentIdx((prev) => {
|
||||||
|
const next = prev + 1;
|
||||||
|
if (next < mods.length) {
|
||||||
|
p.setRepeatCount(0);
|
||||||
|
p.load(mods[next].url);
|
||||||
|
return next;
|
||||||
|
}
|
||||||
|
setPlaying(false);
|
||||||
|
return -1;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
playerRef.current = p;
|
||||||
|
setReady(true);
|
||||||
|
return p;
|
||||||
|
} catch (e) {
|
||||||
|
console.error('MOD player init failed:', e);
|
||||||
|
loadingRef.current = false;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}, [mods]);
|
||||||
|
|
||||||
|
const playIdx = useCallback(async (idx: number) => {
|
||||||
|
if (idx < 0 || idx >= mods.length) return;
|
||||||
|
const p = await ensurePlayer();
|
||||||
|
if (!p) return;
|
||||||
|
p.setRepeatCount(0);
|
||||||
|
p.load(mods[idx].url);
|
||||||
|
setCurrentIdx(idx);
|
||||||
|
setPlaying(true);
|
||||||
|
}, [mods, ensurePlayer]);
|
||||||
|
|
||||||
|
async function togglePlay(idx: number) {
|
||||||
|
const p = playerRef.current;
|
||||||
|
if (currentIdx === idx && playing) {
|
||||||
|
p?.pause();
|
||||||
|
setPlaying(false);
|
||||||
|
} else if (currentIdx === idx && !playing) {
|
||||||
|
p?.unpause();
|
||||||
|
setPlaying(true);
|
||||||
|
} else {
|
||||||
|
playIdx(idx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function prev() {
|
||||||
|
if (currentIdx > 0) playIdx(currentIdx - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
function next() {
|
||||||
|
if (currentIdx < mods.length - 1) playIdx(currentIdx + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const current = currentIdx >= 0 ? mods[currentIdx] : null;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="mod-player">
|
||||||
|
<div className="mod-player-nowplaying">
|
||||||
|
<span className="mod-player-label">NOW PLAYING:</span>{' '}
|
||||||
|
{current
|
||||||
|
? <span className="mod-player-track">{current.title} <span className="mod-player-file">({current.name})</span></span>
|
||||||
|
: <span className="mod-player-idle">-- nothing selected --</span>
|
||||||
|
}
|
||||||
|
<span className="mod-player-controls">
|
||||||
|
<button onClick={prev} disabled={currentIdx <= 0} className="mod-btn" title="Previous">|<<</button>
|
||||||
|
<button onClick={() => currentIdx >= 0 ? togglePlay(currentIdx) : playIdx(0)} className="mod-btn mod-btn-play" title={playing ? 'Pause' : 'Play'}>
|
||||||
|
{playing ? '⏸' : '▶'}
|
||||||
|
</button>
|
||||||
|
<button onClick={next} disabled={currentIdx >= mods.length - 1} className="mod-btn" title="Next">>>|</button>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<table className="mod-list">
|
||||||
|
<tbody>
|
||||||
|
{mods.map((m, i) => (
|
||||||
|
<tr key={m.name} className={currentIdx === i ? 'mod-active' : ''}>
|
||||||
|
<td className="mod-col-play">
|
||||||
|
<button onClick={() => togglePlay(i)} className="mod-btn-inline" title={currentIdx === i && playing ? 'Pause' : 'Play'}>
|
||||||
|
{currentIdx === i && playing ? '⏸' : '▶'}
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
|
<td className="mod-col-file">[F] {m.name}</td>
|
||||||
|
<td className="mod-col-title">{m.title}</td>
|
||||||
|
<td className="mod-col-ch">{m.channels}ch</td>
|
||||||
|
<td className="mod-col-size">{m.size_human}</td>
|
||||||
|
<td><a href={m.url}>[D]ownload</a></td>
|
||||||
|
</tr>
|
||||||
|
))}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
import { useState } from 'react';
|
||||||
|
import { playLine1Sequence, markConnected } from '../lib/sound';
|
||||||
|
type DialState = 'idle' | 'dialing';
|
||||||
|
export default function ModemIntro() {
|
||||||
|
const [state, setState] = useState<DialState>('idle');
|
||||||
|
function selectLine(line: 1 | 2) {
|
||||||
|
if (line === 2) { markConnected(); window.location.href = '/bbs/'; return; }
|
||||||
|
setState('dialing');
|
||||||
|
playLine1Sequence(() => { markConnected(); window.location.href = '/bbs/'; });
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<div className="ansi-text welcome-modem" role="region" aria-label="Modem connect intro">
|
||||||
|
<pre style={{ textAlign: 'center' }}>{`+------------------------------------------+
|
||||||
|
| 28k8 [MODEM] ATDT +49-821-2191-038 |
|
||||||
|
+------------------------------------------+`}</pre>
|
||||||
|
{state === 'idle' && (
|
||||||
|
<pre style={{ textAlign: 'center' }}><a href="#" onClick={(e) => { e.preventDefault(); selectLine(1); }}>{`> Line 1: +49-821-2191-038 [VFC V34] 28800 <`}</a>{'\n\n'}<a href="#" onClick={(e) => { e.preventDefault(); selectLine(2); }}>{`> Line 2: +49-821-2191-036 [X75] 64000 <`}</a></pre>
|
||||||
|
)}
|
||||||
|
{state === 'dialing' && <p style={{ textAlign: 'center' }}>Dialing... please wait.</p>}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
export interface Props { showBack?: boolean; }
|
||||||
|
const { showBack = true } = Astro.props;
|
||||||
|
---
|
||||||
|
<div class="nav-bar">
|
||||||
|
{showBack && <a href="#" onclick="event.preventDefault(); history.back();">[B] Back</a>}
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
const now = new Date();
|
||||||
|
const dateStr = `${String(now.getDate()).padStart(2, '0')}.${String(now.getMonth() + 1).padStart(2, '0')}.1994`;
|
||||||
|
---
|
||||||
|
<div class="status-bar" style="display: flex; justify-content: space-between;"><span>Status: 28800 bps | Line: V34 | 28k8.moonweb.org</span><span>{dateStr}</span></div>
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
import { useEffect } from 'react';
|
||||||
|
import { findKeyEntry } from '../lib/keymap';
|
||||||
|
import { resetConnected } from '../lib/sound';
|
||||||
|
export default function TerminalShell({ children }: { children?: React.ReactNode }) {
|
||||||
|
useEffect(() => {
|
||||||
|
function onKeyDown(e: KeyboardEvent) {
|
||||||
|
if (e.metaKey || e.ctrlKey || e.altKey) return;
|
||||||
|
const entry = findKeyEntry(e.key);
|
||||||
|
if (!entry) return;
|
||||||
|
if (entry.href === 'back') { window.history.back(); return; }
|
||||||
|
if (entry.href === 'disconnect') { resetConnected(); window.location.href = '/'; return; }
|
||||||
|
window.location.href = entry.href;
|
||||||
|
}
|
||||||
|
window.addEventListener('keydown', onKeyDown);
|
||||||
|
return () => window.removeEventListener('keydown', onKeyDown);
|
||||||
|
}, []);
|
||||||
|
return <>{children}</>;
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
interface Props {
|
||||||
|
title: string;
|
||||||
|
content: string;
|
||||||
|
}
|
||||||
|
const { title, content } = Astro.props;
|
||||||
|
const id = `overlay-${title.toLowerCase().replace(/[^a-z0-9]/gi, '-')}`;
|
||||||
|
---
|
||||||
|
<button class="text-overlay-btn" data-overlay={id}>
|
||||||
|
{title}
|
||||||
|
</button>
|
||||||
|
<style>
|
||||||
|
.text-overlay-btn {
|
||||||
|
background: none;
|
||||||
|
border: 1px solid var(--red-dark);
|
||||||
|
color: var(--fg);
|
||||||
|
font-family: var(--font-ansi);
|
||||||
|
padding: 0.25rem 0.6rem;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: inherit;
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
.text-overlay-btn:hover {
|
||||||
|
border-color: var(--red-bright);
|
||||||
|
color: var(--red-bright);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,125 @@
|
|||||||
|
---
|
||||||
|
interface OverlayEntry {
|
||||||
|
id: string;
|
||||||
|
title: string;
|
||||||
|
content: string;
|
||||||
|
}
|
||||||
|
interface Props {
|
||||||
|
overlays: OverlayEntry[];
|
||||||
|
}
|
||||||
|
const { overlays } = Astro.props;
|
||||||
|
const data = JSON.stringify(overlays);
|
||||||
|
---
|
||||||
|
<script define:vars={{ data }}>
|
||||||
|
window.__textOverlays = JSON.parse(data);
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
function initOverlays() {
|
||||||
|
document.querySelectorAll('.text-overlay-btn').forEach((btn) => {
|
||||||
|
btn.addEventListener('click', () => {
|
||||||
|
const id = btn.getAttribute('data-overlay');
|
||||||
|
let dialog = document.getElementById(id) as HTMLDialogElement;
|
||||||
|
if (!dialog) {
|
||||||
|
const entry = window.__textOverlays.find((o) => o.id === id);
|
||||||
|
if (!entry) return;
|
||||||
|
dialog = document.createElement('dialog');
|
||||||
|
dialog.className = 'text-overlay';
|
||||||
|
dialog.id = id;
|
||||||
|
const titleHtml = document.createElement('span');
|
||||||
|
titleHtml.textContent = entry.title;
|
||||||
|
const contentPre = document.createElement('pre');
|
||||||
|
contentPre.className = 'text-overlay-content';
|
||||||
|
contentPre.textContent = entry.content;
|
||||||
|
const headerDiv = document.createElement('div');
|
||||||
|
headerDiv.className = 'text-overlay-header';
|
||||||
|
headerDiv.appendChild(titleHtml);
|
||||||
|
const closeBtn = document.createElement('button');
|
||||||
|
closeBtn.className = 'text-overlay-close';
|
||||||
|
closeBtn.textContent = '[X]';
|
||||||
|
headerDiv.appendChild(closeBtn);
|
||||||
|
const innerDiv = document.createElement('div');
|
||||||
|
innerDiv.className = 'text-overlay-inner';
|
||||||
|
innerDiv.appendChild(headerDiv);
|
||||||
|
innerDiv.appendChild(contentPre);
|
||||||
|
dialog.appendChild(innerDiv);
|
||||||
|
document.body.appendChild(dialog);
|
||||||
|
closeBtn.addEventListener('click', () => dialog.close());
|
||||||
|
dialog.addEventListener('click', (e) => {
|
||||||
|
if (e.target === dialog) dialog.close();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
dialog.showModal();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
initOverlays();
|
||||||
|
document.addEventListener('astro:page-load', initOverlays);
|
||||||
|
</script>
|
||||||
|
<style is:global>
|
||||||
|
.text-overlay {
|
||||||
|
background: #000;
|
||||||
|
color: #ffb000;
|
||||||
|
border: 2px solid var(--red-dark);
|
||||||
|
padding: 0;
|
||||||
|
max-width: 90vw;
|
||||||
|
height: 80vh;
|
||||||
|
width: 80ch;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.text-overlay::backdrop {
|
||||||
|
background: rgba(0, 0, 0, 0.85);
|
||||||
|
}
|
||||||
|
.text-overlay-inner {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.text-overlay-header {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: 0.5rem 0.75rem;
|
||||||
|
border-bottom: 1px solid var(--red-dark);
|
||||||
|
font-family: var(--font-ansi);
|
||||||
|
color: var(--red-bright);
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.text-overlay-close {
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
color: var(--red-bright);
|
||||||
|
font-family: var(--font-ansi);
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 0;
|
||||||
|
font-size: inherit;
|
||||||
|
}
|
||||||
|
.text-overlay-close:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.text-overlay-content {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0.75rem;
|
||||||
|
font-family: var(--font-ansi);
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.15;
|
||||||
|
overflow-y: auto;
|
||||||
|
white-space: pre;
|
||||||
|
color: #ffb000;
|
||||||
|
flex: 1;
|
||||||
|
scrollbar-width: thin;
|
||||||
|
scrollbar-color: var(--red-dark) #000;
|
||||||
|
}
|
||||||
|
.text-overlay-content::-webkit-scrollbar {
|
||||||
|
width: 8px;
|
||||||
|
}
|
||||||
|
.text-overlay-content::-webkit-scrollbar-track {
|
||||||
|
background: #000;
|
||||||
|
}
|
||||||
|
.text-overlay-content::-webkit-scrollbar-thumb {
|
||||||
|
background: var(--red-dark);
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
.text-overlay-content::-webkit-scrollbar-thumb:hover {
|
||||||
|
background: var(--red-bright);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
export interface MenuItem { key: string; label: string; href: string; }
|
||||||
|
export interface Section { title: string; hardware: string; items: MenuItem[]; }
|
||||||
|
export interface Props { sections: Section[]; }
|
||||||
|
const { sections } = Astro.props;
|
||||||
|
---
|
||||||
|
<div>
|
||||||
|
{sections.map((section, i) => (
|
||||||
|
<div class="tile-section">
|
||||||
|
<h3>{section.title}</h3>
|
||||||
|
<p>{section.hardware}</p>
|
||||||
|
<ul style="list-style:none; padding:0; margin:0;">
|
||||||
|
{section.items.map((item) => (
|
||||||
|
<li><a class="tile" href={item.href} title={item.label} aria-label={`[${item.key}] ${item.label}`}>[{item.key}] {item.label}</a></li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
---
|
||||||
|
import { readFileSync } from 'node:fs';
|
||||||
|
import { join } from 'node:path';
|
||||||
|
|
||||||
|
const raw = readFileSync(join(process.cwd(), 'source-assets/welcome-utf8.txt'), 'utf-8');
|
||||||
|
const text = raw.replace(/\r\n/g, '\n').trimEnd();
|
||||||
|
const escaped = text
|
||||||
|
.replace(/&/g, '&')
|
||||||
|
.replace(/</g, '<')
|
||||||
|
.replace(/>/g, '>');
|
||||||
|
---
|
||||||
|
|
||||||
|
<pre class="welcome-banner" id="welcome-banner" aria-hidden="true">{escaped}</pre>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
const el = document.getElementById('welcome-banner');
|
||||||
|
if (!el) return;
|
||||||
|
|
||||||
|
const full = el.textContent || '';
|
||||||
|
el.textContent = '';
|
||||||
|
|
||||||
|
let i = 0;
|
||||||
|
const BASE = 8;
|
||||||
|
const FAST = 4;
|
||||||
|
const HARD_PAUSES: [number, number][] = [[34, 400], [98, 350]];
|
||||||
|
|
||||||
|
function tick() {
|
||||||
|
if (i >= full.length) {
|
||||||
|
el.removeAttribute('aria-hidden');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const ch = full[i];
|
||||||
|
el.textContent += ch;
|
||||||
|
i++;
|
||||||
|
|
||||||
|
let delay = FAST;
|
||||||
|
const hp = HARD_PAUSES.find(p => p[0] === i);
|
||||||
|
if (hp) {
|
||||||
|
delay = hp[1];
|
||||||
|
} else if (ch === '\n') {
|
||||||
|
delay = BASE * 4;
|
||||||
|
} else {
|
||||||
|
delay = BASE + Math.random() * 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
setTimeout(tick, delay);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (document.readyState === 'loading') {
|
||||||
|
document.addEventListener('DOMContentLoaded', () => setTimeout(tick, 300));
|
||||||
|
} else {
|
||||||
|
setTimeout(tick, 300);
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.welcome-banner {
|
||||||
|
font-family: var(--font-ansi);
|
||||||
|
color: var(--red-bright);
|
||||||
|
text-align: left;
|
||||||
|
width: 500px;
|
||||||
|
margin: 50px auto 0.5rem;
|
||||||
|
line-height: 1.1;
|
||||||
|
font-size: clamp(0.6rem, 1.5vw, 0.85rem);
|
||||||
|
letter-spacing: 0;
|
||||||
|
white-space: pre;
|
||||||
|
overflow: hidden;
|
||||||
|
min-height: 9.5em;
|
||||||
|
}
|
||||||
|
.welcome-banner::after {
|
||||||
|
content: '\2588';
|
||||||
|
animation: blink 1s step-end infinite;
|
||||||
|
color: var(--red-bright);
|
||||||
|
}
|
||||||
|
@keyframes blink {
|
||||||
|
50% { opacity: 0; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import { defineCollection, z } from 'astro:content';
|
||||||
|
const releaseSchema = z.object({
|
||||||
|
title: z.string(), group: z.string(), year: z.number().int().optional(), platform: z.string(),
|
||||||
|
credits: z.array(z.object({ role: z.string(), name: z.string() })).default([]),
|
||||||
|
description: z.string(), download_url: z.string().url().optional(), screenshot: z.string().optional(),
|
||||||
|
file_id_diz: z.string(),
|
||||||
|
});
|
||||||
|
const skyline = defineCollection({ type: 'content', schema: releaseSchema });
|
||||||
|
const kosmosDesign = defineCollection({ type: 'content', schema: releaseSchema });
|
||||||
|
const tropicdreams = defineCollection({ type: 'content', schema: releaseSchema });
|
||||||
|
const esprit = defineCollection({ type: 'content', schema: releaseSchema });
|
||||||
|
export const collections = { skyline, 'kosmos-design': kosmosDesign, tropicdreams, esprit };
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
title: "Arcade Demo"
|
||||||
|
group: "ESPRIT"
|
||||||
|
year: 1992
|
||||||
|
platform: "Amiga 500"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Stefan"
|
||||||
|
description: >
|
||||||
|
Arcade-style demo with sprite animations and raster effects.
|
||||||
|
screenshot: "/images/esprit/ArcadeDemo.png"
|
||||||
|
file_id_diz: |
|
||||||
|
ARCADE DEMO
|
||||||
|
------------------
|
||||||
|
Sprite animations +
|
||||||
|
raster effects.
|
||||||
|
---
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
title: "ASC Demo"
|
||||||
|
group: "ESPRIT"
|
||||||
|
year: 1991
|
||||||
|
platform: "Amiga 500"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Stefan"
|
||||||
|
description: >
|
||||||
|
ASC (Amiga Scroller Construction) demo with sine-wave text movement.
|
||||||
|
screenshot: "/images/esprit/AscDemo.png"
|
||||||
|
file_id_diz: |
|
||||||
|
ASC DEMO
|
||||||
|
------------------
|
||||||
|
Amiga Scroller
|
||||||
|
Construction demo.
|
||||||
|
---
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
title: "Blue Field Demo"
|
||||||
|
group: "ESPRIT"
|
||||||
|
year: 1991
|
||||||
|
platform: "Amiga 500"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Stefan"
|
||||||
|
description: >
|
||||||
|
Classic blue field star effect demo with scrolling text.
|
||||||
|
screenshot: "/images/esprit/BlueFieldDemo.png"
|
||||||
|
file_id_diz: |
|
||||||
|
BLUE FIELD DEMO
|
||||||
|
------------------
|
||||||
|
Blue field star
|
||||||
|
effect + scroller.
|
||||||
|
---
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
title: "ESPRIT Intro"
|
||||||
|
group: "ESPRIT"
|
||||||
|
year: 1993
|
||||||
|
platform: "Amiga 500"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Stefan"
|
||||||
|
description: >
|
||||||
|
Group intro with logo animation and MOD music soundtrack.
|
||||||
|
screenshot: "/images/esprit/EspritDemo.png"
|
||||||
|
file_id_diz: |
|
||||||
|
ESPRIT INTRO
|
||||||
|
------------------
|
||||||
|
Group intro with
|
||||||
|
logo + MOD music.
|
||||||
|
---
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
title: "Saturday Demo"
|
||||||
|
group: "ESPRIT"
|
||||||
|
year: 1992
|
||||||
|
platform: "Amiga 500"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Stefan"
|
||||||
|
description: >
|
||||||
|
Weekend coding session demo with copper bars and plasma effect.
|
||||||
|
screenshot: "/images/esprit/SaturdayDemo.png"
|
||||||
|
file_id_diz: |
|
||||||
|
SATURDAY DEMO
|
||||||
|
------------------
|
||||||
|
Copper bars + plasma
|
||||||
|
effect demo.
|
||||||
|
---
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
title: "FastEcho LogFile Reporter V0.21"
|
||||||
|
group: "Kosmos Design [KDS]"
|
||||||
|
year: 1996
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Stefan"
|
||||||
|
description: >
|
||||||
|
Simple utility for FastEcho to create a report of all incoming mails
|
||||||
|
in a better way than the logfile. Tested with FE 1.45 but should work
|
||||||
|
with other versions. Mailware.
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/KDS/K`FLR021.RAR"
|
||||||
|
file_id_diz: |
|
||||||
|
▄ ──═════════════════════════════── ▄
|
||||||
|
█ k 0 S M 0 S - d - S i g n █
|
||||||
|
▀ ──═════════[ presents ]════════── ▀
|
||||||
|
│ │
|
||||||
|
║ FastEcho LogFile Reporter ║
|
||||||
|
║ ║
|
||||||
|
║ Very simple util for FastEcho to ║
|
||||||
|
║ make a report of all incoming ║
|
||||||
|
║ mails in a better way then the ║
|
||||||
|
║ logfile. Tested with FE 1.45 but ║
|
||||||
|
║ must work also with other ║
|
||||||
|
║ versions. Notice: MAILWARE ║
|
||||||
|
│ │
|
||||||
|
■──══[tHE tEMPLE bBS 2:2480/330]══──■
|
||||||
|
---
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
title: "Hardtrance and Hardcore Vol I"
|
||||||
|
group: "Kosmos Design [KDS]"
|
||||||
|
year: 1995
|
||||||
|
platform: "Audio"
|
||||||
|
credits:
|
||||||
|
- role: "DJ"
|
||||||
|
name: "marc JiNX"
|
||||||
|
description: >
|
||||||
|
Hardtrance and hardcore mix tape. 90 minutes of hard dance music. Available by mail order.
|
||||||
|
file_id_diz: ""
|
||||||
|
---
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
title: "House and Acid Vol I"
|
||||||
|
group: "Kosmos Design [KDS]"
|
||||||
|
year: 1996
|
||||||
|
platform: "Audio"
|
||||||
|
credits:
|
||||||
|
- role: "DJ"
|
||||||
|
name: "marc JiNX"
|
||||||
|
description: >
|
||||||
|
House and acid mix tape. 90 minutes of house and acid music. Available by mail order.
|
||||||
|
file_id_diz: ""
|
||||||
|
---
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
title: "House and Acid Vol II"
|
||||||
|
group: "Kosmos Design [KDS]"
|
||||||
|
year: 1996
|
||||||
|
platform: "Audio"
|
||||||
|
credits:
|
||||||
|
- role: "DJ"
|
||||||
|
name: "marc JiNX"
|
||||||
|
description: >
|
||||||
|
House and acid mix tape. 90 minutes of house and acid music. Available by mail order.
|
||||||
|
file_id_diz: ""
|
||||||
|
---
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
title: "Nightmare on Billerstreet"
|
||||||
|
group: "Lethal Illusion [KDS]"
|
||||||
|
year: 1996
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "Level Design"
|
||||||
|
name: "Stefan"
|
||||||
|
description: >
|
||||||
|
Duke Nukem 3D level. A house-level for single player and dukematch.
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/KDS/K`LI`001.RAR"
|
||||||
|
file_id_diz: |
|
||||||
|
▄▄▄▄ ▄▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄
|
||||||
|
▐███▓▌ ███▓▐██████▓▄ ▐███████▓
|
||||||
|
▐████▌▄███▌▐███ ███▐███ ▀▀▀▀
|
||||||
|
█████████▌ ████ ██ █████████▌
|
||||||
|
█████▌▐███▌████ ███▌▄▄[mJ]██▓▌
|
||||||
|
▓████▌ ▓██▌▓██████▓▌ █▓██████▌
|
||||||
|
▀▀▀▀▀ ▀▀▀ ▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀
|
||||||
|
╖─┌───════╧════════╧╧════════╧╛
|
||||||
|
║ │ lETHAL iLLUSiON sUBDiViSION
|
||||||
|
║═╡
|
||||||
|
╚═╕ Duke Nukem 3D level
|
||||||
|
║ │ Nightmare on billerstreet
|
||||||
|
║ │
|
||||||
|
║ │ House-Level: a good new
|
||||||
|
║═╡ level for
|
||||||
|
╚═╕ single and
|
||||||
|
║ │ dukematch!
|
||||||
|
---
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
title: "BBS Menu Files V0.1"
|
||||||
|
group: "Kosmos Design [KDS]"
|
||||||
|
year: 1996
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "GFX"
|
||||||
|
name: "Stefan"
|
||||||
|
description: >
|
||||||
|
Collection of BBS menu ANSI graphics for use with bulletin board systems.
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/KDS/K`MENU01.RAR"
|
||||||
|
file_id_diz: " kOSMOS d-Sign\n quick release\n\n bbs menu ansi's\n"
|
||||||
|
---
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
title: "Trancemix Vol I"
|
||||||
|
group: "Kosmos Design [KDS]"
|
||||||
|
year: 1995
|
||||||
|
platform: "Audio"
|
||||||
|
credits:
|
||||||
|
- role: "DJ"
|
||||||
|
name: "marc JiNX"
|
||||||
|
description: >
|
||||||
|
Trance mix tape. 90 minutes of mixed trance music. Available by mail order.
|
||||||
|
file_id_diz: ""
|
||||||
|
---
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
title: "SBR BBS Intro"
|
||||||
|
group: "Kosmos Design [KDS] - Outside Productions"
|
||||||
|
year: 1995
|
||||||
|
platform: "DOS/486, VGA"
|
||||||
|
credits:
|
||||||
|
- role: "Code + GFX"
|
||||||
|
name: "Stefan"
|
||||||
|
- role: "Commissioned by"
|
||||||
|
name: "SBR BBS"
|
||||||
|
description: >
|
||||||
|
Custom login/intro screen for SBR BBS (real credit, exact wording pending, PRD.md 12).
|
||||||
|
file_id_diz: |
|
||||||
|
SBR INTRO
|
||||||
|
by Kosmos Design
|
||||||
|
------------------
|
||||||
|
Custom BBS login
|
||||||
|
for SBR BBS.
|
||||||
|
---
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
title: "ArjUtil V1.0"
|
||||||
|
group: "SkyLINE Productions"
|
||||||
|
year: 1994
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Sterling"
|
||||||
|
description: >
|
||||||
|
ARJ archive utility. Enter the sub-dir and destination drive, and the program does the rest.
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/SKYLINE/ARJUTIL.RAR"
|
||||||
|
file_id_diz: |
|
||||||
|
┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ │
|
||||||
|
│ ArjUtil V1.0 │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ You enter the sub-dir │
|
||||||
|
│ and the dest.drive and │
|
||||||
|
│ my prog does the rest. │
|
||||||
|
│ │
|
||||||
|
│ This is Freeware │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE Production '94 │
|
||||||
|
│ │
|
||||||
|
└────────────────────────┘
|
||||||
|
---
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
title: "CD-ROM TSR Dooropener"
|
||||||
|
group: "SkyLINE Productions"
|
||||||
|
year: 1995
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Sterling"
|
||||||
|
description: >
|
||||||
|
TSR utility that opens the CD-ROM door with the F12 key.
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/SKYLINE/CD_OPEN.RAR"
|
||||||
|
file_id_diz: |
|
||||||
|
┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ │
|
||||||
|
│ CDROM TSR Dooropener │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ Opens the CD-ROM door │
|
||||||
|
│ with the F12 key. │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE ShareWare 1995 │
|
||||||
|
│ │
|
||||||
|
└────────────────────────┘
|
||||||
|
---
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
title: "Copper Intro"
|
||||||
|
group: "SkyLINE Productions"
|
||||||
|
year: 1995
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "UncleSAM"
|
||||||
|
description: >
|
||||||
|
VGA Textmode 3 copper intro. Amazing 3 coppers on the screen, smooth scroller on top, up/down fading text. All in normal VGAMode 3.
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/SKYLINE/COPERINT.RAR"
|
||||||
|
file_id_diz: |
|
||||||
|
-----------------------------------
|
||||||
|
==== UncleSAM/SkyLINE presents ====
|
||||||
|
≡≡≡≡ COPPER intro ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
|
||||||
|
==== Real Textmode 3 intro ========
|
||||||
|
-----------------------------------
|
||||||
|
Amazing 3 Coppers on the screen
|
||||||
|
SmoothScroller on the top
|
||||||
|
Up/Dn Fading text
|
||||||
|
& all in the normal VGAMode 3
|
||||||
|
|
||||||
|
(C) 04/1995 by UncleSAM/SkyLINE
|
||||||
|
---
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
title: "DemoCoderz Pascal Pack"
|
||||||
|
group: "SkyLINE Productions"
|
||||||
|
year: 1995
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Sterling"
|
||||||
|
description: >
|
||||||
|
Source codes for Pascal demo beginners. 3D, Plasmas, Coppers, Sound, Xmode, Bobs and more.
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/SKYLINE/DCPP.RAR"
|
||||||
|
file_id_diz: |
|
||||||
|
SkyLINE proudly presents
|
||||||
|
▓▀▀▓ ▓▀▀ ▓▀▀▓ ▓▀▀▓
|
||||||
|
▒ ▒ ▒ ▒▀▀▀ ▒▀▀▀
|
||||||
|
░▄▄░ ░▄▄ ░ ░
|
||||||
|
DemoCoderz Pascal Pack
|
||||||
|
------------------------
|
||||||
|
Here it is, the ultimate
|
||||||
|
source codes for all
|
||||||
|
pascal demo beginners!
|
||||||
|
Learn from existing srcs
|
||||||
|
and make your own demo
|
||||||
|
------------------------
|
||||||
|
3d/Plasmas/Coppers/Sound
|
||||||
|
Xmode/Bobs/and even more
|
||||||
|
---
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
title: "DiskInfo V1.0"
|
||||||
|
group: "SkyLINE Productions"
|
||||||
|
year: 1994
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Sterling"
|
||||||
|
description: >
|
||||||
|
Shows how much disk space is free on up to 8 drives.
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/SKYLINE/DISKINFO.RAR"
|
||||||
|
file_id_diz: |
|
||||||
|
┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ │
|
||||||
|
│ DiskInfo V1.0 │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ It shows you how much │
|
||||||
|
│ diskspace on up to 8 │
|
||||||
|
│ drives is free. │
|
||||||
|
│ │
|
||||||
|
│ This is Freeware │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE Production '94 │
|
||||||
|
│ │
|
||||||
|
└────────────────────────┘
|
||||||
|
---
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
title: "DosMENU V2.0"
|
||||||
|
group: "SkyLINE Productions"
|
||||||
|
year: 1994
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Sterling"
|
||||||
|
description: >
|
||||||
|
System configuration selector for booting. Helps when you have more than one configuration. Finished and published version.
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/SKYLINE/!DM_V2_0.RAR"
|
||||||
|
file_id_diz: |
|
||||||
|
┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ │
|
||||||
|
│ DosMENU(TM) V2.0 │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ This program selects │
|
||||||
|
│ a System-Configuartion │
|
||||||
|
│ while booting. Helpful │
|
||||||
|
│ for all with more than │
|
||||||
|
│ one Configuration. │
|
||||||
|
│ │
|
||||||
|
│ This is the finished │
|
||||||
|
│ and published version. │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE ShareWare 1994 │
|
||||||
|
│ │
|
||||||
|
└────────────────────────┘
|
||||||
|
---
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
title: "SkyLINE InfoPack"
|
||||||
|
group: "SkyLINE Productions"
|
||||||
|
year: 1995
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Sterling"
|
||||||
|
description: >
|
||||||
|
Information package with newest infos, little intros and other content.
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/SKYLINE/INFOPACK.RAR"
|
||||||
|
file_id_diz: |
|
||||||
|
┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ SkyLINE InfoPack │
|
||||||
|
│ ────────────────────── │
|
||||||
|
│ Newest Infos, little │
|
||||||
|
│ Intros and other. │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE ShareWare 1995 │
|
||||||
|
└────────────────────────┘
|
||||||
|
---
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
title: "MusicDisk #1"
|
||||||
|
group: "SkyLINE Productions"
|
||||||
|
year: 1994
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Sterling"
|
||||||
|
description: >
|
||||||
|
MOD music collection including MDP by the Future Crew.
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/SKYLINE/MODDISK1.RAR"
|
||||||
|
file_id_diz: |
|
||||||
|
┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ │
|
||||||
|
│ MusicDisk #1 │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ Some nice but not so │
|
||||||
|
│ good MODs from Stern. │
|
||||||
|
│ This includes MDP by │
|
||||||
|
│ the Future Crew. │
|
||||||
|
│ │
|
||||||
|
│ This is Freeware │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE Production '94 │
|
||||||
|
│ │
|
||||||
|
└────────────────────────┘
|
||||||
|
---
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
title: "Play MOD V0.2"
|
||||||
|
group: "SkyLINE Productions"
|
||||||
|
year: 1994
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Sterling"
|
||||||
|
description: >
|
||||||
|
Little MOD player using WOW-TPU. German docs. Notice: this version has some bugs (WOW-TPU has the bugs).
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/SKYLINE/PLAYMOD.RAR"
|
||||||
|
file_id_diz: |
|
||||||
|
┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ │
|
||||||
|
│ Play MOD V0.2ß │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ A little MOD-Player. │
|
||||||
|
│ Uses WOW-TPU. Sorry │
|
||||||
|
│ docs and programm in │
|
||||||
|
│ german. Notice: This │
|
||||||
|
│ version has some bugs. │
|
||||||
|
│ WOW-TPU has the bugs!! │
|
||||||
|
│ │
|
||||||
|
│ This is Freeware │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE Production '94 │
|
||||||
|
│ │
|
||||||
|
└────────────────────────┘
|
||||||
|
---
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
---
|
||||||
|
title: "Preview Compilation #1"
|
||||||
|
group: "SkyLINE Productions"
|
||||||
|
year: 1995
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Sterling"
|
||||||
|
description: >
|
||||||
|
Picture compilation from SkyLINE mixed with text and music.
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/SKYLINE/PREVIEW1.RAR"
|
||||||
|
file_id_diz: |
|
||||||
|
┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ │
|
||||||
|
│ Preview Compilation #1 │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ Here are some pics │
|
||||||
|
│ from us mixed up with │
|
||||||
|
│ some text and music. │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE ShareWare 1995 │
|
||||||
|
│ │
|
||||||
|
└────────────────────────┘
|
||||||
|
---
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
title: "Shark Box Intro"
|
||||||
|
group: "SkyLINE Productions"
|
||||||
|
year: 1995
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "sAM"
|
||||||
|
description: >
|
||||||
|
BBS intro for Shark-BOX BBS, Augsburg. Online from Saturday 10 to Sunday 24.
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/SKYLINE/SHARKBOX.RAR"
|
||||||
|
file_id_diz: |
|
||||||
|
▄▄▄▄▄ ▄ ▄ ▄▄▄▄▄ ▄▄▄▄ ▄ ▄
|
||||||
|
▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄
|
||||||
|
▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄ ▄▄▄▄
|
||||||
|
▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄
|
||||||
|
▄▄▄▄▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄
|
||||||
|
·∙─────── B - O - X ───────∙·
|
||||||
|
|
||||||
|
sAM/SkyLINE DemoGroup Auxburg
|
||||||
|
present
|
||||||
|
The Shark Box Intro
|
||||||
|
|
||||||
|
oNLiNE from: sAT 10 to sUN 24
|
||||||
|
·∙──── +49-8231-88912 ─────∙·
|
||||||
|
---
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
title: "X-OS Shell V0.65"
|
||||||
|
group: "SkyLINE Productions"
|
||||||
|
year: 1994
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Sterling"
|
||||||
|
description: >
|
||||||
|
Norton Commander clone. Preview with some bugs and limited commands. Made with the SkyLINE-Bench Workarea.
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/SKYLINE/SHELL.RAR"
|
||||||
|
file_id_diz: |
|
||||||
|
┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ │
|
||||||
|
│ X-OS Shell V0.65ß │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ This is a NC-Clone. │
|
||||||
|
│ Made with the well │
|
||||||
|
│ known SkyLINE-Bench │
|
||||||
|
│ Workarea. Little │
|
||||||
|
│ Preview sith some bugs │
|
||||||
|
│ and only some commands.│
|
||||||
|
│ │
|
||||||
|
│ I'm still working on │
|
||||||
|
│ this product, but │
|
||||||
|
│ there must some bigger │
|
||||||
|
│ products finished │
|
||||||
|
│ first before this. │
|
||||||
|
│ Notice this is only a │
|
||||||
|
│ Preview nor a cripple │
|
||||||
|
│ ShareWare. │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE Production '94 │
|
||||||
|
│ │
|
||||||
|
└────────────────────────┘
|
||||||
|
---
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
title: "Uncle SAM Welcome Demo"
|
||||||
|
group: "SkyLINE Productions"
|
||||||
|
year: 1994
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Sterling"
|
||||||
|
description: >
|
||||||
|
A little demo by the SkyLINE crew.
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/SKYLINE/SLN_DEMO.RAR"
|
||||||
|
file_id_diz: |
|
||||||
|
┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ │
|
||||||
|
│ Uncle SAM welcome Demo │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ A little Demo by the │
|
||||||
|
│ SkyLINE-Crew. │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE ShareWare 1994 │
|
||||||
|
│ │
|
||||||
|
└────────────────────────┘
|
||||||
|
---
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
title: "SkyLINE Searching Member Intro"
|
||||||
|
group: "SkyLINE Productions"
|
||||||
|
year: 1995
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Sterling"
|
||||||
|
description: >
|
||||||
|
Searching member intro. Final bugfixed version. "We're still searching for new members. So download and call today!"
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/SKYLINE/SLN_SMI.RAR"
|
||||||
|
file_id_diz: |
|
||||||
|
SkyLINE Searching Member Intro
|
||||||
|
+----------------------------+
|
||||||
|
| Final Bugfixed Version |
|
||||||
|
+----------------------------+
|
||||||
|
We' re still searching for new
|
||||||
|
Members. So d/l and call today
|
||||||
|
---
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
title: "SkyLINE Fonts"
|
||||||
|
group: "SkyLINE Productions"
|
||||||
|
year: 1995
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Sterling"
|
||||||
|
description: >
|
||||||
|
Over 100 fonts for TheDraw in three Tdfont-Packs. Easy to change with included batches.
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/SKYLINE/SLNFONTS.RAR"
|
||||||
|
file_id_diz: " SkyLINE proudly presents\n ▓███▀█ ▓███▀█ ▓███▀▀█ ▀▀████▀▀\n ▒███▄ ▒███ █ ▒███ █ ███░\n ████ ████▄█ ████ █ ███▒\n\n ▓███▀█ ▓███▀█ ▓███▀█ ▓███ █\n ▒███▄█ ▒███▄█ ▒███ ▒███▀▄\n ████ ████ █ ████▄█ ████ █\n\n Over 100 Fonts for TheDraw in\n three Tdfont-Packs. Easy to\n change with included batches!\n A must for all Sysop's\n"
|
||||||
|
---
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
title: "SpeakTime V1.0"
|
||||||
|
group: "SkyLINE Productions"
|
||||||
|
year: 1994
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Sterling"
|
||||||
|
description: >
|
||||||
|
Have your PC speak the time. German version.
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/SKYLINE/SPEAKTIM.RAR"
|
||||||
|
file_id_diz: |
|
||||||
|
┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ │
|
||||||
|
│ Speaktime V1.0 │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ Have you ever heard │
|
||||||
|
│ your PC speaking the │
|
||||||
|
│ time. Here it is. │
|
||||||
|
│ Notice: German version │
|
||||||
|
│ │
|
||||||
|
│ This is Freeware │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE Production '94 │
|
||||||
|
│ │
|
||||||
|
└────────────────────────┘
|
||||||
|
---
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
title: "SpeakTime V2.0"
|
||||||
|
group: "SkyLINE Productions"
|
||||||
|
year: 1995
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Sterling"
|
||||||
|
description: >
|
||||||
|
Updated version of SpeakTime. Now also supports SoundBlaster.
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/SKYLINE/STIME_V2.RAR"
|
||||||
|
file_id_diz: |
|
||||||
|
┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ Speaktime V2.0 │
|
||||||
|
│ ────────────────────── │
|
||||||
|
│ Hear your Computer │
|
||||||
|
│ speaking the time. Now │
|
||||||
|
│ also on SoundBlaster. │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE ShareWare 1995 │
|
||||||
|
└────────────────────────┘
|
||||||
|
---
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
title: "TetrisCompetition V1.0"
|
||||||
|
group: "SkyLINE Productions"
|
||||||
|
year: 1994
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Sterling"
|
||||||
|
description: >
|
||||||
|
Tetris game for 2 players with rules like GameBoy Tetris. Preview version.
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/SKYLINE/TET_COMP.ZIP"
|
||||||
|
file_id_diz: |
|
||||||
|
┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ │
|
||||||
|
│ TetrisCompetition V1.0 │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ A Tetris game for 2 │
|
||||||
|
│ players with the rules │
|
||||||
|
│ like GameBoy Tetris. │
|
||||||
|
│ │
|
||||||
|
│ This is a Preview │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE Production '94 │
|
||||||
|
│ │
|
||||||
|
└────────────────────────┘
|
||||||
|
---
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
title: "The Highland BBS Addy"
|
||||||
|
group: "SkyLINE Productions"
|
||||||
|
year: 1995
|
||||||
|
platform: "DOS"
|
||||||
|
credits:
|
||||||
|
- role: "Code"
|
||||||
|
name: "Sterling"
|
||||||
|
description: >
|
||||||
|
Custom BBS intro screen for The Highland BBS. Especially made for Klaus Gruber.
|
||||||
|
download_url: "https://www.moonweb.org/files/pc/SKYLINE/THL_ADDY.RAR"
|
||||||
|
file_id_diz: " ▄▄▄▄▄▄▄▄ ▄▄ ▄▄ ▄▄\n ▐▓▓▓▓▓▓▓▓▌▐▓▓▌ ▐▓▓▌▐▓▓▌\n ▐ ■█▓▓█▀■ ▐▓▓█■▐▓▓▌▐▓▓▌\n▓▓▓ ▐▓▓▌ ▐▓▓▓▓▓▓▓▌▐▓▓▌■ ▓▓▓\n ▐▓▓▌ ▐▓▓▌ ▐▓▓▌▐▓▓█▄▄▄\n ▐▓▓▌ ▐▓▓▌ ▐▓▓▌▐▓▓▓▓▓▓▌\n ▐▀■▌ ▐▀■▌ ▐▀■▌▐▀■ ▀▀▌\n tHE Highland BBS Addy\n Esspecially made for KlAUS GRUBER\n"
|
||||||
|
---
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
title: "Atom Oh No!"
|
||||||
|
group: "Tropic DREAMs"
|
||||||
|
year: 1991
|
||||||
|
platform: "Atari ST"
|
||||||
|
credits:
|
||||||
|
- role: "Coding"
|
||||||
|
name: "Stefan"
|
||||||
|
description: >
|
||||||
|
Second game release on the Atari ST, coded by Stefan under the pseudonym "Tropic DREAMs". Idea from Amiga's Atomix, ported to hi-res 640x400 incl. level maker and 10 demo levels.
|
||||||
|
file_id_diz: |
|
||||||
|
ATOM OH NO! (1991)
|
||||||
|
by Tropic DREAMs
|
||||||
|
------------------
|
||||||
|
Port of Atomix,
|
||||||
|
Hi-Res 640x400,
|
||||||
|
level maker.
|
||||||
|
---
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
title: "International Kegeln and Bowling"
|
||||||
|
group: "Tropic DREAMs"
|
||||||
|
year: 1990
|
||||||
|
platform: "Atari ST"
|
||||||
|
credits:
|
||||||
|
- role: "Idea"
|
||||||
|
name: "Matthias (Olympic Arts)"
|
||||||
|
- role: "Coding"
|
||||||
|
name: "Stefan"
|
||||||
|
description: >
|
||||||
|
Our first release ever. A complete Bowling game, built as a second version of "International Kegeln", simply called Bowling. It was complete, but never quite playable.
|
||||||
|
file_id_diz: |
|
||||||
|
INT. KEGELN &
|
||||||
|
BOWLING (1990)
|
||||||
|
------------------
|
||||||
|
First ever release.
|
||||||
|
Idea by Matthias
|
||||||
|
(Olympic Arts).
|
||||||
|
---
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
title: "Runner"
|
||||||
|
group: "Tropic DREAMs"
|
||||||
|
year: 1991
|
||||||
|
platform: "Atari ST"
|
||||||
|
credits:
|
||||||
|
- role: "Idea"
|
||||||
|
name: "CPK"
|
||||||
|
- role: "Coding"
|
||||||
|
name: "Stefan"
|
||||||
|
description: >
|
||||||
|
An all-round helper tool including a database, memo, system overview, and a game.
|
||||||
|
file_id_diz: |
|
||||||
|
RUNNER v1.0
|
||||||
|
by Tropic DREAMs
|
||||||
|
------------------
|
||||||
|
Database, memo,
|
||||||
|
system info +
|
||||||
|
Hangman game.
|
||||||
|
---
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
title: "TOP Tools"
|
||||||
|
group: "Tropic DREAMs"
|
||||||
|
year: 1992
|
||||||
|
platform: "Atari ST"
|
||||||
|
credits:
|
||||||
|
- role: "Coding"
|
||||||
|
name: "Stefan"
|
||||||
|
description: >
|
||||||
|
Small tools and a game coded by Stefan under the pseudonym "Tropic DREAMs". All-round tool, simple strategy game, archive tool for TOS magazine.
|
||||||
|
file_id_diz: |
|
||||||
|
TOP TOOLS (1992)
|
||||||
|
by Tropic DREAMs
|
||||||
|
------------------
|
||||||
|
All-round tool,
|
||||||
|
strategy game,
|
||||||
|
archive tool.
|
||||||
|
---
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
K`FLR021.RAR [000] FastEcho LogFile Reporter V0.21
|
||||||
|
> ▄ ──═════════════════════════════── ▄
|
||||||
|
> █ k 0 S M 0 S - d - S i g n █
|
||||||
|
> ▀ ──═════════[ presents ]════════── ▀
|
||||||
|
> │ │
|
||||||
|
> ║ FastEcho LogFile Reporter ║
|
||||||
|
> ║ ║
|
||||||
|
> ║ Very simple util for FastEcho to ║
|
||||||
|
> ║ make a report of all incoming ║
|
||||||
|
> ║ mails in a better way then the ║
|
||||||
|
> ║ logfile. Tested with FE 1.45 but ║
|
||||||
|
> ║ must work also with other ║
|
||||||
|
> ║ versions. Notice: MAILWARE ║
|
||||||
|
> │ │
|
||||||
|
> ■──══[tHE tEMPLE bBS 2:2480/330]══──■
|
||||||
|
K`MENU01.RAR [000]
|
||||||
|
> kOSMOS d-Sign
|
||||||
|
> quick release
|
||||||
|
>
|
||||||
|
> bbs menu ansi's
|
||||||
|
>
|
||||||
|
K`LI`001.RAR [000] ▄▄▄▄ ▄▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄
|
||||||
|
> ▐███▓▌ ███▓▐██████▓▄ ▐███████▓
|
||||||
|
> ▐████▌▄███▌▐███ ███▐███ ▀▀▀▀
|
||||||
|
> █████████▌ ████ ██ █████████▌
|
||||||
|
> █████▌▐███▌████ ███▌▄▄[mJ]██▓▌
|
||||||
|
> ▓████▌ ▓██▌▓██████▓▌ █▓██████▌
|
||||||
|
> ▀▀▀▀▀ ▀▀▀ ▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀
|
||||||
|
> ╖─┌───════╧════════╧╧════════╧╛
|
||||||
|
> ║ │ lETHAL iLLUSiON sUBDiViSION
|
||||||
|
> ║═╡
|
||||||
|
> ╚═╕ Duke Nukem 3D level
|
||||||
|
> ║ │ Nightmare on billerstreet
|
||||||
|
> ║ │
|
||||||
|
> ║ │ House-Level: a good new
|
||||||
|
> ║═╡ level for
|
||||||
|
> ╚═╕ single and
|
||||||
|
> ║ │ dukematch!
|
||||||
@@ -0,0 +1,111 @@
|
|||||||
|
▄▄▄▄ ▄▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄
|
||||||
|
▐███▓▌ ███▓▐██████▓▄ ▐███████▓
|
||||||
|
▐████▌▄███▌▐███ ███▐███ ▀▀▀▀
|
||||||
|
█████████▌ ████ ██ █████████▌
|
||||||
|
█████▌▐███▌████ ███▌▄▄[mJ]██▓▌
|
||||||
|
▓████▌ ▓██▌▓██████▓▌ █▓██████▌
|
||||||
|
▀▀▀▀▀ ▀▀▀ ▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀
|
||||||
|
|
||||||
|
■ · « ─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─- » · ■
|
||||||
|
· /----) /----) /----) /----\ [mJ]·
|
||||||
|
¡ /---\___) /---\___) ( ____)/-\ ___/ ¡
|
||||||
|
| |-| | ! |--\--\/--| ! |--\ |-| ( ----\\_/ ---\-\ |-| |
|
||||||
|
| | |/-) | |__ )|\/| | | |__ ) ·──· /-| | ·──· \____ )-| __ ) \| | |
|
||||||
|
! | < ¡ |-- )| | | ¡ |-- ) | <> | (---- ) | -- )|\ | !
|
||||||
|
· |_|\_)___/___/_| |_|___/___/ \_|_| (____/|_|\___/_| \_| ·
|
||||||
|
■ · « ─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─- » · ■
|
||||||
|
|
||||||
|
|
||||||
|
kOSMOS-d-Sign
|
||||||
|
|
||||||
|
iNFO fILE
|
||||||
|
|
||||||
|
short and easy
|
||||||
|
|
||||||
|
May '96
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
beginning-section some words from my own
|
||||||
|
=`-`=`-`-`=-`-`=-`=`-`=`-`=-`=-`=`=`-`=-`=-`=-`=-`=-`=-`=`-`=-`=`-=`-`=
|
||||||
|
|
||||||
|
I tried to make a demogroup in augsburg quite long, but nobody was
|
||||||
|
interessted...
|
||||||
|
So I gave up my doing's as coorinator of SkyLINE, dropped all out and
|
||||||
|
now do my work alone...
|
||||||
|
You probably think SkyLINE was lame and it was sure!
|
||||||
|
now i learned and don't want to be the best, I only do my work and
|
||||||
|
that's all...
|
||||||
|
|
||||||
|
But, the SkyLINE progs are not dead! I try to improve some tool and
|
||||||
|
release them again...
|
||||||
|
|
||||||
|
Later I wanted to join a new demogroup in augsburg, but there is no
|
||||||
|
real teamwork possible, I would be the only real coder there...
|
||||||
|
So i decided to join SBR...
|
||||||
|
|
||||||
|
On KDS I only will release my own stuff, which could not be released
|
||||||
|
through a demogroup...
|
||||||
|
|
||||||
|
marc JiNX^kDS^SBR (Stefan Koelle)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
tool-section releases
|
||||||
|
=`-`=`-`-`=-`-`=-`=`-`=`-`=-`=-`=`=`-`=-`=-`=-`=-`=-`=-`=`-`=-`=`-=`-`=
|
||||||
|
|
||||||
|
Name Desciption
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
K`FLR021.RAR FastEcho LogFile Reporter V0.21
|
||||||
|
K`MENU01.RAR BBS Menu Files V0.1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
tape-section releases
|
||||||
|
=`-`=`-`-`=-`-`=-`=`-`=`-`=-`=-`=`=`-`=-`=-`=-`=-`=-`=-`=`-`=-`=`-=`-`=
|
||||||
|
DJ marc JiNX Releases:
|
||||||
|
|
||||||
|
Name Year Length
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Trancemix Vol I 1995 90:00
|
||||||
|
Hardtrance and Hardcore Vol I 1995 90:00
|
||||||
|
House and Acid Vol I 1996 90:00
|
||||||
|
House and Acid Vol II 1996 90:00
|
||||||
|
|
||||||
|
|
||||||
|
To order contact me on bbs or by mail
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
lethal illusion - sub-section releases
|
||||||
|
=`-`=`-`-`=-`-`=-`=`-`=`-`=-`=-`=`=`-`=-`=-`=-`=-`=-`=-`=`-`=-`=`-=`-`=
|
||||||
|
|
||||||
|
Name Desciption
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
K`LI`001.RAR Duke 3D Level: Nightmare on billerstreet
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
bbs-section tHE tEMPLE bBS
|
||||||
|
=`-`=`-`-`=-`-`=-`=`-`=`-`=-`=-`=`=`-`=-`=-`=-`=-`=-`=-`=`-`=-`=`-=`-`=
|
||||||
|
|
||||||
|
________ ________ ________ ________ ____ ________
|
||||||
|
!__ __!__ __!_ _!!_ !__ ! !__ __!
|
||||||
|
%tHE%/ \ / __) / \ / \ _¡ / ___ / __)%bBS%
|
||||||
|
/ \ / \/ \/ \ / \/ \
|
||||||
|
\______/ \______/\___/\___/\______/mJ\______/\______/
|
||||||
|
%49.821.2191038`mODEM% %iSDN`49.821.2191036%
|
||||||
|
|
||||||
|
%stoned`brain`records`memberboard% %exp`dist% %air`online`support%
|
||||||
|
%bavarian`host`of% %comanet% %scenenet% %oanet% %8bitnet%
|
||||||
|
%szenenet`2nd`hq% %KDS`world`headquater%
|
||||||
@@ -0,0 +1,146 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "brown.mod",
|
||||||
|
"title": "mod.james brown",
|
||||||
|
"size_human": "93.99 KB",
|
||||||
|
"channels": 4,
|
||||||
|
"sample_count": 15,
|
||||||
|
"modified": "1992-07-29T11:11:54+02:00",
|
||||||
|
"url": "https://www.moonweb.org/files/amiga/mods/brown.mod"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "chess.mod",
|
||||||
|
"title": "CHESS_GOES_TEKKNO___",
|
||||||
|
"size_human": "130.52 KB",
|
||||||
|
"channels": 4,
|
||||||
|
"sample_count": 18,
|
||||||
|
"modified": "1993-08-08T22:32:44+02:00",
|
||||||
|
"url": "https://www.moonweb.org/files/amiga/mods/chess.mod"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "djc-test.mod",
|
||||||
|
"title": "djc-test.mod",
|
||||||
|
"size_human": "51.45 KB",
|
||||||
|
"channels": 4,
|
||||||
|
"sample_count": 5,
|
||||||
|
"modified": "1994-01-12T18:14:54+01:00",
|
||||||
|
"url": "https://www.moonweb.org/files/amiga/mods/djc-test.mod"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "franzl.mod",
|
||||||
|
"title": "franzl von der alm",
|
||||||
|
"size_human": "143.39 KB",
|
||||||
|
"channels": 4,
|
||||||
|
"sample_count": 7,
|
||||||
|
"modified": "1991-12-23T07:05:00+01:00",
|
||||||
|
"url": "https://www.moonweb.org/files/amiga/mods/franzl.mod"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "jump.mod",
|
||||||
|
"title": "JUMP_ON_THE_JAMP____",
|
||||||
|
"size_human": "24.66 KB",
|
||||||
|
"channels": 4,
|
||||||
|
"sample_count": 4,
|
||||||
|
"modified": "1987-04-22T00:21:42+02:00",
|
||||||
|
"url": "https://www.moonweb.org/files/amiga/mods/jump.mod"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "jungle.mod",
|
||||||
|
"title": "jungle-tekkno",
|
||||||
|
"size_human": "34.84 KB",
|
||||||
|
"channels": 4,
|
||||||
|
"sample_count": 16,
|
||||||
|
"modified": "1991-12-23T07:46:00+01:00",
|
||||||
|
"url": "https://www.moonweb.org/files/amiga/mods/jungle.mod"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "kings.mod",
|
||||||
|
"title": "KINGS_______________",
|
||||||
|
"size_human": "77.16 KB",
|
||||||
|
"channels": 4,
|
||||||
|
"sample_count": 12,
|
||||||
|
"modified": "1987-04-22T00:05:30+02:00",
|
||||||
|
"url": "https://www.moonweb.org/files/amiga/mods/kings.mod"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "LIT_RAVE.MOD",
|
||||||
|
"title": "little rave",
|
||||||
|
"size_human": "55.41 KB",
|
||||||
|
"channels": 4,
|
||||||
|
"sample_count": 7,
|
||||||
|
"modified": "1991-12-23T19:32:00+01:00",
|
||||||
|
"url": "https://www.moonweb.org/files/amiga/mods/LIT_RAVE.MOD"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "no_limit.mod",
|
||||||
|
"title": "no limit gen remix",
|
||||||
|
"size_human": "94.06 KB",
|
||||||
|
"channels": 4,
|
||||||
|
"sample_count": 11,
|
||||||
|
"modified": "1993-12-04T10:27:04+01:00",
|
||||||
|
"url": "https://www.moonweb.org/files/amiga/mods/no_limit.mod"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "NXT_RAVE.MOD",
|
||||||
|
"title": "next !rave",
|
||||||
|
"size_human": "32.02 KB",
|
||||||
|
"channels": 4,
|
||||||
|
"sample_count": 4,
|
||||||
|
"modified": "1994-03-16T00:26:42+01:00",
|
||||||
|
"url": "https://www.moonweb.org/files/amiga/mods/NXT_RAVE.MOD"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pump.mod",
|
||||||
|
"title": "PUMP_UP_THE_ASC_____",
|
||||||
|
"size_human": "45.65 KB",
|
||||||
|
"channels": 4,
|
||||||
|
"sample_count": 8,
|
||||||
|
"modified": "1993-02-23T08:13:34+01:00",
|
||||||
|
"url": "https://www.moonweb.org/files/amiga/mods/pump.mod"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "run_away.mod",
|
||||||
|
"title": "run away by genius",
|
||||||
|
"size_human": "43.66 KB",
|
||||||
|
"channels": 4,
|
||||||
|
"sample_count": 15,
|
||||||
|
"modified": "1991-12-23T07:07:00+01:00",
|
||||||
|
"url": "https://www.moonweb.org/files/amiga/mods/run_away.mod"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tekkno.mod",
|
||||||
|
"title": "tekknotracks genius",
|
||||||
|
"size_human": "39.75 KB",
|
||||||
|
"channels": 4,
|
||||||
|
"sample_count": 14,
|
||||||
|
"modified": "1991-12-23T07:13:00+01:00",
|
||||||
|
"url": "https://www.moonweb.org/files/amiga/mods/tekkno.mod"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "turbo.mod",
|
||||||
|
"title": "TURBO_SONG_FOR_INTRO",
|
||||||
|
"size_human": "126.31 KB",
|
||||||
|
"channels": 4,
|
||||||
|
"sample_count": 10,
|
||||||
|
"modified": "1987-04-22T00:10:18+02:00",
|
||||||
|
"url": "https://www.moonweb.org/files/amiga/mods/turbo.mod"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "valla.mod",
|
||||||
|
"title": "VALLA_______________",
|
||||||
|
"size_human": "25.18 KB",
|
||||||
|
"channels": 4,
|
||||||
|
"sample_count": 3,
|
||||||
|
"modified": "1993-02-23T08:11:24+01:00",
|
||||||
|
"url": "https://www.moonweb.org/files/amiga/mods/valla.mod"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "wizard.mod",
|
||||||
|
"title": "wizard by genius 93",
|
||||||
|
"size_human": "46.34 KB",
|
||||||
|
"channels": 4,
|
||||||
|
"sample_count": 9,
|
||||||
|
"modified": "1991-12-23T07:02:00+01:00",
|
||||||
|
"url": "https://www.moonweb.org/files/amiga/mods/wizard.mod"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,288 @@
|
|||||||
|
ARJUTIL.RAR [000] ┌────────────────────────┐
|
||||||
|
> │ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
> │ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
> │ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
> │ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
> │ │
|
||||||
|
> │ ArjUtil V1.0 │
|
||||||
|
> │ ---------------------- │
|
||||||
|
> │ You enter the sub-dir │
|
||||||
|
> │ and the dest.drive and │
|
||||||
|
> │ my prog does the rest. │
|
||||||
|
> │ │
|
||||||
|
> │ This is Freeware │
|
||||||
|
> │ │
|
||||||
|
> │ SkyLINE Production '94 │
|
||||||
|
> │ │
|
||||||
|
> └────────────────────────┘
|
||||||
|
CD_OPEN.RAR [000] ┌────────────────────────┐
|
||||||
|
> │ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
> │ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
> │ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
> │ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
> │ │
|
||||||
|
> │ CDROM TSR Dooropener │
|
||||||
|
> │ ---------------------- │
|
||||||
|
> │ Opens the CD-ROM door │
|
||||||
|
> │ with the F12 key. │
|
||||||
|
> │ │
|
||||||
|
> │ SkyLINE ShareWare 1995 │
|
||||||
|
> │ │
|
||||||
|
> └────────────────────────┘
|
||||||
|
COPERINT.RAR [000] -----------------------------------
|
||||||
|
> ==== UncleSAM/SkyLINE presents ====
|
||||||
|
> ≡≡≡≡ COPPER intro ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
|
||||||
|
> ==== Real Textmode 3 intro ========
|
||||||
|
> -----------------------------------
|
||||||
|
> Amazing 3 Coppers on the screen
|
||||||
|
> SmoothScroller on the top
|
||||||
|
> Up/Dn Fading text
|
||||||
|
> & all in the normal VGAMode 3
|
||||||
|
>
|
||||||
|
> (C) 04/1995 by UncleSAM/SkyLINE
|
||||||
|
DCPP.RAR [000] SkyLINE proudly presents
|
||||||
|
> ▓▀▀▓ ▓▀▀ ▓▀▀▓ ▓▀▀▓
|
||||||
|
> ▒ ▒ ▒ ▒▀▀▀ ▒▀▀▀
|
||||||
|
> ░▄▄░ ░▄▄ ░ ░
|
||||||
|
> DemoCoderz Pascal Pack
|
||||||
|
> ------------------------
|
||||||
|
> Here it is, the ultimate
|
||||||
|
> source codes for all
|
||||||
|
> pascal demo beginners!
|
||||||
|
> Learn from existing srcs
|
||||||
|
> and make your own demo
|
||||||
|
> ------------------------
|
||||||
|
> 3d/Plasmas/Coppers/Sound
|
||||||
|
> Xmode/Bobs/and even more
|
||||||
|
DISKINFO.RAR [000] ┌────────────────────────┐
|
||||||
|
> │ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
> │ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
> │ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
> │ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
> │ │
|
||||||
|
> │ DiskInfo V1.0 │
|
||||||
|
> │ ---------------------- │
|
||||||
|
> │ It shows you how much │
|
||||||
|
> │ diskspace on up to 8 │
|
||||||
|
> │ drives is free. │
|
||||||
|
> │ │
|
||||||
|
> │ This is Freeware │
|
||||||
|
> │ │
|
||||||
|
> │ SkyLINE Production '94 │
|
||||||
|
> │ │
|
||||||
|
> └────────────────────────┘
|
||||||
|
INFOPACK.RAR [000] ┌────────────────────────┐
|
||||||
|
> │ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
> │ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
> │ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
> │ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
> │ SkyLINE InfoPack │
|
||||||
|
> │ ────────────────────── │
|
||||||
|
> │ Newest Infos, little │
|
||||||
|
> │ Intros and other. │
|
||||||
|
> │ │
|
||||||
|
> │ SkyLINE ShareWare 1995 │
|
||||||
|
> └────────────────────────┘
|
||||||
|
MODDISK1.RAR [000] ┌────────────────────────┐
|
||||||
|
> │ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
> │ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
> │ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
> │ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
> │ │
|
||||||
|
> │ MusicDisk #1 │
|
||||||
|
> │ ---------------------- │
|
||||||
|
> │ Some nice but not so │
|
||||||
|
> │ good MODs from Stern. │
|
||||||
|
> │ This includes MDP by │
|
||||||
|
> │ the Future Crew. │
|
||||||
|
> │ │
|
||||||
|
> │ This is Freeware │
|
||||||
|
> │ │
|
||||||
|
> │ SkyLINE Production '94 │
|
||||||
|
> │ │
|
||||||
|
> └────────────────────────┘
|
||||||
|
PLAYMOD.RAR [000] ┌────────────────────────┐
|
||||||
|
> │ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
> │ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
> │ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
> │ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
> │ │
|
||||||
|
> │ Play MOD V0.2ß │
|
||||||
|
> │ ---------------------- │
|
||||||
|
> │ A little MOD-Player. │
|
||||||
|
> │ Uses WOW-TPU. Sorry │
|
||||||
|
> │ docs and programm in │
|
||||||
|
> │ german. Notice: This │
|
||||||
|
> │ version has some bugs. │
|
||||||
|
> │ WOW-TPU has the bugs!! │
|
||||||
|
> │ │
|
||||||
|
> │ This is Freeware │
|
||||||
|
> │ │
|
||||||
|
> │ SkyLINE Production '94 │
|
||||||
|
> │ │
|
||||||
|
> └────────────────────────┘
|
||||||
|
PREVIEW1.RAR [000] ┌────────────────────────┐
|
||||||
|
> │ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
> │ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
> │ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
> │ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
> │ │
|
||||||
|
> │ Preview Compilation #1 │
|
||||||
|
> │ ---------------------- │
|
||||||
|
> │ Here are some pics │
|
||||||
|
> │ from us mixed up with │
|
||||||
|
> │ some text and music. │
|
||||||
|
> │ │
|
||||||
|
> │ SkyLINE ShareWare 1995 │
|
||||||
|
> │ │
|
||||||
|
> └────────────────────────┘
|
||||||
|
SHARKBOX.RAR [000] ▄▄▄▄▄ ▄ ▄ ▄▄▄▄▄ ▄▄▄▄ ▄ ▄
|
||||||
|
> ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄
|
||||||
|
> ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄ ▄▄▄▄
|
||||||
|
> ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄
|
||||||
|
> ▄▄▄▄▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄
|
||||||
|
> ·∙─────── B - O - X ───────∙·
|
||||||
|
>
|
||||||
|
> sAM/SkyLINE DemoGroup Auxburg
|
||||||
|
> present
|
||||||
|
> The Shark Box Intro
|
||||||
|
>
|
||||||
|
> oNLiNE from: sAT 10 to sUN 24
|
||||||
|
> ·∙──── +49-8231-88912 ─────∙·
|
||||||
|
SHELL.RAR [000] ┌────────────────────────┐
|
||||||
|
> │ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
> │ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
> │ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
> │ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
> │ │
|
||||||
|
> │ X-OS Shell V0.65ß │
|
||||||
|
> │ ---------------------- │
|
||||||
|
> │ This is a NC-Clone. │
|
||||||
|
> │ Made with the well │
|
||||||
|
> │ known SkyLINE-Bench │
|
||||||
|
> │ Workarea. Little │
|
||||||
|
> │ Preview sith some bugs │
|
||||||
|
> │ and only some commands.│
|
||||||
|
> │ │
|
||||||
|
> │ I'm still working on │
|
||||||
|
> │ this product, but │
|
||||||
|
> │ there must some bigger │
|
||||||
|
> │ products finished │
|
||||||
|
> │ first before this. │
|
||||||
|
> │ Notice this is only a │
|
||||||
|
> │ Preview nor a cripple │
|
||||||
|
> │ ShareWare. │
|
||||||
|
> │ │
|
||||||
|
> │ SkyLINE Production '94 │
|
||||||
|
> │ │
|
||||||
|
> └────────────────────────┘
|
||||||
|
SLN_DEMO.RAR [000] ┌────────────────────────┐
|
||||||
|
> │ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
> │ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
> │ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
> │ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
> │ │
|
||||||
|
> │ Uncle SAM welcome Demo │
|
||||||
|
> │ ---------------------- │
|
||||||
|
> │ A little Demo by the │
|
||||||
|
> │ SkyLINE-Crew. │
|
||||||
|
> │ │
|
||||||
|
> │ SkyLINE ShareWare 1994 │
|
||||||
|
> │ │
|
||||||
|
> └────────────────────────┘
|
||||||
|
SLN_SMI.RAR [000] SkyLINE Searching Member Intro
|
||||||
|
> +----------------------------+
|
||||||
|
> | Final Bugfixed Version |
|
||||||
|
> +----------------------------+
|
||||||
|
> We' re still searching for new
|
||||||
|
> Members. So d/l and call today
|
||||||
|
SLNFONTS.RAR [000] SkyLINE proudly presents
|
||||||
|
> ▓███▀█ ▓███▀█ ▓███▀▀█ ▀▀████▀▀
|
||||||
|
> ▒███▄ ▒███ █ ▒███ █ ███░
|
||||||
|
> ████ ████▄█ ████ █ ███▒
|
||||||
|
>
|
||||||
|
> ▓███▀█ ▓███▀█ ▓███▀█ ▓███ █
|
||||||
|
> ▒███▄█ ▒███▄█ ▒███ ▒███▀▄
|
||||||
|
> ████ ████ █ ████▄█ ████ █
|
||||||
|
>
|
||||||
|
> Over 100 Fonts for TheDraw in
|
||||||
|
> three Tdfont-Packs. Easy to
|
||||||
|
> change with included batches!
|
||||||
|
> A must for all Sysop's
|
||||||
|
SPEAKTIM.RAR [000] ┌────────────────────────┐
|
||||||
|
> │ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
> │ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
> │ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
> │ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
> │ │
|
||||||
|
> │ Speaktime V1.0 │
|
||||||
|
> │ ---------------------- │
|
||||||
|
> │ Have you ever heard │
|
||||||
|
> │ your PC speaking the │
|
||||||
|
> │ time. Here it is. │
|
||||||
|
> │ Notice: German version │
|
||||||
|
> │ │
|
||||||
|
> │ This is Freeware │
|
||||||
|
> │ │
|
||||||
|
> │ SkyLINE Production '94 │
|
||||||
|
> │ │
|
||||||
|
> └────────────────────────┘
|
||||||
|
STIME_V2.RAR [000] ┌────────────────────────┐
|
||||||
|
> │ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
> │ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
> │ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
> │ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
> │ Speaktime V2.0 │
|
||||||
|
> │ ────────────────────── │
|
||||||
|
> │ Hear your Computer │
|
||||||
|
> │ speaking the time. Now │
|
||||||
|
> │ also on SoundBlaster. │
|
||||||
|
> │ │
|
||||||
|
> │ SkyLINE ShareWare 1995 │
|
||||||
|
> └────────────────────────┘
|
||||||
|
TET_COMP.RAR [000] ┌────────────────────────┐
|
||||||
|
> │ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
> │ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
> │ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
> │ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
> │ │
|
||||||
|
> │ TetrisCompetition V1.0 │
|
||||||
|
> │ ---------------------- │
|
||||||
|
> │ A Tetris game for 2 │
|
||||||
|
> │ players with the rules │
|
||||||
|
> │ like GameBoy Tetris. │
|
||||||
|
> │ │
|
||||||
|
> │ This is a Preview │
|
||||||
|
> │ │
|
||||||
|
> │ SkyLINE Production '94 │
|
||||||
|
> │ │
|
||||||
|
> └────────────────────────┘
|
||||||
|
THL_ADDY.RAR [000] ▄▄▄▄▄▄▄▄ ▄▄ ▄▄ ▄▄
|
||||||
|
> ▐▓▓▓▓▓▓▓▓▌▐▓▓▌ ▐▓▓▌▐▓▓▌
|
||||||
|
> ▐ ■█▓▓█▀■ ▐▓▓█■▐▓▓▌▐▓▓▌
|
||||||
|
> ▓▓▓▓▓ ▐▓▓▌ ▐▓▓▓▓▓▓▓▌▐▓▓▌■ ▓▓▓▓▓
|
||||||
|
> ▐▓▓▌ ▐▓▓▌ ▐▓▓▌▐▓▓█▄▄▄
|
||||||
|
> ▐▓▓▌ ▐▓▓▌ ▐▓▓▌▐▓▓▓▓▓▓▌
|
||||||
|
> ▐▀■▌ ▐▀■▌ ▐▀■▌▐▀■ ▀▀▌
|
||||||
|
> tHE Highland BBS Addy
|
||||||
|
> Esspecially made for KlAUS GRUBER
|
||||||
|
!DM_V2_0.RAR [000] ┌────────────────────────┐
|
||||||
|
> │ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
> │ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
> │ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
> │ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
> │ │
|
||||||
|
> │ DosMENU(TM) V2.0 │
|
||||||
|
> │ ---------------------- │
|
||||||
|
> │ This program selects │
|
||||||
|
> │ a System-Configuartion │
|
||||||
|
> │ while booting. Helpful │
|
||||||
|
> │ for all with more than │
|
||||||
|
> │ one Configuration. │
|
||||||
|
> │ │
|
||||||
|
> │ This is the finished │
|
||||||
|
> │ and published version. │
|
||||||
|
> │ │
|
||||||
|
> │ SkyLINE ShareWare 1994 │
|
||||||
|
> │ │
|
||||||
|
> └────────────────────────┘
|
||||||
@@ -0,0 +1,299 @@
|
|||||||
|
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Date:
|
||||||
|
▒▒███████████████ ▒▒ 25-Aug-94
|
||||||
|
▒▒██ █ █ █ █ ██ ███ █▄ █▄ █▄ █████▄ ▒▒
|
||||||
|
▒▒██ ███ █ █ █ ██ ███ ███ ███▄███ ███▀▀▀ ▒▒ Lines:
|
||||||
|
▒▒██ █ ██ █ ██ ███ ███ ███████ █████ ▒▒ 299
|
||||||
|
▒▒████ █ █ ██ ███ ███▄▄▄ ███ ███▀███ ███▄▄▄ ▒▒
|
||||||
|
▒▒██ █ █ ██ ███ ▀████ ▀█ ▀█ ▀█ ▀████ ▒▒ File Size:
|
||||||
|
▒▒███████████████ ▒▒ 12 KBytes
|
||||||
|
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
|
||||||
|
▒▒ SkyLINE -> Information File <- SkyLINE ▒▒ Written by
|
||||||
|
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Sterling
|
||||||
|
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
|
||||||
|
|
||||||
|
You will probably say "What is SkyLine?". I will try to explain what we wanna
|
||||||
|
do on the PC. SkyLine is a very young group of people who want to enter the
|
||||||
|
world of PC. At the moment there are only two Members of SkyLine. By the way
|
||||||
|
this is a legal group. NO illegal tradings or any other piracy stuff. At the
|
||||||
|
moment we are only coding some nice utilities and some not so good games, but
|
||||||
|
in the future we want to code real cool demos in asm.
|
||||||
|
|
||||||
|
|
||||||
|
Topics in this document
|
||||||
|
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
Members
|
||||||
|
Finished Products
|
||||||
|
Unfinished Products
|
||||||
|
Some words about DOSMenu
|
||||||
|
How to reach SkyLINE
|
||||||
|
Final Message
|
||||||
|
The END
|
||||||
|
|
||||||
|
|
||||||
|
Members
|
||||||
|
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
|
||||||
|
|
||||||
|
Alias | Real Name | Age | Activities
|
||||||
|
----------+-------------------+-----+----------------------------------------
|
||||||
|
Sterling | Stefan Kölle | 17 | Organizing, Code, Music, Some GFX
|
||||||
|
M.H. | Matthias Hebeisen | 18 | RayTracing, GFX, Some Coding
|
||||||
|
|
||||||
|
|
||||||
|
Spreaded Products
|
||||||
|
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
|
||||||
|
|
||||||
|
Productname: Arj Utility V1.0
|
||||||
|
Filename : ARJUTIL.ZIP
|
||||||
|
Filesize : 8 KBytes
|
||||||
|
StartDate : summer 1993
|
||||||
|
ReleaseDate: 24.08.1994
|
||||||
|
Description: ┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ │
|
||||||
|
│ ArjUtil V1.0 │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ You enter the sub-dir │
|
||||||
|
│ and the dest.drive and │
|
||||||
|
│ my prog does the rest. │
|
||||||
|
│ │
|
||||||
|
│ This is Freeware │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE Production '94 │
|
||||||
|
│ │
|
||||||
|
└────────────────────────┘
|
||||||
|
|
||||||
|
Productname: Shell V0.65ß Preview
|
||||||
|
Filename : SHELL.ZIP
|
||||||
|
Filesize : 21 KBytes
|
||||||
|
StartDate : summer 1993
|
||||||
|
ReleaseDate: 24.08.1994
|
||||||
|
Description: ┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ │
|
||||||
|
│ X-OS Shell V0.65ß │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ This is a NC-Clone. │
|
||||||
|
│ Made with the well │
|
||||||
|
│ known SkyLINE-Bench │
|
||||||
|
│ Workarea. Little │
|
||||||
|
│ Preview sith some bugs │
|
||||||
|
│ and only some commands.│
|
||||||
|
│ │
|
||||||
|
│ I'm still working on │
|
||||||
|
│ this product, but │
|
||||||
|
│ there must some bigger │
|
||||||
|
│ products finished │
|
||||||
|
│ first before this. │
|
||||||
|
│ Notice this is only a │
|
||||||
|
│ Preview nor a cripple │
|
||||||
|
│ ShareWare. │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE Production '94 │
|
||||||
|
│ │
|
||||||
|
└────────────────────────┘
|
||||||
|
|
||||||
|
Productname: DiskInfo V1.0
|
||||||
|
Filename : DISKINFO.ZIP
|
||||||
|
Filesize : 10 KBytes
|
||||||
|
StartDate : fall 1993
|
||||||
|
ReleaseDate: 24.08.1994
|
||||||
|
Description: ┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ │
|
||||||
|
│ DiskInfo V1.0 │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ It shows you how much │
|
||||||
|
│ diskspace on up to 8 │
|
||||||
|
│ drives is free. │
|
||||||
|
│ │
|
||||||
|
│ This is Freeware │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE Production '94 │
|
||||||
|
│ │
|
||||||
|
└────────────────────────┘
|
||||||
|
|
||||||
|
Productname: Play MOD V0.2ß
|
||||||
|
Filename : PLAYMOD.ZIP
|
||||||
|
Filesize : 15 KBytes
|
||||||
|
StartDate : winter 1993
|
||||||
|
ReleaseDate: 24.08.1994
|
||||||
|
Description: ┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ │
|
||||||
|
│ Play MOD V0.2ß │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ A little MOD-Player. │
|
||||||
|
│ Uses WOW-TPU. Sorry │
|
||||||
|
│ docs and programm in │
|
||||||
|
│ german. Notice: This │
|
||||||
|
│ version has some bugs. │
|
||||||
|
│ WOW-TPU has the bugs!! │
|
||||||
|
│ │
|
||||||
|
│ This is Freeware │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE Production '94 │
|
||||||
|
│ │
|
||||||
|
└────────────────────────┘
|
||||||
|
|
||||||
|
Productname: Tetris Competition V1.0
|
||||||
|
Filename : TET_COMP.ZIP
|
||||||
|
Filesize : 55 KBytes
|
||||||
|
StartDate : spring 1994
|
||||||
|
ReleaseDate: 24.08.1994
|
||||||
|
Description: ┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ │
|
||||||
|
│ TetrisCompetition V1.0 │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ A Tetris game for 2 │
|
||||||
|
│ players with the rules │
|
||||||
|
│ like GameBoy Tetris. │
|
||||||
|
│ │
|
||||||
|
│ This is a Preview │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE Production '94 │
|
||||||
|
│ │
|
||||||
|
└────────────────────────┘
|
||||||
|
|
||||||
|
Productname: SpeakTime V1.0
|
||||||
|
Filename : SPEAKTIM.ZIP
|
||||||
|
Filesize : 90 KBytes
|
||||||
|
StartDate : summer 1994
|
||||||
|
ReleaseDate: 24.08.1994
|
||||||
|
Description: ┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ │
|
||||||
|
│ Speaktime V1.0 │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ Have you ever heard │
|
||||||
|
│ your PC speaking the │
|
||||||
|
│ time. Here it is. │
|
||||||
|
│ Notice: German version │
|
||||||
|
│ │
|
||||||
|
│ This is Freeware │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE Production '94 │
|
||||||
|
│ │
|
||||||
|
└────────────────────────┘
|
||||||
|
|
||||||
|
Productname: MOD Disk Number One
|
||||||
|
Filename : MODDISK1.ZIP
|
||||||
|
Filesize : 410 KBytes
|
||||||
|
StartDate : 24.08.1994
|
||||||
|
ReleaseDate: 24.08.1994
|
||||||
|
Description: ┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ │
|
||||||
|
│ MusicDisk #1 │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ Some nice but not so │
|
||||||
|
│ good MODs from Stern. │
|
||||||
|
│ This includes MDP by │
|
||||||
|
│ the Future Crew. │
|
||||||
|
│ │
|
||||||
|
│ This is Freeware │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE Production '94 │
|
||||||
|
│ │
|
||||||
|
└────────────────────────┘
|
||||||
|
|
||||||
|
Productname: DOSMenu Final V2.0
|
||||||
|
Filename : !DM_V2_0
|
||||||
|
Filesize : ?? KBytes
|
||||||
|
StartDate : summer 1993
|
||||||
|
ReleaseDate: ??.??.1994
|
||||||
|
Description: ┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ │
|
||||||
|
│ DOSMenu Final V2.0 │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ This program selects │
|
||||||
|
│ a System-Configuartion │
|
||||||
|
│ while booting. Helpful │
|
||||||
|
│ for all with more than │
|
||||||
|
│ one Configuration. │
|
||||||
|
│ │
|
||||||
|
│ This is the finished │
|
||||||
|
│ and published version. │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE Production '94 │
|
||||||
|
│ │
|
||||||
|
└────────────────────────┘
|
||||||
|
|
||||||
|
Frequently asked Questions about SkyLINE
|
||||||
|
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
|
||||||
|
|
||||||
|
Q: Why have you released all your first Products on 24.08.1994?
|
||||||
|
A: That's because on this day I searched through all my Sub-DIRs and
|
||||||
|
thought it would be funny to release all my little programs as Freeware.
|
||||||
|
|
||||||
|
|
||||||
|
Some words about DOSMenu
|
||||||
|
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
|
||||||
|
|
||||||
|
These are the previous versions of DOSMenu which are not fully working and
|
||||||
|
they have some bugs. Please don't spread this versions any longer.
|
||||||
|
|
||||||
|
DOSMenu V0.9ß
|
||||||
|
DOSMenu II V2.0
|
||||||
|
DOSMenu III V1.0 - V1.4
|
||||||
|
DOSMenu Update
|
||||||
|
|
||||||
|
|
||||||
|
How to reach SkyLINE
|
||||||
|
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
|
||||||
|
|
||||||
|
Write to : Stefan Kölle
|
||||||
|
Laugingerstr. 10
|
||||||
|
86154 Augsburg
|
||||||
|
Germany
|
||||||
|
Or simply dial: +49-821-416484 (19h-20h)
|
||||||
|
|
||||||
|
|
||||||
|
Final Message
|
||||||
|
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
|
||||||
|
|
||||||
|
If you want to order a program please use the ORDER.TXT. Read the information
|
||||||
|
very good in ORDER.TXT. If somebody wants to join SkyLINE please don't wait
|
||||||
|
and call us now. We strongly need a BBS. Please call us if you live in
|
||||||
|
Augsburg in Germany and you want to join SkyLINE. We also need more Coder,
|
||||||
|
Graphics-Artists and Music-Composer and finaly a vice Organizer or later the
|
||||||
|
first Organizer is needed, I'm not a real Organizer. Signed Sterling.
|
||||||
|
|
||||||
|
|
||||||
|
The END
|
||||||
|
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
|
||||||
|
__ _ _ ____
|
||||||
|
_| | | | \ | \|\ | __\
|
||||||
|
/ \|_ \ | |_ | || || _|
|
||||||
|
\/\ \ \___| \_| \|\_| \___|
|
||||||
|
/ [94-Stern]
|
||||||
@@ -0,0 +1,548 @@
|
|||||||
|
|
||||||
|
█ ░█ ███ ██ █▓ █
|
||||||
|
█▒ █ █ █ █░█ ▒█ ░█ ███████
|
||||||
|
██░ ░ ░█ ░█ █ ░█ ██░█ █ █
|
||||||
|
░█ █▒ █▒ ████▓ █ ░░ ██ ██ █░ ▒█▓█████░
|
||||||
|
░█ █░ ▒▒ █▒ █ █ █░ █ █ █
|
||||||
|
░█▓ ███░██░ ██ █ █ ░██ █
|
||||||
|
█ ▒█░ █ █ ▓█ █ ██ █▓
|
||||||
|
██ ▒█ █░██████████ █ █░ ██ █▒████░░░▒███
|
||||||
|
░█ ██ █
|
||||||
|
██░
|
||||||
|
The iNFOFilE ▒█████▒ █ ███▒
|
||||||
|
^^^ ^^^^^^^^ ████▓ ██ ███░
|
||||||
|
████░ ▒█░ ░███░
|
||||||
|
███░ █░ ░████▒
|
||||||
|
▒███░ Version: June '95
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Hello everybody out there... This is the SkyLINE iNFOFiLE with a new dezign
|
||||||
|
|
||||||
|
As you will already know, SkyLINE is a DemoGroup in AuxBurg. In this Textfile
|
||||||
|
we want to tell you all about this Crew.
|
||||||
|
|
||||||
|
|
||||||
|
···········································································
|
||||||
|
|
||||||
|
|
||||||
|
-> The Topics this time...
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
* Memberstaff
|
||||||
|
* Spreaded Products
|
||||||
|
* Distro-Sites
|
||||||
|
* The Order-Form
|
||||||
|
* How to contact sAM/SkyLINE
|
||||||
|
* Some information
|
||||||
|
|
||||||
|
|
||||||
|
···········································································
|
||||||
|
|
||||||
|
|
||||||
|
-> Memberstaff
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
|
╒═══════════════════════════════════════════════════════════════════════════╕
|
||||||
|
│ SkyLINE Members: │
|
||||||
|
├─════════════════──────────────┬──────────┬────────────────────────────────┤
|
||||||
|
│ sAM (Stefan Kölle) │ 18 years │ Organizing, Code, Music, ANSI, │
|
||||||
|
│ │ │ Some GFX (and soon SYSOP?) │
|
||||||
|
│ M.H. (Matthias Hebeisen) │ 18 years │ RayTracing, GFX, Some Coding │
|
||||||
|
╞═══════════════════════════════╧══════════╧════════════════════════════════╡
|
||||||
|
│ │
|
||||||
|
│ Cooperations with: │
|
||||||
|
├─══════════════════────────────┬──────────┬────────────────────────────────┤
|
||||||
|
│ Milk Run (Jürgen Vejmelka) │ 19 years │ Coding, Some Graphics │
|
||||||
|
│ Mirko (Mirko Klinski) │ 17 years │ Graphics │
|
||||||
|
│ and other (name ???) │ ?? years │ Graphics │
|
||||||
|
╞═══════════════════════════════╧══════════╧════════════════════════════════╡
|
||||||
|
│ │
|
||||||
|
│ New Members: │
|
||||||
|
├─════════════──────────────────────────────────────────────────────────────┤
|
||||||
|
│ This could be you - Call us today, if you think you are good enough │
|
||||||
|
╘═══════════════════════════════════════════════════════════════════════════╛
|
||||||
|
|
||||||
|
|
||||||
|
···········································································
|
||||||
|
|
||||||
|
|
||||||
|
-> Spreaded Products
|
||||||
|
^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Productname: Arj Utility V1.0
|
||||||
|
Filename : ARJUTIL.ZIP
|
||||||
|
Filesize : 8 KBytes
|
||||||
|
StartDate : summer 1993
|
||||||
|
ReleaseDate: 24.08.1994
|
||||||
|
Description: ┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ ArjUtil V1.0 │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ You enter the sub-dir │
|
||||||
|
│ and the dest.drive and │
|
||||||
|
│ my prog does the rest. │
|
||||||
|
│ This is Freeware │
|
||||||
|
└────────────────────────┘
|
||||||
|
|
||||||
|
Productname: Shell V0.65ß Preview
|
||||||
|
Filename : SHELL.ZIP
|
||||||
|
Filesize : 21 KBytes
|
||||||
|
StartDate : summer 1993
|
||||||
|
ReleaseDate: 24.08.1994
|
||||||
|
Description: ┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ X-OS Shell V0.65ß │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ This is a NC-Clone. │
|
||||||
|
│ Made with the well │
|
||||||
|
│ known SkyLINE-Bench │
|
||||||
|
│ Workarea. Little │
|
||||||
|
│ Preview sith some bugs │
|
||||||
|
│ and only some commands.│
|
||||||
|
│ │
|
||||||
|
│ I'm still working on │
|
||||||
|
│ this product, but │
|
||||||
|
│ there must some bigger │
|
||||||
|
│ products finished │
|
||||||
|
│ first before this. │
|
||||||
|
│ Notice this is only a │
|
||||||
|
│ Preview nor a cripple │
|
||||||
|
│ ShareWare. │
|
||||||
|
└────────────────────────┘
|
||||||
|
|
||||||
|
Productname: DiskInfo V1.0
|
||||||
|
Filename : DISKINFO.ZIP
|
||||||
|
Filesize : 10 KBytes
|
||||||
|
StartDate : fall 1993
|
||||||
|
ReleaseDate: 24.08.1994
|
||||||
|
Description: ┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ DiskInfo V1.0 │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ It shows you how much │
|
||||||
|
│ diskspace on up to 8 │
|
||||||
|
│ drives is free. │
|
||||||
|
│ This is Freeware │
|
||||||
|
└────────────────────────┘
|
||||||
|
|
||||||
|
Productname: Play MOD V0.2ß
|
||||||
|
Filename : PLAYMOD.ZIP
|
||||||
|
Filesize : 15 KBytes
|
||||||
|
StartDate : winter 1993
|
||||||
|
ReleaseDate: 24.08.1994
|
||||||
|
Description: ┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ Play MOD V0.2ß │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ A little MOD-Player. │
|
||||||
|
│ Uses WOW-TPU. Sorry │
|
||||||
|
│ docs and programm in │
|
||||||
|
│ german. Notice: This │
|
||||||
|
│ version has some bugs. │
|
||||||
|
│ WOW-TPU has the bugs!! │
|
||||||
|
│ This is Freeware │
|
||||||
|
└────────────────────────┘
|
||||||
|
|
||||||
|
Productname: Tetris Competition V1.0
|
||||||
|
Filename : TET_COMP.ZIP
|
||||||
|
Filesize : 55 KBytes
|
||||||
|
StartDate : spring 1994
|
||||||
|
ReleaseDate: 24.08.1994
|
||||||
|
Description: ┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ TetrisCompetition V1.0 │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ A Tetris game for 2 │
|
||||||
|
│ players with the rules │
|
||||||
|
│ like GameBoy Tetris. │
|
||||||
|
│ This is a Preview │
|
||||||
|
└────────────────────────┘
|
||||||
|
|
||||||
|
Productname: SpeakTime V1.0
|
||||||
|
Filename : SPEAKTIM.ZIP
|
||||||
|
Filesize : 90 KBytes
|
||||||
|
StartDate : summer 1994
|
||||||
|
ReleaseDate: 24.08.1994
|
||||||
|
Description: ┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ Speaktime V1.0 │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ Have you ever heard │
|
||||||
|
│ your PC speaking the │
|
||||||
|
│ time. Here it is. │
|
||||||
|
│ Notice: German version │
|
||||||
|
│ This is Freeware │
|
||||||
|
└────────────────────────┘
|
||||||
|
|
||||||
|
Productname: MOD Disk Number One
|
||||||
|
Filename : MODDISK1.ZIP
|
||||||
|
Filesize : 410 KBytes
|
||||||
|
StartDate : 24.08.1994
|
||||||
|
ReleaseDate: 24.08.1994
|
||||||
|
Description: ┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ MusicDisk #1 │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ Some nice but not so │
|
||||||
|
│ good MODs from Stern. │
|
||||||
|
│ This includes MDP by │
|
||||||
|
│ the Future Crew. │
|
||||||
|
│ This is Freeware │
|
||||||
|
└────────────────────────┘
|
||||||
|
|
||||||
|
Productname: DosMENU(TM) V2.0
|
||||||
|
Filename : !DM_V2_0
|
||||||
|
Filesize : 181 KBytes
|
||||||
|
StartDate : summer 1993
|
||||||
|
ReleaseDate: 26.09.1994
|
||||||
|
Description: ┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ │
|
||||||
|
│ DosMENU(TM) V2.0 │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ This program selects │
|
||||||
|
│ a System-Configuartion │
|
||||||
|
│ while booting. Helpful │
|
||||||
|
│ for all with more than │
|
||||||
|
│ one Configuration. │
|
||||||
|
│ │
|
||||||
|
│ This is the finished │
|
||||||
|
│ and published version. │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE ShareWare 1994 │
|
||||||
|
│ │
|
||||||
|
└────────────────────────┘
|
||||||
|
|
||||||
|
Productname: The Uncle SAM welcome demo
|
||||||
|
Filename : SLN_DEMO
|
||||||
|
Filesize : 181 KBytes
|
||||||
|
StartDate : September 1994
|
||||||
|
ReleaseDate: 27.10.1994
|
||||||
|
Description: ┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ Uncle SAM welcome Demo │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ A little Demo by the │
|
||||||
|
│ SkyLINE-Crew. │
|
||||||
|
└────────────────────────┘
|
||||||
|
|
||||||
|
Productname: Preview Compilation #1
|
||||||
|
Filename : PREVIEW1
|
||||||
|
Filesize : 410 KBytes
|
||||||
|
StartDate : 07.03.1995
|
||||||
|
ReleaseDate: 07.03.1995 / 1 hour later :-)
|
||||||
|
Description: ┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ Preview Compilation #1 │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ Here are some pics │
|
||||||
|
│ from us mixed up with │
|
||||||
|
│ some text and music. │
|
||||||
|
└────────────────────────┘
|
||||||
|
|
||||||
|
Productname: CD-ROM TSR Dooropener
|
||||||
|
Filename : CD_OPEN
|
||||||
|
Filesize : 11 KBytes
|
||||||
|
StartDate : 03.02.1995
|
||||||
|
ReleaseDate: 07.03.1995
|
||||||
|
Description: ┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ CDROM TSR Dooropener │
|
||||||
|
│ ---------------------- │
|
||||||
|
│ Opens the CD-ROM door │
|
||||||
|
│ with the F12 key. │
|
||||||
|
│ SkyLINE ShareWare 1995 │
|
||||||
|
└────────────────────────┘
|
||||||
|
|
||||||
|
Productname: Infromation Package & Little Intro
|
||||||
|
Filename : INFOPACK
|
||||||
|
Filesize : 74 KBytes
|
||||||
|
StartDate : 12.02.1995 (Intro started a year ago)
|
||||||
|
ReleaseDate: 12.03.1995
|
||||||
|
Description: ┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ SkyLINE InfoPack │
|
||||||
|
│ ────────────────────── │
|
||||||
|
│ Newest Infos, little │
|
||||||
|
│ Intros and other. │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE ShareWare 1995 │
|
||||||
|
└────────────────────────┘
|
||||||
|
|
||||||
|
Productname: SpeakTime V2.0 (New Version)
|
||||||
|
Filename : STIME_V2
|
||||||
|
Filesize : 107 KBytes
|
||||||
|
StartDate : 24.08.1994 (first version)
|
||||||
|
ReleaseDate: 22.03.1995
|
||||||
|
Description: ┌────────────────────────┐
|
||||||
|
│ ██▌█ █▐█ █▐█ █▌█ █▐██ │
|
||||||
|
│ █ █ █▐█ █▐█ █▌█▌█▐█ │
|
||||||
|
│ ▀█▌█▀▄ ▐█ ▐█ █▌███▐█▀ │
|
||||||
|
│ ██▌█ █ ▐█ ▐██▌█▌█▐█▐██ │
|
||||||
|
│ Speaktime V2.0 │
|
||||||
|
│ ────────────────────── │
|
||||||
|
│ Hear your Computer │
|
||||||
|
│ speaking the time. Now │
|
||||||
|
│ also on SoundBlaster. │
|
||||||
|
│ │
|
||||||
|
│ SkyLINE ShareWare 1995 │
|
||||||
|
└────────────────────────┘
|
||||||
|
|
||||||
|
Productname: SkyLINE Searching Member Intro (Bugfixed Version)
|
||||||
|
Filename : SLN_SMI
|
||||||
|
Filesize : 17 KBytes
|
||||||
|
StartDate : 12.03.1995 (first version)
|
||||||
|
ReleaseDate: 09.04.1995
|
||||||
|
Description: SkyLINE Searching Member Intro
|
||||||
|
+----------------------------+
|
||||||
|
| Final Bugfixed Version |
|
||||||
|
+----------------------------+
|
||||||
|
We' re still searching for new
|
||||||
|
Members. So d/l and call today
|
||||||
|
|
||||||
|
Productname: VGA Textmode 3 Copper Intro
|
||||||
|
Filename : COPERINT
|
||||||
|
Filesize : 16 KBytes
|
||||||
|
StartDate : 30.03.1995
|
||||||
|
ReleaseDate: 09.04.1995
|
||||||
|
Description: -----------------------------------
|
||||||
|
==== UncleSAM/SkyLINE presents ====
|
||||||
|
≡≡≡≡ COPPER intro ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
|
||||||
|
==== Real Textmode 3 intro ========
|
||||||
|
-----------------------------------
|
||||||
|
Amazing 3 Coppers on the screen
|
||||||
|
SmoothScroller on the top
|
||||||
|
Up/Dn Fading text
|
||||||
|
& all in the normal VGAMode 3
|
||||||
|
|
||||||
|
(C) 04/1995 by UncleSAM/SkyLINE
|
||||||
|
|
||||||
|
Productname: The Highland BBS Addy
|
||||||
|
Filename : THL_ADDY
|
||||||
|
Filesize : 19 KBytes
|
||||||
|
StartDate : 18.04.1995
|
||||||
|
ReleaseDate: 29.04.1995
|
||||||
|
Description: ▄▄▄▄▄▄▄▄ ▄▄ ▄▄ ▄▄
|
||||||
|
▐▓▓▓▓▓▓▓▓▌▐▓▓▌ ▐▓▓▌▐▓▓▌
|
||||||
|
▐ ■█▓▓█▀■ ▐▓▓█■▐▓▓▌▐▓▓▌
|
||||||
|
▓▓▓▓▓ ▐▓▓▌ ▐▓▓▓▓▓▓▓▌▐▓▓▌■ ▓▓▓▓▓
|
||||||
|
▐▓▓▌ ▐▓▓▌ ▐▓▓▌▐▓▓█▄▄▄
|
||||||
|
▐▓▓▌ ▐▓▓▌ ▐▓▓▌▐▓▓▓▓▓▓▌
|
||||||
|
▐▀■▌ ▐▀■▌ ▐▀■▌▐▀■ ▀▀▌
|
||||||
|
tHE Highland BBS Addy
|
||||||
|
Esspecially made for KlAUS GRUBER
|
||||||
|
|
||||||
|
|
||||||
|
···········································································
|
||||||
|
|
||||||
|
|
||||||
|
-> Distro-Sites
|
||||||
|
^^^^^^^^^^^^
|
||||||
|
|
||||||
|
╒═══════════════════════════════════════════════════════════════════════════╕
|
||||||
|
│ Request-Distro (for Requests call this Board) │
|
||||||
|
├─══════════════───┬────────────────┬─────────────────────┬─────────────────┤
|
||||||
|
│ Sirius-BBS │ +49-8233-30860 │ 4 ZYX 19K2 modems │ 2:2480/96 │
|
||||||
|
│ 2:2480/96 │ +49-8233-32167 │ 4 v34 / vFC modems │ 2:2480/196 │
|
||||||
|
│ Christian │ +49-8233-70020 │ ISDNA, ISDNB, ISDNC │ 2:2480/195 │
|
||||||
|
│ Niessner └────────────────┴─────────────────────┴─────────────────┤
|
||||||
|
│ Group: Programmer's Support - Area: SkyLINE Support │
|
||||||
|
╞═══════════════════════════════════════════════════════════════════════════╡
|
||||||
|
│ Local-Distro (from Augsburg call this Board) │
|
||||||
|
├─════════════─────┬────────────────┬───────────────────────────────────────┤
|
||||||
|
│ Shark-BOX │ +49-8231-88192 │ v32bis modem │
|
||||||
|
│ 2:2480/403.20 └────────────────┴───────────────────────────────────────┤
|
||||||
|
│ Bernhard Lindner Group: #24 SkyLine - Area: #75 SkyLINE Productions │
|
||||||
|
│ │
|
||||||
|
│ Online from Saturday 10 o'clock to Sunday 20 o'clock │
|
||||||
|
│ Use Command "2" for special SkyLINE Menu │
|
||||||
|
╞═══════════════════════════════════════════════════════════════════════════╡
|
||||||
|
│ Product-Site (not all Files from SkyLINE) │
|
||||||
|
├─════════════─────┬────────────────┬───────────────────────────────────────┤
|
||||||
|
│ Airport │ +49-821-563350 │ v32bis modem │
|
||||||
|
│ 2:2480/404 │ +49-821-563893 │ vFC modem │
|
||||||
|
│ Bernd Liedke └────────────────┴───────────────────────────────────────┤
|
||||||
|
│ Konferenz / Area: #290 Skyline Software │
|
||||||
|
╞═══════════════════════════════════════════════════════════════════════════╡
|
||||||
|
│ Product-Site (not all Files from SkyLINE) │
|
||||||
|
├─════════════─────┬────────────────┬───────────────────────────────────────┤
|
||||||
|
│ The Highland BBS │ +49-821- 98959 │ 2 vFC v34 v32T modems │
|
||||||
|
│ │ +49-821- 93095 │ vFC v34 modem or ISDN │
|
||||||
|
│ │ +49-821- 98498 │ v32b Zyx16.8/19.2 modem or ISDN │
|
||||||
|
╘══════════════════╧════════════════╧═══════════════════════════════════════╛
|
||||||
|
|
||||||
|
|
||||||
|
···········································································
|
||||||
|
|
||||||
|
|
||||||
|
-> The Order-Form
|
||||||
|
^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Cut here ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
Mailed to: Stefan Kölle Hotline at: +49-821-416484
|
||||||
|
Laugingerstr. 10
|
||||||
|
86154 Augsburg
|
||||||
|
Germany
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Name : ··················································
|
||||||
|
|
||||||
|
|
||||||
|
Company: ··················································
|
||||||
|
|
||||||
|
|
||||||
|
Street : ··················································
|
||||||
|
|
||||||
|
|
||||||
|
City : ··················································
|
||||||
|
|
||||||
|
|
||||||
|
Country: ··················································
|
||||||
|
|
||||||
|
|
||||||
|
Phone : ······················ FAX: ······················
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Check the following boxes with X if you want the product:
|
||||||
|
|
||||||
|
|
||||||
|
[ ] DosMENU(TM) V2.0 Registration Disk (1.44) 30,- DM
|
||||||
|
(Newest Info/Boot Choice util/and more)
|
||||||
|
|
||||||
|
[ ] SkyLINE-Production Disk 1 (1.44) 10,- DM
|
||||||
|
(!DM_V2_0/ARJUTIL/CD_OPEN/DISKINFO/
|
||||||
|
MODDISK1/PLAYMOD/PREVIEW1/SHELL/
|
||||||
|
SLN_DEMO/SPEAKTIM/TET_COMP)
|
||||||
|
|
||||||
|
[ ] SkyLINE-Production Disk 2 (1.44) 10,- DM
|
||||||
|
(INFOPACK/STIME_V2/SLN_SMI/COPERINT)
|
||||||
|
=========
|
||||||
|
Please count the money and write here >>>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Please enclose the money in an envelope and I send you the
|
||||||
|
disk(s) as soon as possible.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
I accept the above: ··················································
|
||||||
|
( Place your signature here )
|
||||||
|
|
||||||
|
|
||||||
|
Thanks for your Order. Uncle SAM of SkyLINE/18-Apr-95
|
||||||
|
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Cut here ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
···········································································
|
||||||
|
|
||||||
|
|
||||||
|
-> How to contact sAM/SkyLINE
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
|
||||||
|
FIDO Netmail to Stefan Koelle@2:2480/96.23
|
||||||
|
|
||||||
|
Local Echo at SKYLINE_SUPPORT.GER (Sirius BBS)
|
||||||
|
|
||||||
|
Local Message at Airport to Stefan Koelle - +49-821-563350 v32bis modem
|
||||||
|
+49-821-563893 vFastClass modem
|
||||||
|
|
||||||
|
Voicetalk at +49-821-416484 (answeringmachine)
|
||||||
|
|
||||||
|
Snailmail to Stefan Koelle - Laugingerstr. 10 - 86154 Augsburg - Germany
|
||||||
|
|
||||||
|
|
||||||
|
···········································································
|
||||||
|
|
||||||
|
|
||||||
|
-> Some information
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Augsburg first DemoBoard
|
||||||
|
------------------------
|
||||||
|
If someone wants to log into the SkyLINE BBS then you have to call me first
|
||||||
|
by voice :-(
|
||||||
|
|
||||||
|
I'm no real sysop and if you want the newest stuff from SkyLINE then
|
||||||
|
call our Support-Sites, but if you really want to call me, no problem.
|
||||||
|
Also I must say that my BBS is not very comfortably :-(
|
||||||
|
|
||||||
|
So, I must say, my BBS is only useful for demo-groups, because I have
|
||||||
|
very nice Demos/Intros, Demo-Sources, Music-Tracker, MOD-Files, MID-Files,
|
||||||
|
GFX-Utils, ANSI-Utils and ofcource our own products.
|
||||||
|
But please don't call at night, best times are weekdays from 18.00 to
|
||||||
|
21.00. Thanx.
|
||||||
|
|
||||||
|
|
||||||
|
Searching people
|
||||||
|
----------------
|
||||||
|
We are still searching for coders, graphicans or musicans...
|
||||||
|
Don't hesitate to call me. Also Cooperation-works are welcome.
|
||||||
|
|
||||||
|
|
||||||
|
Support BBS's
|
||||||
|
-------------
|
||||||
|
We are NO LONGER searching for support BBS's in the area of Augsburg,
|
||||||
|
but other city's/states/countries are welcome. If someone is interested
|
||||||
|
then please leave a NetMail to Stefan Koelle@2:2480/96.23
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Take care... *Stefan*
|
||||||
|
|
||||||
|
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
|
||||||
|
Founder and member of √SkyLINE DemoGroup Auxburg
|
||||||
|
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
|
||||||
|
Contact me: sAM/SkyLINE » fIDOnET········2:2480/96.23
|
||||||
|
gERnET·······21:100/1010.23
|
||||||
|
rENDERrING···511:3000/96.23
|
||||||
|
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
|
||||||
|
|
||||||
|
|
||||||
|
─═[ End of the iNFOFiLE ]═─
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
/// <reference path="../.astro/types.d.ts" />
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
import '../styles/global.css';
|
||||||
|
export interface Props { title: string; description?: string; accentClass?: string; }
|
||||||
|
const { title, description = 'A 90s BBS/demoscene retro hub.', accentClass = '' } = Astro.props;
|
||||||
|
---
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
<title>{title} :: tHE tEMPLE bBS</title>
|
||||||
|
<meta name="description" content={description} />
|
||||||
|
<meta property="og:title" content={title} />
|
||||||
|
<meta property="og:description" content={description} />
|
||||||
|
<meta property="og:image" content="/og-image.png" />
|
||||||
|
<link rel="icon" href="/favicon.ico" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class={`terminal-frame ${accentClass}`}>
|
||||||
|
<slot />
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
export type KeymapEntry = { key: string; href: string; label: string };
|
||||||
|
export const GLOBAL_NAV_KEYS: KeymapEntry[] = [
|
||||||
|
{ key: 'B', href: 'back', label: 'Back' },
|
||||||
|
{ key: 'Q', href: 'disconnect', label: 'Disconnect' },
|
||||||
|
{ key: 'I', href: '/bbs/legal-notice', label: 'Legal Notice' },
|
||||||
|
];
|
||||||
|
export const MENU_KEYS: KeymapEntry[] = [
|
||||||
|
{ key: 'P', href: '/bbs/pc/phobia', label: 'PHOB!A' },
|
||||||
|
{ key: 'T', href: '/bbs/pc/trancemission', label: 'Tr@nceMISSION' },
|
||||||
|
{ key: 'S', href: '/bbs/pc/skyline', label: 'SkyLINE Productions' },
|
||||||
|
{ key: 'K', href: '/bbs/pc/kosmos-design', label: 'Kosmos Design [KDS]' },
|
||||||
|
{ key: 'D', href: '/bbs/atari/tropic-dreams', label: 'Tropic DREAMs' },
|
||||||
|
{ key: 'E', href: '/bbs/amiga/esprit', label: 'ESPRIT Releases' },
|
||||||
|
{ key: 'M', href: '/bbs/amiga/mods', label: 'MOD Files' },
|
||||||
|
{ key: 'A', href: '/bbs/fido/ansi-art', label: 'BBS ANSI Art' },
|
||||||
|
{ key: 'F', href: '/bbs/fido/nodelist', label: 'Fidonets and Nodelists' },
|
||||||
|
];
|
||||||
|
export const ALL_KEYS: KeymapEntry[] = [...GLOBAL_NAV_KEYS, ...MENU_KEYS];
|
||||||
|
export function findKeyEntry(pressedKey: string): KeymapEntry | undefined {
|
||||||
|
const upper = pressedKey.toUpperCase();
|
||||||
|
return ALL_KEYS.find((entry) => entry.key === upper);
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
export async function playLine1Sequence(onComplete: () => void) {
|
||||||
|
const steps = ['/audio/dial-tone.mp3', '/audio/dtmf-beeps.mp3', '/audio/modem-handshake.mp3'];
|
||||||
|
for (const src of steps) { await playClip(src); }
|
||||||
|
onComplete();
|
||||||
|
}
|
||||||
|
function playClip(src: string): Promise<void> {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
const audio = new Audio(src);
|
||||||
|
audio.addEventListener('ended', () => resolve());
|
||||||
|
audio.addEventListener('error', () => resolve());
|
||||||
|
audio.play().catch(() => resolve());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
const STORAGE_KEY = 'hasConnected';
|
||||||
|
export function hasConnectedBefore(): boolean {
|
||||||
|
if (typeof localStorage === 'undefined') return false;
|
||||||
|
return localStorage.getItem(STORAGE_KEY) === 'true';
|
||||||
|
}
|
||||||
|
export function markConnected() { localStorage.setItem(STORAGE_KEY, 'true'); }
|
||||||
|
export function resetConnected() { localStorage.removeItem(STORAGE_KEY); }
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
---
|
||||||
|
import { getCollection } from 'astro:content';
|
||||||
|
import TerminalLayout from '../../../layouts/TerminalLayout.astro';
|
||||||
|
import TerminalShell from '../../../components/TerminalShell';
|
||||||
|
import StatusBar from '../../../components/StatusBar.astro';
|
||||||
|
import NavBar from '../../../components/NavBar.astro';
|
||||||
|
import AnsiArt from '../../../components/AnsiArt.astro';
|
||||||
|
import { BANNER_ESPRIT } from '../../../lib/ansiArt';
|
||||||
|
import LetterFooter from '../../../components/LetterFooter.astro';
|
||||||
|
const releases = await getCollection('esprit');
|
||||||
|
---
|
||||||
|
<TerminalLayout title="ESPRIT Releases" description="Amiga DemoMaker releases and utility discs">
|
||||||
|
<TerminalShell client:load>
|
||||||
|
<AnsiArt html={BANNER_ESPRIT} />
|
||||||
|
<NavBar />
|
||||||
|
<h1>ESPRIT Releases</h1>
|
||||||
|
<p>A collection of demos built on the Amiga 500.</p>
|
||||||
|
{releases.map((release) => (
|
||||||
|
<div class="release-row">
|
||||||
|
<div>
|
||||||
|
<h3>{release.data.title}</h3>
|
||||||
|
<p>{release.data.description}</p>
|
||||||
|
<p>Year: {release.data.year ?? '19xx'} Platform: {release.data.platform}</p>
|
||||||
|
</div>
|
||||||
|
<a class="diz-box esprit-thumb" href="#" data-img={release.data.screenshot} onclick="return false;">
|
||||||
|
{release.data.screenshot && <img src={release.data.screenshot} alt={release.data.title} />}
|
||||||
|
{!release.data.screenshot && release.data.file_id_diz}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
<NavBar />
|
||||||
|
<LetterFooter />
|
||||||
|
<StatusBar />
|
||||||
|
</TerminalShell>
|
||||||
|
<div id="esprit-modal" class="modal-overlay" style="display:none;">
|
||||||
|
<div class="modal-content">
|
||||||
|
<button class="modal-close" aria-label="Close">×</button>
|
||||||
|
<img id="esprit-modal-img" src="" alt="Screenshot" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script is:inline>
|
||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const modal = document.getElementById('esprit-modal');
|
||||||
|
const modalImg = document.getElementById('esprit-modal-img');
|
||||||
|
document.querySelectorAll('.esprit-thumb').forEach(thumb => {
|
||||||
|
thumb.addEventListener('click', (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
const img = thumb.getAttribute('data-img');
|
||||||
|
if (!img) return;
|
||||||
|
modalImg.src = img;
|
||||||
|
modal.style.display = 'flex';
|
||||||
|
});
|
||||||
|
});
|
||||||
|
modal.addEventListener('click', (e) => {
|
||||||
|
if (e.target === modal || e.target.classList.contains('modal-close')) {
|
||||||
|
modal.style.display = 'none';
|
||||||
|
modalImg.src = '';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
document.addEventListener('keydown', (e) => {
|
||||||
|
if (e.key === 'Escape' && modal.style.display === 'flex') {
|
||||||
|
modal.style.display = 'none';
|
||||||
|
modalImg.src = '';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</TerminalLayout>
|
||||||