Timo Kinnunen
Särkiniementie 16 A 41
70700 Kuopio
Finland

Klikkaa tästä palataksesi takaisin Timon Serverimaailma etusivulle - Click here to return back to the front page of Timos' Serverimaailma homesite

Klikkaa tästä palataksesi takaisin sivulle Tietoo - Click this link to Return back to the page of Information

Klikkaa tästä palataksesi takaisin Timon suomenkielisten DOS -ja OS/2 -oppaiden valintasivulle - Click this link to Return back to The Page of Timo's Finnish DOS and OS/2 manuals

Tinyprog -ohjelma

Johdanto

Kirjoitin tämän oppaan siksi, että uskon siitä olevan jopa hyötyä niille, jotka tutkiskelevat DOS -systeemin salaisuuksia. Tässä on tekemistäni DOS -oppaista se kaikkein paran kuvaus ohjelmien rakenteesta, ja Tinyprog -sovelluksen tapaisen ohjelman tavasta tiivistää ohjelmatiedostoja. DOS on mielenkiintoinen järjestelmä siksi, että jokainen konen käynnistys tällä järjestelmällä on tavallaan oma, uniikki tapauksensa, ja istunnon vaikutukset eivät sitä haluamattasi ulotu seuraaviin istuntoihin, ja koska partitiotaulu luetaan vain kerran. Sekin on mielenkiintoista, että järjestelmän käynnistämiseen perusmuodossa ei tarvita kuin kolme järjestelmätiedostoa, ja että tämä järjestelmä käynnistyy aina siten myös levykkeeltä. Oman kokemukseni mukaan Tinyprog -ohjelma on kokeilemistani vastaavanlaisista sovelluksista se kaikkein paras, ja myös monipuolisin. Se, että sen kohteena ovat vain DOS -ohjelmatiedostot, ei haittaa mitenkään. Eipähän pääse sattumaan mitään sekaannuksia, tai virheellisiä käsittelyjä. Onhan siinä mukana kaikenlaista, kuten mm. salasanaa, ja muuta hauskaa. Tinyprog -ohjelman Shareware -versio sisältää lisäksi hauskana yksityiskohtana tekijän laittaman englanninkielisen viestin, jossa hän turisee itse tietokoneen pikkukaiuttimesta, jos sellainen on kytkettynä koneessasi päälle.

Miten Tinyprog -ohjelma toimii, ja mitä se vaatii järjestelmältä?

Millainen ohjelma Tinyprog on?

Tinyprog -ohjelma tiivistää EXE ja COM -tiedostoja alkuperäistä pienempään tilaan, ja toimii periaateessa saman tapaan kuten PKwaren PKzip tai WinZip - mutta niistä poiketen Tinyprog mahdollistaa tiivistämiensä ohjelmien ajamisen normaaliin tapaan - eli itse ohjelman rakenne ei muutu, vaikka sen tapa latautua keskusmuistiin poikkeaa aiemmasta, ja siinä on joitakin muitakin uusia prosesseja. Mikäli esimerkiksi Zip2exe -sovelluksella ( joka kuuluu PKzip 2.04g -pakettiin) luodaan tavallisesta ZIP -tiedostosta itsepurkautuva EXE -tiedosto, on arkistoon lisätty vain pieni ohjelmamoduulin, jonka tehtävänä vain aloittaa arkiston normaali purku ilman PKunzip -sovellusta. Zip2exe ei siis sovellu EXE -ohjelmatiedostojen tiivistämiseen.

Joitakin erikoisominaisuuksia

Tinyprog -sovelluksella voidaan luoda ohjelmatiedostot niin, että sellaisten ohjelmatiedostojen käynnistyminen estyy joita on manipuloitu, tai jotka ovat vaurioituneita, ja sillä on mahdollista käsitellä luotavia ohjelmia haluttaessa niin, etteivät muut voi niitä käynnistää ilman salasanaa. Tinyprog toimii periaateessa samaan tapaan kuin sovellukset PKLite, LZexe, ja muut vastaavat. Tinyprog -sovelluksella EXE -tiedostojen käsittely on yhtä helppoa kuin COM -tiedostojen, ja sen lisäksi ei tarvita erillistä sovellusta (kuten Comtoexe) joka muuttaisi tiedoston lajia.

