CoBra BASIC


La acest capitol n-am să mă apuc să fac o descriere a versiunii originale BASIC din ZX Spectrum. În schimb am să fac un mic comentariu al versiunii de BASIC descrise în manualul CoBra BASIC.
Această versiune diferă puțin față de variantele originale Spectrum prin două comenzi, descrise în manualul CoBra BASIC:

O primă versiune de BASIC CoBra - ZX.COM


Pe discheta UTILS2 din arhiva de dischete CP/M de 3.5", în USER 0 există un executabil CP/M numit ZX.COM. El lansează o versiune de BASIC care pare să fie chiar prima versiune BASIC modificată pentru CoBra de către echipa de la Brașov. Este datată 1987, cu mult înaintea exploziei de constructori amatori din căminele studențești din București. Această versiune implementează comenzile COPY și MON conform descrierii de mai sus.

Ecranul de start al acestei versiuni BASIC arată cam așa:

BASIC modificat pentru CoBra de către ITCI Brașov (ZX.COM)

(Imagine binară) (Executabil CP/M)



În continuare o foarte scurtă demonstrație a comenzii COPY pentru această versiune de BASIC. Nu sînt sigur, dar bănuiesc că implementarea comenzii COPY pentru această versiune a fost făcută pentru vreo imprimantă de fabricație autohtonă, întrucît din demonstrația de mai jos se vede clar o rată de transmisie către imprimantă extrem de scăzută (și durata de tipărire este foarte mare).

Comanda COPY din CoBra BASIC (ZX.COM) - un mic demo

1:

Ecranul de start al acestei versiuni.

2:

Tastez comanda COPY.

3:

După un ENTER începe execuția comenzii (durează cam 11 minute !)...

4:

...după care execuția se încheie cu mesajul de terminare normală.


Alte două versiuni de BASIC CoBra - COBRA.SCP și COBRA.ROB


Pe discheta UTILS3 din arhiva de dischete CP/M de 3.5", în USER 3 există un program de încărcat sisteme de operare Spectrum (COSYS.COM) cu 4 sisteme de operare disponibile: În paranteză fie zis, acest încărcător de sisteme nu va funcționa decît dacă cele 4 fișiere conținînd sistemele sînt salvate pe disc în USER 0.
Imediat după lansare acest program afișează un meniu care arată cam așa:


Dintre acestea, COBRA.SCP și COBRA.ROB par a fi alte două variante ale versiunii BASIC descrise în manualul CoBra BASIC. Redau mai jos cîte un snapshot cu ecranul de start al ambelor variante precum și cîte două link-uri pentru descărcare sub formă de imagine binară (programabilă într-un ROM) și executabil CP/M:

BASIC cu suport pentru imprimantă SCAMP (COBRA.SCP)

(Imagine binară) (Executabil CP/M)

BASIC cu suport pentru imprimantă ROBOTRON (COBRA.ROB)

(Imagine binară) (Executabil CP/M)



Deci se pare că varianta cu rutină pentru imprimantă ROBOTRON ar fi ulterioară celei cu rutină pentru imprimantă SCAMP. Ambele variante au implementată și comanda de monitor, cu care, conform mărturiei lui Vasile Prodan, a fost „urcat” BDOS-ul prima dată.

În continuare o foarte scurtă demonstrație a comenzii COPY pentru versiunea de BASIC din fișierul COBRA.SCP. Bănuiesc că implementarea comenzii COPY pentru această versiune a fost făcută pentru imprimante SCAMP de fabricație străină, întrucît din demonstrația de mai jos se vede clar o rată de transmisie către imprimantă mai mare decît la versiunea BASIC ZX.COM (și durata de tipărire este mult mai mică).

Comanda COPY din CoBra BASIC (COBRA.SCP) - un mic demo

1:

Ecranul de start al acestei versiuni.

2:

Tastez comanda COPY.

3:

După un ENTER începe execuția comenzii (durează cam 3 minute !)...

4:

...după care execuția se încheie cu mesajul de terminare normală.


Mai departe o ultimă demonstrație a comenzii COPY, pentru versiunea de BASIC din fișierul COBRA.ROB. Imprimanta pentru care a fost implementată rutina de tipărire din această versiune este de viteză mult mai mare decît la primele două versiuni (și durata de tipărire este mult mai mică).

Comanda COPY din CoBra BASIC (COBRA.ROB) - un mic demo

1:

Ecranul de start al acestei versiuni.

2:

Tastez comanda COPY.

3:

După un ENTER începe execuția comenzii, care este foarte rapidă (durează cam 20 secunde !)...

4:

...după care execuția se încheie cu mesajul de terminare normală.


În continuare am să fac un mic demo ilustrat al utilizării comenzii MON din BASIC CoBra (se manifestă identic în toate cele 3 versiuni BASIC descrise mai sus - ZX.COM, COBRA.SCP, COBRA.ROB), :

Comanda MON din CoBra BASIC - un mic demo

1:

Pentru început am să scap de fondul alb (mă enervează ecranele albe). Tastez comanda BORDER 1 pentru un border albastru..

2:

După un ENTER, BORDER-ul se colorează în albastru.

3:

În continuare tastez PAPER 0 pentru un SCREEN negru.

4:

După un ENTER, comanda este executată cu succes....

5:

