Nebudu se zde zabývat základy programování. Spíše zde najdete tipy jaký programovací nástroj zvolit, jak přizpůsobit vaše programy běhu na portfoliu, informace o rozšířených funkcích BIOSu a DIP DOSu a příklady zdrojových kódů.
- Instrukční sada. Mějte na paměti, že lze použít pouze instrukce 8086 a není k dispozici matematický koprocesor.
- Velikost kódu. Při dnešních cenách za Gigabajt diskového prostoru asi málokoho napadne šetřit, ale uživatel holého portfolia má kolem 32 kB ramdisku.
- Velikost alokované paměti za běhu. Podle velikosti ramdisku na úkor RAM počítejte tak s 32-64 kB.
- Jistá hardwarová nekompatabilita. Takže se doporučuje používat spíše služeb DOSu/BIOSu, než přímo sahat na hardware. To platí zejména při práci s obrazovkou. Program, který používá speciální funkce BIOSu portfolia by si měl ze slušnosti napřed ověřit, zda-li opravdu běží na portfoliu a ne na PC.
- Malý výpočetní výkon. Asi nemusím říkat, že portfolio není žádné PIII, ale na rozhýbání obrazu stačí. Dokonce je o pár procent rychlejší, než originální PC XT, běžící na 4,77 MHz. Zde byl zvolen o něco vyšší kmitočet kvůli požadavkům tónové volby.
Pokud chcete programovat přímo na portfoliu, pak máte k dispozici pouze BASIC nebo Assembler, který se tak tak vejde na ramdisk. Jinak je to celkem jedno. Nejlepší volbou je asi assembler (TASM, MASM, NASM...), protože v něm však moc neumím, píšu raději v C. Lze použít nějaké starší verze Borland C (reeL HaRdk0Re jsem spáchal v Turbo C 1.0), nebo SPHINX C--, což je C, ne zrovna moc ANSI, avšak specializované na tvorbu malých programů *.com (helloworld.com na 70 B je docela úspěch, téměř srovnatelný s ASM). Pro pascalisty dokonce existuje sada unit pro portfolio, např POCRT. Pokud chcete použít Turbo C 1.0, upozorňuji, že dost často padá. Dále je nanejvýš vhodné se vyvarovat floating-point aritmetiky, neboť portfolio koprocesor nemá a přilinkovaná emulační knihovna zabere asi 30kB! Stejně bych se spíše přimlouval za to C--. Ale hlavně někdo něco v něčem napište!
Nakonec, pokud je produktem vašeho snažení *.EXE soubor, můžete se jeho velikost pokusit zmenšit pomocí EXE packerů LZEXE nebo PKLite. Osobně mám lepší zkušenost s LZEXE. Chcete-li přeci jen zkusit zkomprimovat i *.COM, tak tady je konvertor z *.COM do *.EXE. Zde jsou však někdy výsledky trochu diskutabilní.
Přeze všechna omezení nabízí portfolio i něco navíc. Jsou to rozšířené funkce BIOSu Int60h a rozšířené funkce DIP-DOSu Int61h. Ty umožňují např. jednoduché kreslení rámečkových menu, ovládání tónového generátoru a spoustu dalších užitečných věcí. Jediný háček je v tom, že pak takový program nepoběží na normálním PC (obvykle se zakousne). Proto je dobré dát na začátek programu detekci, která ověří, běží-li program na portfoliu. Zde je příklad v ASM nebo v C:void detectpofo(void) /* detekuje portfolio a v pripade PC ukonci program */ { unsigned int far *rombios=MK_FP(0xFFF0,0xEE); if (rombios[0]!=0x4350) //test adresy 0FFF0:00EE na string "PC" { printf("ERROR: ATARI portfolio not detected!\n"); exit(0); } }
Zde je popis funkcí INT60h (Zdeněk; 25.12.2000)
Zde je popis funkcí INT60 a INT61 v ZIPu [11kB] (RayeR; 25.12.2000)
Programování zvuku na portfoliu (RayeR; 24.4.2001)
Programování grafiky na portfoliu (RayeR; 14.5.2001)
Programování paralelního portu (RayeR; 20.3.2007)