Laite- ja järjestelmävaatimukset

Työkoneeksi käy tavallinen, vanhempikin PC, ja sen käyttöjärjestelmäksi jopa DOS 2.x - mutta aina parempi on sitä tuoreempi järjestelmäversio. Tinyprog -ohjelman keskusmuistin tarve on 256 -kilotavua, ja lisäksi 10 -kilotavua jokaista 2500 "Relocation" -taulun nimikettä kohti, joita on käsiteltävässä EXE -tiedostoissa. Käsitellyn ohjelman keskusmuistivaatimus voi joissakin tapauksissa olla hieman korkeampi kuin se alunperin on ollut - mutta tästä myöhemin enemmän.

Tinyprog -ohjelman toimintatapa

Tinyprog lisää jokaiseen luomaansa tulostiedostoon uuden rakenteen - eli esimerkiksi koodin, joka purkaa ohjelman alkuperäiseen kokoonsa keskusmuistiin aina kun ohjelma käynnistetään, ja suorittaa eräitä muitakin toimenpiteitä. Aina kun luotua ohjelmaa ajetaan, tarkistaa mainittu Tinyprog -koodi myös mahdollisen salasanan, ja käsittelee sen, ja suorittaa salakirjoituksen tulkinnan, ja senjälkeen tekee tiivistetylle ohjelmatiedostolle Cyclical Redundancy Check - tarkistuksen. Sitten ohjelma laajennetaan alkuperäiseen kokoonsa keskusmuistiin, ja prosessi siirtyy ohjelman todelliseen alkamiskohtaan, ja ohjelma käynistyy normaalisti. Tinyprog voi myös lisätä luotavan ohjelmatiedoston alkuun tiivistämätöntä dataa, ja tavallista tekstiä valintasi ja taitojesi mukaan. Mikäli tiedoston ja salasanan tarkistuksessa, tai sen keskumuistiin laajenuksessa esiintyy virhe, pysähtyy ohjelman käsittely, ja ohjelma antaa virheilmoituksen, ja "255" paluukoodin. Virheviestit lähetetään DOS -järjestelmän STDERR -tiedostokäsittelyyn. Virheviesti voidaan muokata mieleiseksi "/Mb" -optiota käyttäen (josta tietoja myöhemmin enemmän), ja mikäli viestin halutaan ilmaisevan kaikki muutokset, joita ohjelmakoodiin on saatettu tehdä, tai ilmaista kaiki mahdollinen koodin virheellisys, tai tiedostovirheet, voisi ilmoitu olla muotoa:

"ohjelman koodi on muuttunut"

Huomaa, että Tinyprog -sovelluksella et voi muuttaa varsinaisesti käsiteltävän ohjelman koodia, jota tarkoitusta varten tarvitaan muita välineitä, kuten helpoimmassa tapauksessa levyeditoriohjelmaa, jolla ohjelman koodia voi muuttaa menestyksellisesti, jos hallitsee muuten ohhelman rakenteen, ja jos muutos ei lisää tiedoston kokoa. Tinyprog lisää luotavan ohjelmaan tiettyjä proseseja, ja haluttuja tietoja ohjelmatiedoston alkuun. Tässä mielessä kyse ei ole sitä käytettäessä varsinaisesti "oikeasta ohjelmoinnista". Koska voit muokata luotavaa ohjelmaa hyvin monin tavoin, on oudon mahdotonta tietää, että et ole jotakin sovellusta oikeastaan alusta lähtien itse luonut.

Tinyprog -ohjelma ja DOS

