ToBoS-FP

Z Wikipedii, wolnej encyklopedii
ToBoS-FP na kasecie kompaktowej

ToBoS-FPkompilator zmiennoprzecinkowy dla języka Sinclair BASIC ZX Spectrum. Nazwa pochodzi od słów: Toruń, Jerzy Borkowski, Wojciech Skaba, floating point. Kompilator pojawił się na rynku w Polsce w 1986 r.[1] Użycie kompilatora umożliwia znaczne (nawet 20-krotne[2]) skrócenie czasu wykonywania programów napisanych w Basicu, które normalnie są wykonywane przez interpreter. Efekt ten osiągnięto dzięki zastosowaniu własnej biblioteki funkcji zmiennoprzecinkowych[3] i graficznych, zamiast używania bibliotek wbudowanych ZX Spectrum. W wydanym w 1992 r. niezależnym opracowaniu, ToBoS-FP został nazwany najbardziej popularnym ze wszystkich znanych kompilatorów Basica dla ZX Spectrum[4]. W 2006 r. nadal był uważany za najlepszy kompilator BASIC-a na ZX Spectrum[5].

Tło historyczne[edytuj | edytuj kod]

ZX Spectrum posiada fabrycznie wbudowany edytor Sinclair BASIC-a oraz jego interpreter, który umożliwia natychmiastowe wykonywanie programów bez ich uprzedniej kompilacji, a także bez zużywania pamięci na skompilowany kod. Odbywa to się, jednakże, kosztem prędkości wykonywania programu. Stąd też na rynku pojawiło się wiele kompilatorów stało- i zmiennoprzecinkowych (np.: HiSoft Basic, HiSoft Colt, Softek IS/FP, MCoder, ZIP Compiler, Boriel ZX Basic, Blast). Sinclair BASIC pozwala jednak na konstrukcje programistyczne, które są bardzo trudne lub wręcz niemożliwe do kompilacji (np.: GO TO do numeru linii będącego wyrażeniem obliczanym w trakcie wykonywania programu). Stąd też istotnym problemem jest kwestia kompatybilności pomiędzy interpreterem a kompilatorem.

Rozwój projektu[edytuj | edytuj kod]

Kompilator został napisany w asemblerze Z80. Istnieją dwie główne przyczyny skrócenia czasu wykonywania skompilowanego kodu:

  • Zamiana kodu źródłowego na bezpośredni kod nizany (ang. direct threaded code), co zwalnia procesor z konieczności ciągłego tłumaczenia instrukcji kodu BASIC-a na odpowiednie wywołania podprogramów[6]
  • Użycie przez kompilator własnych podprogramów obliczających funkcje arytmetyczne i graficzne, zwłaszcza w częściach krytycznych ze względów czasowych

W celu osiągnięcia znaczącego przyśpieszenia, został zastosowany skrócony format zmiennoprzecinkowy, zbliżony do IEEE 754, a składający się z 1-bajtowego wykładnika (cechy) i 3-bajtowej mantysy (daje to efektywnie 7-cyfrową dokładność w systemie dziesiętnym). Oryginalny format Sinclair BASIC-a wykorzystuje 1-bajtową cechę i 4-bajtową mantysę[7]. Wszystkie funkcje arytmetyki zmiennoprzecinkowej zostały przepisane, w tym podstawowe operacje matematyczne takie jak dodawanie, mnożenie, dzielenie, oraz funkcje takie jak pierwiastek kwadratowy, logarytm, eksponent. Nietypowy algorytm został zastosowany do obliczania funkcji trygonometrycznych[8]. Funkcje graficzne takie jak kreślenie linii czy okręgu również zostały napisane od podstaw.

Wersje kompilatora[edytuj | edytuj kod]

ToBoS-FP zrzut ekranu po udanej kompilacji

Najbardziej rozpowszechniona wersja ToBoS-FP (ver. 2.0) została wypuszczona na rynek na kasecie magnetofonowej w Polsce w maju 1986 r. Po załadowaniu do pamięci, kompilator uruchamiało się wywołaniem USR 53100. Wcześniejsze niestabilne wersje, oznaczone 1.0, 1.1, 1.2, a uruchamiane wywołaniem USR 53500, nie były szerzej rozpowszechnione.

