TITLE=Commodore Plus/4 ROUTE=/platforms/plus4 LOCALE=hu MODIFIED=1792409344 URL=https://wiki.teletypegames.org/hu/platforms/plus4 L=1 #57 L=2 https://git.teletypegames.org/demos/plus4-demo A Commodore Plus/4 a 264-es sorozat 8 bites otthoni számítógépe: 7501/8501-es CPU a 6502 utasításkészletével, a TED chip a képhez és a hanghoz, 64 KB RAM. A Plus/4-es projektjeink 6502 assemblyben készülnek, az bACME0 fordítja őket c.prg fájllá, a tesztelés pedig a bVICE0 emulátorban (cxplus40) történik — ugyanaz az eszközlánc, mint a 1Commodore 64-nél, csak a gép más. bACME:0 https://sourceforge.net/projects/acme-crossass/ bVICE: https://vice-emu.sourceforge.io bEszközrepó0: https://git.teletypegames.org/build/plus4-build bEzzel az eszközlánccal készült bprojektek:0 2plus4-demo r────────────────────────────────────────────────────────────────────────────── 1Mi más, mint a C64-en 1═════════════════════ t┌─────────────────────────┬───────────────────────┬──────────────────────────┐ t│h t│h C64 t│h Plus/4 t│ t├─────────────────────────┼───────────────────────┼──────────────────────────┤ t│0 BASIC kezdőcím / c* =0 t│0 c$08010 t│0 c$10010 t│ t│0 origó t│0 t│0 t│ t├─────────────────────────┼───────────────────────┼──────────────────────────┤ t│0 Belépési pont a t│0 c$08100 (cSYS 20640) t│0 c$100D0 (cSYS 41090) t│ t│0 minimális SYS-stub után t│0 t│0 t│ t├─────────────────────────┼───────────────────────┼──────────────────────────┤ t│0 Képernyő-RAM t│0 c$04000 t│0 c$0C000 t│ t├─────────────────────────┼───────────────────────┼──────────────────────────┤ t│0 Szín-RAM t│0 c$D8000 (csak árnyalat) t│0 c$08000 (cfényesség << 4 \|0 t│ t│0 t│0 t│0 cárnyalat0, a 7. bit t│ t│0 t│0 t│0 villog) t│ t├─────────────────────────┼───────────────────────┼──────────────────────────┤ t│0 Videochip t│0 VIC-II (c$D0000) t│0 TED (c$FF000–c$FF3F0): c$FF150 t│ t│0 t│0 t│0 háttér, c$FF190 keret, t│ t│0 t│0 t│0 c$FF1D0/c$FF1C0 rasztersor t│ t├─────────────────────────┼───────────────────────┼──────────────────────────┤ t│0 Hang t│0 SID t│0 TED, két hang t│ t├─────────────────────────┼───────────────────────┼──────────────────────────┤ t│0 Billentyűzet t│0 CIA1 (c$DC000/c$DC010) t│0 c$FD300 oszlopválasztás + t│ t│0 t│0 t│0 c$FF080 sor-latch t│ t├─────────────────────────┼───────────────────────┼──────────────────────────┤ t│0 Emulátor t│0 cx64sc0 t│0 cxplus40 t│ t└─────────────────────────┴───────────────────────┴──────────────────────────┘ A KERNAL ugrótábla kompatibilis (c$FFD20 CHROUT, c$FFE40 GETIN), így egy program kilépési útja mindkét gépen ugyanúgy néz ki. Az ACME-nek nem kell külön mód: a c!cpu 65020 lefedi a 7501/8501-et. Egy ACME-szokás, amit mindkét gépen érdemes tudni: a c!scr0 a ikisbetűs0 ASCII-t képezi az alap karakterkészlet nagybetűs screen code-jaira. c!scr "teletype cgames"0-t írj, hogy cTELETYPE GAMES0 legyen a képernyőn; a nagybetűs forrásszövegből grafikus jelek lesznek. r────────────────────────────────────────────────────────────────────────────── 1Makefile 1════════ Minden c.asm0 fájl a projekt gyökerében van. Az egyetlen belépési pont a cmain.asm0, amely c!src0-cel behúzza a többit. p project-root/ p ├── main.asm # belépési pont, ez húzza be a többit p ├── metadata.json # katalógus-metaadatok + verzió p ├── Makefile p └── README.md 2Változók 2──────── t┌──────────┬────────────────────────────────────────────────┬────────────────┐ t│h Változó t│h Leírás t│h Alapérték t│ t├──────────┼────────────────────────────────────────────────┼────────────────┤ t│0 cPROJECT0 t│0 Az artifactokban és a katalógusban használt t│0 — t│ t│0 t│0 név t│0 t│ t├──────────┼────────────────────────────────────────────────┼────────────────┤ t│0 cASM0 t│0 Az assembler binárisa t│0 cacme0 t│ t├──────────┼────────────────────────────────────────────────┼────────────────┤ t│0 cEMU0 t│0 Az emulátor binárisa t│0 cxplus40 t│ t├──────────┼────────────────────────────────────────────────┼────────────────┤ t│0 cSRC0 t│0 Belépési pont t│0 cmain.asm0 t│ t├──────────┼────────────────────────────────────────────────┼────────────────┤ t│0 cTARGET0 t│0 Kimeneti program t│0 c$(PROJECT).prg0 t│ t├──────────┼────────────────────────────────────────────────┼────────────────┤ t│0 cMETADATA0 t│0 Metaadatfájl t│0 cmetadata.json0 t│ t└──────────┴────────────────────────────────────────────────┴────────────────┘ 2metadata.json 2───────────── p { p "name": "example", p "title": "Example Plus/4 Game", p "author": "Teletype Games", p "desc": "Short description of the game.", p "site": "https://git.teletypegames.org/games/example", p "license": "MIT", p "version": "1.0.0" p } A cname0 értékének begyeznie kell0 a cPROJECT0 értékével. A cversion0 vezérli a pipeline verziólépését. A többi a játékkatalógusba kerül. 2Célok 2───── p make deps # brew install acme vice (csak macOS) p make build # a main.asm fordítása -> .prg, csak ha változott » p egy .asm p make run # build, majd indítás a VICE-ban (xplus4) p make clear # a .prg és a CI-artifactok törlése p make rebuild # clear + build p make rebuildrun # clear + build + run 2Headless próbafutás 2─────────────────── A VICE néhány emulált másodpercig futtatja a buildet, és képernyőképet hagy maga után — ez elég ahhoz, hogy lássuk, feljön-e a címképernyő: p xplus4 +sound -warp -limitcycles 30000000 -exitscreenshot shot.png -autostar» p tprgmode 1 .prg 2VS Code 2─────── Másold az cexample-tasks.json0 fájlt c.vscode/tasks.json0 néven. Ugyanezeket a célokat csomagolja be, a cbuild0 az alapértelmezett buildfeladat (cCmd+Shift+B0). 2Előálló artifactok 2────────────────── t┌──────────────────────────────────┬─────────────────────────────────┐ t│h Fájl t│h Leírás t│ t├──────────────────────────────────┼─────────────────────────────────┤ t│0 c.prg0 t│0 A lefordított program t│ t│0 c-.prg0 t│0 Verziózott kiadási példány (CI) t│ t│0 c-.metadata.json0 t│0 Verziózott metaadat (CI) t│ t└──────────────────────────────────┴─────────────────────────────────┘ 2Követelmények 2───────────── Csak helyben: cmake0, cacme0, illetve a crun0-hoz a VICE cxplus40 binárisa. Példa Makefile: https://git.teletypegames.org/build/plus4-build/src/branch/master/example- makefile.make r────────────────────────────────────────────────────────────────────────────── 1Pipeline 1════════ A pipeline nincs benne a játékrepóban. A Woodpecker az update szervertől kéri el, a WarpEngine pedig a teljes konfigurációt a c/build/config0 végponton szolgálja ki (sablon: clib/warp_engine/ci/woodpecker/platforms/plus4/pipeline.yaml.erb0). A WarpEngine a 0.10.1-től ismeri a platformot cplus40 néven. A repóhoz három dolog kell: p # .woodpecker.yaml p platform: plus4 p name: mygame # csak akkor, ha a szoftvernév eltér a repó nevétől • cmetadata.json • az capplication_token0 Woodpecker-secret: egy WarpEngine ApplicationToken az cupdate0 + cupload0 jogosultságokkal A builder és a player image az update szerver CI-adapter konfigurációjából jön (cplatforms:0 a WarpEngine-initializerben). A kiszolgált pipeline megtekintése: p curl "https://teletypegames.org/build/config?platform=plus4" 2Lépések 2─────── t┌─────────────┬──────────────────────────────────────────────────────────────┐ t│h Lépés t│h Mit csinál t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 1. version t│0 kiolvassa a verziót a cmetadata.json0-ból, fejlesztői ágakon t│ t│0 t│0 hozzáfűzi az ág nevét, és megírja a c.version0 fájlt t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 2. build t│0 ACME-vel fordít a cplus4-builder0 image-ben, t│ t│0 t│0 c-.prg0 és c-.metadata.json0 t│ t│0 t│0 fájlokat előállítva t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 3. package t│0 ccommodore-pack plus40 a ccommodore-player0 image-ben: t│ t│0 t│0 c-.html.zip0 (EmulatorJS-oldal a saját t│ t│0 t│0 mappából kiszolgált cvice_xplus40 core-ral), valamint t│ t│0 t│0 c-linux-x64.zip0, c-win-x64.zip0 és c-mac-universal.zip0 (yapeSDL t│ t│0 t│0 egy indítóval, amely beállítja a géptípust és elindítja a t│ t│0 t│0 c.prg0-t) t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 4. artifact t│0 cPOST /build/upload0 mind a hat fájlra, cX-Update-Secret0 t│ t│0 t│0 fejléccel t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 5. publish t│0 cPOST /build/publish?platform=plus40 t│ t└─────────────┴──────────────────────────────────────────────────────────────┘ 2Eredmény 2──────── A szerver beolvassa a feltöltött metaadatot, létrehozza vagy frissíti a katalógusbejegyzést, és öt assetet regisztrál a kiadáson: a c.prg0-t letölthető kazettaként, az EmulatorJS-oldalt böngészőben futtatható buildként (a katalógus „Játék böngészőben” gombja, a c/file/-/0 alól kiszolgálva), a három yapeSDL-csomagot pedig linuxos, windowsos és macOS-es letöltésként. A WarpEngine 0.11-től a két Commodore-platform ugyanazokat az assetfajtákat várja; a korábbi kiadásokon újraépítésig csak a kazetta van. 2Demóprojekt 2─────────── 2plus4-demo — a Teletype Games címkártya: arany színfutás a címen a TED rasztersugarához igazítva, villogó felirat, és tiszta visszatérés a BASIC-be bármelyik billentyűre. A C64 Demo Plus/4-es testvére.