...dar mai e nevoie de încă un ENTER pentru schimbarea efectivă a culorii PAPER.

6:

În continuare tastez comanda CAT (New Mode, SS+9), care are ca rezultat afișarea în linia de comandă a cuvîntului cheie MON.

7:

După un ENTER, cuvîntul MON defilează cu un rînd mai sus și se așteaptă introducerea uneia din comenzile recunoscute de monitor. Introducerea comenzii se face fără spații și fără a apăsa ENTER.

8:

Pentru început testez comanda de substituție S 5A00: tastez „S5A00”. Imediat ecranul defilează un rînd în sus și este afișată adresa $5A00 și conținutul ei, după care se așteaptă introducerea noii valori.

9:

Tastez „1B” ca nouă valoare, și întrucît $5A00 este adresa primului atribut de culoare din treimea inferioară a ecranului, efectul devine vizibil după care ecranul defilează iar cu un rînd în sus.

10:

Este afișată adresa următoarei locații ($5A01) și valoarea ei curentă și se așteaptă noii valori pentru ea. În loc de asta, pentru a testa sintaxa descrisă anterior, apăs SPACE: ecranul este iar defilat și se afișează locația precedentă ($5A00).

11:

Pentru a testa iar sintaxa, de data asta apăs ENTER și este afișată locația următoare ($5A01).

12:

Apăs Q pentru a termina comanda de substituție și ecranul este defilat un rînd în sus, este afișat prompterul MON și se așteaptă introducerea unei noi comenzi.

13:

Apoi testez comanda de mutare zonă de memorie: tastez „M03AC03CB5880” (fără spații), comanda este afișată pe ecran cu spații și efectul este copierea a 32 octeți de la $03AC în al 5-lea rînd de atribute culoare din treimea superioară ecran. Apoi comanda se termină și ecranul este iar defilat în sus, prompterul MON este iar afișat și se așteaptă introducerea unei noi comenzi.

14:

Apoi testez comanda de umplere memorie cu o valoare: tastez „F580003000038”, comanda este afișată pe ecran cu spații și efectul (vizibil) este umplerea atributelor de culoare pentru tot ecranul cu valoarea pentru PAPER=7, INK=0. După care comanda se termină și ecranul este iar defilat în sus, este afișat prompterul MON și se așteaptă introducerea unei noi comenzi.

15:

Testez iar aceeași comandă, cu valori pentru PAPER=0, INK=7. Introduc „F580003000007”. Ecranul se schimbă corespunzător și apoi este iar defilat un rînd în sus.

16:

În continuare testez comanda de afișare memorie și introduc „D3300”. Imediat după introducerea ultimului 0 comanda este executată și 128 de octeți sînt afișați începînd de la adresa $3300

17:

Pentru a testa sintaxa comenzii, apăs SPACE și rezultatul este afișarea paginii anterioare de 128 celule de memorie ($3280-32FF).

18:

Pentru a testa iar sintaxa, de data asta apăs ENTER și este afișată pagina următoare ($3300-$337F).

19:

Pentru a termina comanda, apăs Q și ecranul este iar defilat cu un rînd în sus și prompterul MON este afișat, așteptînd introducerea altei comenzi.

20:

În continuare testez comanda de afișare regiștri procesor, apăs R și conținutul regiștrilor este afișat.

21:

În final, apăs tasta B pentru a ieși din rutina de monitor înapoi în BASIC. Este afișat un „B” pe ecran...

22:

...după care ecranul este șters și se revine la promptul BASIC obișnuit.


Altă versiune de BASIC - BASIC cu 64 coloane text


În afară de aceste versiuni, pe discheta UTILS2 din arhiva pe 3 ½" mai există un executabil CP/M numit BASIC64.COM care, la examinare, se dovedește a fi încă o „specie” de BASIC, și anume una cu 64 coloane text în loc de standardul de 32. Redau mai jos mesajul de start afișat de executabilul CP/M (într-o engleză de baltă analfabetică...) precum și un link de descărcare a imaginii binare programabile într-un ROM

BASIC cu 64 coloane text - Mesaj de start în CP/M (Imagine binară)



Am făcut o mică probă de utilizare, pentru a vedea efectiv particularitățile de afișare ale acestei versiuni. Am încărcat primul bloc din utilitarul Tasword 2+, care este un program, după care am apăsat tasta SPACE pentru a opri încărcarea și apoi am afișat primul ecran de listing al programului. Rezultatul se poate vedea mai jos:

BASIC cu 64 coloane text - Probă de funcționare

1:

Ecranul de start al acestei versiuni de BASIC, purtînd ștampila PHOENSOFT.

2:

După un ENTER, mesajul de start este șters și apare cursorul K, dar în această versiune de BASIC el nu mai clipește, spre deosebire de BASIC-ul standard.

3:

Tastez comanda de încărcare de pe bandă audio.

4:

După un ENTER, încărcarea începe și apare informația din header-ul primului bloc: programul „TASWORD 2+”.

5:

După ce blocul programului a fost încărcat, apăs SPACE pentru a opri încărcarea. Apare mesajul standard de întrerupere încărcare.

6:

După un ENTER, pe ecran este listat începutul programului. Cu 64 coloane text pe ecran, cantitatea de text afișată este cam de 2 ori mai mare...