W czerwcu 1987 r. została wypuszczona udoskonalona wersja kompilatora pod nazwą ToBoS-DYD (przy współpracy Tadeusza Golonki), rozpowszechniana na dyskietkach 5 1⁄4 cala i zaadaptowana na klona ZX Spectrum Elwro 800 Junior. W porównaniu do wersji 2.0, niektóre funkcje zostały zoptymalizowane oraz dodano rozszerzenia Elwro 800 Junior[9].

Rozpowszechnienie[edytuj | edytuj kod]

Chociaż ok. 2000 kopii zostało sprzedanych w Polsce, ToBoS-FP zasadniczo rozpowszechnił się na świecie jako program darmowy. ToBoS-FP pojawił się na rynku zdecydowanie za późno, gdy zainteresowanie ZX Spectrum znacznie już spadło. Najbardziej popularny był w Polsce i innych krajach Europy Wschodniej, gdzie ZX Spectrum i jego klony były w powszechnym użyciu do połowy lat 1990. Szczególne uznanie znalazł wśród użytkowników gier napisanych w Sinclar BASIC-u, ze względu na możliwość znacznego ich przyśpieszenia[10].

Przypisy[edytuj | edytuj kod]

  1. Wojciech Skaba, Jerzy Borkowski. Pierwszy polski kompilator na Spectrum. „Bajtek”. 09/1986, s. 20, 1986. RSW „Prasa-Książka-Ruch”, Młodzieżowa Agencja Wydawnicza. ISSN 0860-1674. 
  2. Wojciech Skaba, Jerzy Borkowski. TOBOS-FP Polski Kompilator na Spectrum. „Komputer”. 03/1987, s. 28. RSW „Prasa-Książka-Ruch”. ISSN 0860-2514. 
  3. Wojciech Skaba. ToBos-FP Basic reaches the speed of light. „Polish Engineering”. 4(121)1987 bimonthly, s. 30. AGPOL Foreign Trade Publicity and Publishing Enterprise. ISSN 0209-0260. 
  4. Спектрум Бейсик – Компиляторы, работающие с вещественными числами: Softek FP, Tobos FP.. W: А.В. Болдачев, И.Е Думов, В.А. Елисеев: Диалекты бейсика для ZX Spectrum. Питер (Piter Ltd.), 1992. ISBN 5-7190-0001-1. Cytat: Компилятор Tobos FP (Tobos Floating Point) появился на свет в Польше в 1986 году и стал на сегодняшний день, пожалуй, наиболее популярным из всех известных бейсик-компиляторов для ZX Spectrum..
  5. Jakub Chabik. Kod źródłowy Leonarda da Vinci. „Computerworld Polska”, 12 czerwca 2006. IDG Poland SA. ISSN 0867-2334. 
  6. Wojciech Skaba, Jerzy Borkowski. Polski kompilator TOBOS F.P. „Elektronik”. 8/1986, s. 7. ZSP Politechniki Wrocławskiej. ISSN 0860-293X. 
  7. Steven Vickers: Sinclair ZX Spectrum BASIC programming. Sinclair Research Ltd, 1982.
  8. Wojciech Skaba. Sinus, consinus, tangens. „Mikroklan”. 2/1988, s. 23. Wydawnictwo Czasopism i Książek Technicznych SIGMA. ISSN 0860-1941. 
  9. Tadeusz Golonka. Tym razem bez lutownicy. „Informik”, s. 8, April 1988. Instytut Wydawniczy Nasza Księgarnia, Warszawa. ISSN 0860-5696. 
  10. Компиляция игровых программ. W: А. Капульцевич, И. Капульцевич, А. Евдокимов: Как написать игру для ZX Spectrum. ПИТЕР, Санкт Петербург (Piter Ltd.), 1995, s. 132. ISBN 5-7190-0052-6. Cytat: Начинать знакомство с этим классом прикладных программ лучше всего с компилятора TOBOS FP. На сегодняшний день он, пожалуй, самый популярный, хотя это и не означает, чт о он самый лучший, самый быстродействующий, самый, самый... Все дело в том, что он самы й простой в обращен ии и накладывает на исходную программу меньше всего огра ничений..

Linki zewnętrzne[edytuj | edytuj kod]