Aina kun ajat normaalia DOS -ohjelmaa, tarkistaa DOS -käyttöjärjestelmä, että sen ajoon riittää keskusmuistia. COM -ohjelmien täytyy tehdä tämä tarkistus itse, ja mikäli Tinyprog -ohjelmalla luodaan COM -tulostiedosto, pitäisi siihen liittää ylimääräinen koodi tällaista tarkistusta varten. Tällainen koodi vie kuitenkin paljon enemmän tilaa kuin se "header" -data, jollaisen Tinyprog lisää luomaansa ohjelmaan. Se kodi, jonka Tinyprog lisää ohjelmaan, vaatii arviolta 1.8 kilotavua yli ohjelman kuvan (load image) toimiakseen. Jos kyseessä on COM -tiedosto, on tämä "kuva" sama kuin tiedoston fyysinen pituus. Normaali EXE -tiedosto taas sisältää tiedot tiedoston koosta "header" -osassaan, ja tämä tarkoittaa käytännössä sitä, että tiedoston koon ei välttämättä tarvitse olla sama kuin ohjelmamodulin fyysinen koko edellyttäisi, ja se merkitsee myös sitä, että ohjelmaa ei ole täysin välttämätöntä ladata kerrallaan muistiin. Myös COM -tarkeinteinen tiedosto voi toimia viimeksimainitulla tavalla, kuten komentotulkki COMMAND.COM, josta tietokonetta käynistettäessä ladataan muistiin aluksi vain osa - ja siten tiedosto ei olekaan aito COM -tiedosto. Tavallisesti kumpikin näistä ohjelmatyypeistä tarvitsee toimiakseen enemmän muistia kuin mihin tiedostojen kuva levyllä viittaisi. Mainittu 1.8 -kilotavun määrä on hyvä raja-arvo tässä suhteessa - ja siksi Tinyprog -sovelluksella luotu ohjelma ei tavallaan tarvitse lainkaan ylimääräistä muistia. Tähän on olemassa kuitenkin poikkeuksia, koska tietyt EXE -tiedostot eivät sisällä mitään spesifioitua "stack" -alustusta, ja siksi niiden ajo on vaarallista tilanteessa, jossa käytettävän muistin määrä on vähemmän kuin 64 -kilotavua. Tälliasetkin tiedostot Tinyprog käsittelee niin, että ne ovat tässä suhteessa turvallisia, koska sen jälkeen DOS ei lataa niitä lainkaan, mikäli muistia on vähemmän kuin mainittu 64 -kilotavua. Mutta tässä ei ole vielä kaikki, sillä jotkut EXE -sovellukset pyytävät DOS -käyttöjärjestelmältä vain tietyn määrän keskusmuistia. Kun näihin sovelluksiin on lisätty Tinyprog -koodi, saattaa DOS antaa niiden käyttöön enemmän muistia kuin ne alunperin ovat varanneet.

Tinyprog ja tekstitiedostojen käsittely

Jos testaat Tinyprog -ohjelmaa, huomaat, että se hyväksyy minkä tahansa tiedoston käsiteltäväkseen tyypillisten DOS -tiedostojen lisäksi. Niinpä voit muuntaa myös laajan tekstitiedoston EXE -tiedostoksi, ka kun tiedostolla on sen alussa tietty koodi, se voidaan ajaa täysin normaalin ohjelman tapaan. Vaikka Tinyprog osaakin muuntaa tällaisia ei-EXE -tiedostoja EXE -tiedostoiksi, saattaa niiden "stack" sijaita hyvinkin tiedoston keskellä, jos niiden koko on yli 64 -kilotavua, ja tästä systä tällä alueella olevat bitit eivät ole selkeästi luettavissa, vaikka "stack" sijaitsikikin aivan ohjelman alussa. Jos tekstitiedoston esikäsittelyssä käytetään BigText -sovelluksen tapaista ohjelmaa, voidaan Tinyprog -sovellusta käyttää kaikin mokomin luodun EXE -tiedoston koon pienentämiseen.

Käyttäjän data-alue

Jotta tämän alueen sijainti ja merkitys tulisi selväksi, kanattaa siitä mainita pari seikkaa. Luotavan EXE -tiedoston "header" muodostuu tiedoton alun 32:sta ensimmäisestä bitistä, ja siitä DOS saa tiedot, kuinka sen tulee ladata ja ajaa ohjelmaa. Sitä seuraavat 3 bittiä sisältää hyppykäskyn ohittaa käyttäjän data-alue, ja ensimmäinen bitti näistä kolmesta koostuu "JMP" -koodista, ja kaksi seuraavaa koostuu sanasta (lowbyte-first word), jonka pituus on käyttäjän data-alue +1. Seuraavat 0-60 -bittiä muodostaa käyttäjän data-alueen. Käyttäjän data-alue alkaa 35:nnestä bitistä EXE -ohjelmakodissa, ja sen pituus on +1. Käyttäjän data-aluetta seuraa luodussa ohjelmatiedostossa Ctrl-Z -merkki, ja Tinyprog -alustuskoodi. Tästä syystä EXE -tiedostosi käyttäjän data-alueelle voidaan mukavasti kirjoittaa DOS -järjestelmän TYPE -komennolla, koska Ctlr-Z on DOS -järjestelmässä tekstitiedoston lopetusmerkki. Tällä hetkellä käyttäjän patch-alue ei ole saatavissa RAM -muistissa kun ohjelmasi alkaa kontrolloida koneesi Central Processing Unit -yksikköä, van se täytyy lukea ajon aikana levyllä olevasta ohjelmatiedostosta. Niillä, joiden koneessa on vanha DOS 2.x, tämä saattaa olla mahdotonta, ja siksi sinun täytyy opastaa ohjelmiesi käyttäjiä ajamaan ohjelmiasi toisella tavalla, ja eräs keino on järjestää asiat niin, että muistista voidaan löytää tarvittaessa alkuperäinen ohjelmarivi, jolla sovellus on käynnistetty - eli sellainen ladataan esimerkiksi koneen käynnistyksen yhteydessä keskusmuistiin.

Miten Tinyprog tunnistaa käsiteltävät ohjelmatiedostot?

Tinyprog tunnistaa EXE -tiedostot tarkistamalla, onko niissä allaolevat arvot seuravissa kohdin ohjelmatiedostoa:

niiden 28:s bitti on 't'
niiden 29:s bitti on 'z'
niiden 30:s bitti on hex C0

Tinyprog muuttaa prosessin aikana mainitun 30:n bitin arvoksi ' 0xC3'. Tulostiedostoissa 31:s bitti on arvoltaan nolla, ja 32:s on taas hex E9, joka on samalla 8086 -hyppykäsky.

Yksinkertaisia tinyprog ohjelmakomentoja

Kun rekisteröimätön Tinyprog käsitelee ohjelmatiedostoa, se pyytää sinua syöttämään käsittelyn päätyttyä tietyn satunnaislukusarjan, joka on kirjoitettava samalla tavoin kuin mitä sovellus ehdottaa. Samalla Tinyprog esittää pyynnön rekisteröidä tuote. Typillisiä, tai tavanomaisia ohjelmakomentoja voisivat olla seuraavat:

TINYPROG original.exe smaller.exe

tai

TINYPROG original.com smaller.exe

Käsiteltävän ohjelman fyysinen koko pienenee 10%-50%. Ajetaessa tulostiedostoa, se voi eräissä tapauksissa latautua hieman hitaammin, mutta aistivaraisesti tätäkään eroa ei voi huomata.

Jos annetaan esimerkisi komento:

TINYPROG original.exe

Luodaan samanniminen tulostiedosto, ja alkuperäinen nimetään tiedostonimelle "original.BXE", ja siten operaatiossa ei menetetä alkuperäistä ohjelmatiedostoa - mikä on hyvä, jos tiivistetty sovellus ei toimisi.

Tiedostoja, joita Tinyprog ei käsittele ja joitakin tavanomaisesta poikkeavasti käyttäytyviä sovelluksia

Tinyprog ei tiivistä seuraavia tiedostoja:

COMMAND.COM
IBMBIO.COM
IBMDOS.COM

koska nämä tiedostot eivät ole aitoja COM -tiedostoja, ja siksi niitä ei käsitellä. Komentotulkkia COMMAND.COM ei voida tiivistää johtuen sen rakenteesta, ja tavasta latautua kerroksittain keskusmuistiin, ja koska osa tiedostosta ladataan vain tarvittaessa koneen käynistyksen jälkeen. Komentotulkin alustusosa [Initialization Part], joka ottaa tietokoneen käynnistyksen yhteydessä kontrollin, sisältää AUTOEXEC.BAT tiedoston pohjalta tapahtuvan alustuksen prosessoinnin. Alustusosa määrittää myöskin segmenttiosoitteet, joista ohjelmat voidaan ladata. Tämä osa komentotulkkia jää syrjään tehtävänsä suoritettuaan. Komentotulkin residenttiosa pysyy muistissa, ja sisältää rutiinit, joilla prosessoidaan 23H keskeytyksiä [Control-C EXIT -osoitteet] ja fataalisen virheen kohdatessa tapahtuvaa 24H keskeytystä, kuten myös rutiinit, joilla ladataan komentotulkin transienttiosa, mikäli tarpeen. Transienttiosa komentotulkkia ladataan mahdollisimman ylös keskusmuistiin, ja se sisältää kaikki internaaliset komennot ja BATCH-tiedostojen prosessoinnin. Transienttiosa tuottaa myös järjestelmän tasolla kohdistimen muodon, lukee komennot näppäimistöltä [tai BATCH-tiedostosta], ja aiheuttaa sen, että ne toteutetaan. Tietostot IBMBIO.CO ja IBMDOS.COM tas ovat PC DOS -järjestelmätiedostoja, ja nekään eivät ole oikeita COM -tiedostoja. Tinyprog ei tiivistä myöskään BIN - tai SYS -tarkenteisia laiteohjaimia - tai niitä ei ainakaan saisi sillä käsitellä, ja Tinyprog tarkistaa aina ennen tiivistystä, onko kyseessä jokin DOS -laiteohjain. Jotkut ohjelmasovelluksista toimivat niin, että kun niiden asetuksia määritellään, ne kirjoittavat muutokset suoraan ohjelmatiedostoon, ja koska ne eivät kykene kirjoittamaan muutoksia sellaiseen ohjelmatiedostoon, joka on tiivistetty Tinyprog -sovellusta käyttäen, pitäisi tällaisista sovelluksista olla aina käytettävissä se alkuperäinen versio, jotta ohjelman asetuksia voitaisiin määrittää. Konfiguroituja sovelluksia voidaan tiivistää Tinyprog -ohjelmalla senjälkeen, kun niiden paikalliset asetukset on määritelty. Tinyprog tunnistaa ohjelmat, joissa on "overlay" -kerroksia, jolainen on mm. Borlandin C/C++ -kääntäjän luoman "debug informaatio" (X-serendipity code (.XA100)). Kyse on siitä, että ohjelman todellisen fyysisen koon, ja sen tarvitseman muistin välillä on tietty ristiriita tällaisissa tapauksissa. Yleisesti tällainen "overlay" -kerros on se osa ohjelmakoodista, jota luetaan (tarvittaessa) vasta ohjelman käynnistymisen jälkeen, ja sellaisen tiedon tiivistäminen saattaa aiheuttaa sen, ettei luotu sovellus käynnisty, tai toimi oikein. Tinyprog ei käsittele myöskään OS/2 - tai Windows -sovelluksia, koska ne eivät ole normaaleja DOS -järjestelmän EXE -tiedostoja. Useissa tapauksissa esimerkisi tyypillinen Windows -sovellus sisältää pienen "stub" -osion, joka antaa tietyn ilmoituksen, mikäli sovellusta yritetään käynnistää väärässä käyttöjärjestelmässä, kuten aidossa DOS -tilassa, ja yleisesti niiden toiminta saattaa surestikin perustua ajonaikaisille kirjastoille (DLL), ja muille tukitiedostoille, joista ne lukevat tiettyjä koodinpätkiä ohjelmien ajon aikana, ja eräissä tapauksissa niihin myös jotakin tallentavat - ja joihin sovellusten visuaalinen vuorovaikutus käyttäjiin saattaa perustua. Tinyprog on siis tyypillisesti DOS -sovellus, ja sillä voidaan käsitellä lähes kaikkia DOS -pohjaisia ohjelmia.

Tinyprog -komentorivioptiot

/A

Kun käytät tätä optiota Tinyprog tiivistää ohjelmatiedoston, vaikka näyttäisi siltä, että se on jo aikaisemminkin tiivistetty Tinyprog -sovelluksella. Tämä optio kääntää "/F" -kytkimen päälle. Jos ohjelma esittää itse "/A" -option käyttöä, se merkitsee sitä, että lähdeohjelma on jo kertaalleen tiivistetty Tinyprog -ohjelmalla, ja että sen käsittely uudelleen sattaisi aiheuttaa sen, että aiemmin spesifioitu "userdata" -informaatio samalla menetetään.

/C

Kun käytät tätä optiota Tinyprog luo tulostiedostosta EXE -tiedoston, vaikka lähdetiedosto ei olisikaan EXE -tiedosto, jonka tiedät esimerkiksi siitä, että tiedoston koko on liian suuri COM -tiedostoksi, jonka suurin koko on 64 -kilotavua. Jos ohjelma itse ehdottaa käytettäväksi "/C" -optiota, se merkitsee sitä, että Tinyprog arvelee, etä käsiteltävä tiedosto on COM -tiedosto, mutta se on toisaalta liian suuri ollakseen validi COM -tiedosto.

/D

Kun käytät tätä optiota Tinyprog -ohjelman rekisteröidyssä versiossa, estetään tulostiedoston palauttaminen takaisin alkuperäiseen kokoonsa - jos siihen tarvittava menettely olisi tarjolla tulevaisuudessa.

/F

Kun käytät tätä optiota Tinyprog tiivistää tiedoston siinäkin tapauksessa, että tulostiedosto olisi suurempi kuin lähdetiedosto.

/H

Kun käytät tätä optiota Tinyprog yrittää kirjoittaa ohjelmaa koskevan dokumentaation tiedostoon, tai näytölle. Tämä merkitsee sitä, että sinulla on aina käytössäsi ohjelman manuaali, vaikka ohjelman mukana tulleita liitetiedostoja ei enää mistään löytyisikään.

/I

Kun käytät tätä optiota Tinyprog tiivistää tiedoston sellaisessakin tapauksessa, että EXE -tiedosto on todellisuudessa pitempi kuin sen "load image" -arvo osoittaa. Tämä arvo löytyy tiedoston "headerista", ja siitä DOS tietää, miten suuri tiedosto sen pitäisi ladata keskusmuistiin, tai miten suuri osa tiedostoa olisi ladattavana. Mikäli tiedoston datan määrä onkin suurempi kuin "load Image" -arvo osoittaisi, ei Tinyprog yritäkään tiivistää ohjelmatiedostoa ilman tätä optiota. Jos tällainen tiedosto käsiteltäisiin ilman optiota, poistaisi Tinyprog ylimääräisen datan, ja sitä ei olisi mahdollista enää palauttaa takaisin. Tästä on olemassa kuitenkin poikkeuksia, kuten Borlandin ja Microsoftin EXE -tiedostoihin liittämä "debug" -informaatio. Kun käytät "/I" -kytkintä, säilytetään Borland C/C++ -"overlay" -kerrokset, joita ei tiivistetä, ja joille ei suoriteta Cyclic Redundancy Check -tarkistusta. Koska tämän kytkimen käyttö perustuu dokumentoimattomaan informaatioon, pitäisi sitä käyttää vain omia sovelluksia käsiteltäessä. Jos Tinyprog ehdottaa itse käytettäväksi "/I" -optiota, se yrittää kertoa sinulle, että käsiteltävää sovellusta ei voida ottaa työn alle ilman, että samalla menetetään joitakin alkuperäistiedossa olevia tietoja. Ellet tiedä, mitä nämä saattaisivat olla (kuten "overlay" -kerroksia, tai jäänteitä XMODEM tai YMODEM -protokollilla tapahtuneesta tiedoston siirrosta, älä yritä tiivistää tai käsitellä tällaista ohjelmaa lainkaan.

/K

Kun käytät tätä optiota Tinyprog hävittää alkuperäisen käsiteltävän ohjelmatiedoston, kun se on tiivistetty - ja tässä takauksessa ei siis luoda BXE -varmuuskopiota.

/Mb

Kun käytät tätä optiota Tinyprog liittää käsiteltävään sovellukseen tiedoituksen, jolla se ilmoittaa mikäli se on jollakin tavoin vioittunut. Oletuksena ohjelmaan liitetään "TINYPROG says, "Bad program file!"" -ilmoitus, mutta viestin voi asettaa myös niin, että se vastaa omia mieltymyksiä, kuten että viesti annettaisiin suomenkielellä, tai jos ohjelmaan asetetaan salasana, viesti olisi vastaus virheelliseen salasanaan. Jos käsiteltävänä on "ohjelma.exe" -niminen tiedosto, voit antaa seuraavan komennon:

tinyprog /Mb "\Ohjelma on viallinen, tai antamasi salasana ei ole oikea\r\n" ohjelma.exe

Huomaa, että voit antaa käskyyn kontrollimerkkejä käyttämällä C-kielen ketjuja tavallisena ASCII -tekstinä. Ylläolevan virheviestin maksimaalinen pituus on 128 -merkkiä.

/N

Kun käytät tätä kytkintä Tinyprog asettaa tulostiedostoon vallitsevan ajan ja päivämäärän. Jos käytät ohjelmaa ensi vuosituhannenkin puolella, kannattaisi harkita sen käyttöä jossakin erillisessä koneessa.

/O

Kun käytät tätä optiota Tinyprog kirjoittaa ohjelman tilaustiedot tiedostoon, tai näytölle, ja mikäli antamasi tiedostonimi esiintyy ennenstään, kysytään lupaa sen ylikirjoitukselle.

/P

Kun käytät tätä optiota Tinyprog tietää, että seuraava sana senjälken on salasana, jotka ohjelman ajo edellyttää. Tällainen asetetaan ohjelmaan seuraavasti:

tinyprog /P salasana ohjelma.exe

jossa "salasana" on antamasi salasana, ja "ohjelma.exe" sen ohjelman nimi, johon se asetetaan. Jos joku käynnistää sitten tällaisen ohjelman, se pyytää salasanaa, ja mikäli se ei ole oikea, ohjelma tulostaa "/Mb" -viestin, ja palaa DOS -komentoriville. Salasanan täytyy olla sellainen, että se on tulostettavissa, ja siinä ei erotella isoja ja pieniä kirjaimia. Hyvä idea on antaa salasana esimerkiksi muodossa:

sala_sanani

jolloin sen löytämiseen menee ainakin jokin aikaa, ja yrittäjä todennäköisesti luopuu ennenkuin löytää oikean yhdistelmän.

/R

Kun käytät tätä optiota rekisteröidyyssä Tinyprog -ohjelmassa, voit määrittää alustuksen satunnaislukugeneraattorille antamalla Tinyprog -ohjelmalle C-kielen tyypin numeron, kuten esimerkiksi antamalla komennon:.

tinyprog /R 0x1234 ohjelma.exe nohjelm.exe

Tinyprog käyttää tällöin satunnaislukugeneraattoria salakirjoittaakseen ohjelmakoodin ja datan, ja tekee myös muita toimenpiteitä. Tämän seurauksena in se, että kahden eri Tinyprog -ajon tulosohjelmat ovat täysin identtisiä, jos lähtötiedostot ovat samat. Normaalistihan Tinyprog valitsee jokaista ajoa varten uudet satunnasluvut, ja tästä syystä eri ajoissa tuotetut tulosohjelmatkaan eivät ole samanlaisia.

/U

Kun käytät tätä optiota Tinyprog liittää ohjelmatiedoston alkuun tiivistämätöntä, tekstimuotoista dataa. Tällä optiolla on useitakin alioptioita, joita ovat mm. seuraavat:

/Ue environment_variable_name

Jossa liitetään tiedostoon ympäristömuuttujia ASCIIZ -ketjuna käyttäjän data-alueelle.

Tinyprog kääntää muuttujanimet suuriksi kirjaimiksi vertailua varten.

/Uf file_name

Jossa käyttäjän data-alueelle liitetään tiedostonimi.

/Ut string

Jossa käyttäjän data-alueelle liitetään tekstiä. Jos annat esimerkisi seuraavan komennon:

tinyprog /Ut "\r\n (C) Copyright Timo Kinnunen\r\n" ohjelma.exe

asetetaan käyttäjän data-alueelle tällainen teksti. Huomaa, että jos teksti sisältää välilyöntejä, on käytettävä lainausmerkkejä, ja että lopullisen data-alueen koko ei voi ylittää 60 kilotavua. Seuraavassa neljä erilaista tapaa määritellä käyttäjän data-aluetta:

1. ASCII teksti:

Määritys voidaan tehdä syötämällä ASCII -tekstijono, ja siinä siihen kuulumattomat muut merkit voidaan syöttää käyttämällä seuraavia laajennettuja C-kielen konventioita, jotka seuraavassa esitettynä englanninkielellä:

\aBell \b Backspace
\eESC \f Form feed
\nLine feed \r Carriage return
\tTab \v Vertical tab
\zControl Z (End_of_file)
\-Minus sign/dash \/ Forward slash
\'Single quote\" Double quote
\\Back-slash \? Question mark
\xHH Hex value \DDD Octal value
\_Ignored (Used for null-string: "\_")

Tämäntapainen teksti syötetään ohjelmaan ilman mitän erillistä informaatiota. Seuraavassa esimerkkejä:

tinyprog /UT "teksti" ohjelma.exe

tinyprog /ut "\r\n hah,hah,haa.\r\n" ohjelma.exe

tinyprog /ut "Sanon \"Kuinkas hurisee, veli.\"" ohjelma.exe

Voit myös määrittää sellaisia datablokkeja, joissa jokaisella bitillä on täsmälleen sama arvo, kuten esimerkiksi:

tinyprog /UB 0 2048 ohjelma.exe
tinyprog -ub -1 100 ohjelma.exe
tinyprog /UB -128 1 ohjelma.exe
tinyprog /UB 255 1 ohjelma.exe

Voit myös määrittää 16-bittisiä "Word" -arvoja niin, että jokaisella niistä on sama arvo, ja sanat tallennetaan niin, että ensinnä on "low-byte" -arvo. Esimerkkinä seuraavat:

tinyprog /Uw 0 2048 ohjelma.exe
tinyprog -uw -1 100 ohjelma.exe
tinyprog /Uw -128 1 ohjelma.exe
tinyprog /UW 255 1 ohjelma.exe
tinyprog /uw -32768 2 ohjelma.exe
tinyprog /uw 65535 7 ohjelma.exe
tinyprog /uw -1 4 ohjelma.exe

Mutta ohjelmaan voidaan liittää myös kokonainen tiedosto, ja Tinyprog kopioi sen binaarisena datana käyttäjän data-alueelle. Esimerkkinä tästä olkoot seuraava:

tinyprog /uFX.Y ohjelma.exe

Jolla ohjelmaan liitetän tiedostot "X" ja "Y".

Seuraavassa pari mutkikkaampaa esimerkloä:

/ut"MY_PROGRAM \0" /ut "5/26/90" /ub 0x20 32 /uf DATA_FILE.DAT
/ut "Overlay1\0" /uf OVER1.EXE /utOverlay2\0 /ufOVER2.EXE

/X

Kun käytät tätä optiota Tinyprog tietää, että käsiteltävä EXE -tiedosto voi sisältää aina 127 -bittiä ylimääräistä dataa tiedoston lopussa. Tavallisesti tällaiset bitit heitetään menemään tiivistyksen, tai käsittelyn aikana, ja niitä ei voida palauttaa. Tätä optiota voidaan käyttää nihin EXE -tiedostoihin, jotka on siirretty modeemilla XMODEM -protokollaa käyttäen, tai joita on käytetty CP/M -tiedostojärjestelmässä.

/Y

Kun käytät tätä optiota Tinyprog tietää, että EXE -tiedosto saattaa sisältää aina 1023 ylimääräistä bittiä tiedoston lopussa. Tavallsesti nämä heitetään käsittelyn kuluessa menemään, ja niitä ei ole mahdollista palauttaa takaisin. Tätä optiota käytetään käsiteltäessä tiedostoja, jotka on siirretty modeemin kautta YMODEM -protokollaa käyttäen (eli yksinkertaista 1024-bittilukko XMODEM -protokollaa käyttäen).