OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 19.04.2024, 07:15

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 5 ] 
Autor Zpráva
 Předmět příspěvku: unixové C a ZX Spectrum
PříspěvekNapsal: 19.11.2014, 18:54 
Offline
Pan Generální
Uživatelský avatar

Registrován: 18.05.2013, 14:56
Příspěvky: 2341
Has thanked: 303 times
Been thanked: 640 times
Máte někdo zkušenost s kompilací kódu pro ZXS v něčem jako je SDCC, nebo Clang? Trochu se rozkoukávám a přemýšlím o tom, že by to spoustu věcí mohlo usnadnit.

SDCC určitě generovat kód pro Z80 umí (http://sdcc.sourceforge.net/). Mám dokonce dojem, že jsou v něm kompilované některé z nových her. Před časem jsem viděl zdrojáky promíchané C s assemblerem, ale už nevím u čeho. Clang ofic. podporu Z80 nemá, ale nějaký pokus zřejmě existuje https://github.com/earl1k/llvm-z80, GCC zřejmě taky http://sourceforge.net/projects/z80gcc/ (používám ho pro AVR a není to úplně ideální, ale i tak se do 8kB dá nacpat dost, aby to dělalo něco smysluplného).

Otázkou je, co vše je potřeba, abych získal spustitelnou binárku (z níž následně udělám TAPku). Jestli si musím napsat základní knihovny (stdio), abych mohl použít alespoň printf, nebo jestli už něco takového existuje a kde?

_________________
https://cygnus.speccy.cz ZX Spectrum 128k, Betadisk, DivIDE, ESXDOS


Nahoru
 Profil  
 
 Předmět příspěvku: Re: unixové C a ZX Spectrum
PříspěvekNapsal: 20.11.2014, 00:52 
Offline
Radil

Registrován: 27.09.2014, 23:56
Příspěvky: 446
Has thanked: 436 times
Been thanked: 230 times
Narazil jsem na projekt SpeccyBoot, který je právě v SDCC
http://speccyboot.sourceforge.net/build.html#software

Zdá se, že si autor něco jako stdio vytváří sám:
https://svn.code.sf.net/p/speccyboot/code/tags/speccyboot-1.5/firmware/include/ui.h
https://svn.code.sf.net/p/speccyboot/code/tags/speccyboot-1.5/firmware/src/ui.c

_________________
ZX Spectrum DELTA, D80, Melodik, XY4150, Aritma 0512
PGP: A6EA 1F93 EF6B D8D1 35AD B6D7 1E79 73E5 1B28 17F9


Nahoru
 Profil  
 
 Předmět příspěvku: Re: unixové C a ZX Spectrum
PříspěvekNapsal: 22.12.2014, 11:46 
Offline
Radil

Registrován: 27.09.2014, 23:56
Příspěvky: 446
Has thanked: 436 times
Been thanked: 230 times
Narazil jsem teď na projekt Z88DK a musím říci že mě spadla čelist.

http://www.z88dk.org/wiki/doku.php

Široká podlora knihoven od stdio, conio, time, Turbo C BGI emulation functions a další

Jednoduché použití

Kód:
zcc +zx -lndos -create-app -o hello hello.c

vyrobí rovnou hello.tap soubor.

Tady jsou nějaké příklady hotových projektů:

http://www.z88dk.org/wiki/doku.php?id=examples:snippets

_________________
ZX Spectrum DELTA, D80, Melodik, XY4150, Aritma 0512
PGP: A6EA 1F93 EF6B D8D1 35AD B6D7 1E79 73E5 1B28 17F9


Nahoru
 Profil  
 
 Předmět příspěvku: Re: unixové C a ZX Spectrum
PříspěvekNapsal: 22.12.2014, 19:57 
Offline
Pan Generální
Uživatelský avatar

Registrován: 18.05.2013, 14:56
Příspěvky: 2341
Has thanked: 303 times
Been thanked: 640 times
Koukám na ukázky a vypadá to skutečně velmi schopně. Jak najdu čas, tak vyzkouším.

Mimochodem v Z88DK je kompilovaná hra Uwol ... o které jsem si kdovíproč myslel, že je pro SDCC. http://www.worldofspectrum.org/infoseekid.cgi?id=0024081 (a spousta dalších od stejného autora)

_________________
https://cygnus.speccy.cz ZX Spectrum 128k, Betadisk, DivIDE, ESXDOS


Nahoru
 Profil  
 
 Předmět příspěvku: Re: unixové C a ZX Spectrum
PříspěvekNapsal: 22.12.2014, 23:32 
Offline
Radil

Registrován: 27.09.2014, 23:56
Příspěvky: 446
Has thanked: 436 times
Been thanked: 230 times
Jsem nadšený - funguje to bezvadně.

Na svém debianu jsem pouze nainstaloval balíček:

Kód:
sudo apt-get install z88dk


Zkopíroval jsem příklad do souboru coswave.c

Kód:
#include <graphics.h>
#include <stdio.h>
#include <math.h>

main()
{
float x,y;
char z,buf;
   clg();

   for (x=-3.0; x<3.0; x=x+0.06)
   {
      buf=100;
      for (y=-3.0; y<3.0; y=y+0.2)
      {
         z = (char) 70.0 - (10.0 * (y + 3.0) + ( 10.0 * cos (x*x + y*y) ));
         if (buf>z)
         {
            buf = z;
            plot ( (char) (16.0 * (x+3.0)), (char) z);
         }
      }
   }
}


Zkompiloval:

Kód:
zcc +zx -lndos -lm -ocoswave -create-app coswave.c


Výsledkem je coswave.tap

Pracuje to tedy s plovoucí čárkou (pouze float, double nepodporuje)
A největší bomba je, že se to dá přeložit bez úprav třeba pro Amstrad a další Z80 based kompjůtery :-)


Přílohy:
coswave.png
coswave.png [ 14.12 KiB | Zobrazeno 3932 krát ]

_________________
ZX Spectrum DELTA, D80, Melodik, XY4150, Aritma 0512
PGP: A6EA 1F93 EF6B D8D1 35AD B6D7 1E79 73E5 1B28 17F9
Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 5 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 3 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz