OldComp.cz
http://oldcomp.cz/

Přenos programu v BASICu do emulátoru
http://oldcomp.cz/viewtopic.php?f=134&t=6099
Stránka 11

Autor:  lukz [ 15.03.2018, 15:11 ]
Předmět příspěvku:  Přenos programu v BASICu do emulátoru

Nahrát existující binární program v emulátoru je celkem snadné. Pomocí virtuálního CMT můžeme nahrát soubor mzf nebo mzt. Případně je možné využít virtuální Quick disk a nahrát soubor mzq, nebo opět mzt (přípona se liší podle použitého emulátoru).

Pokud připravíme nový program, v textové formě, jaké jsou možnosti přenést ho do emulátoru? Bez speciálních nástrojů máme vždy možnost přepsat ho ručně. V emulátoru EmuZ-800 je navíc funkce Paste, která podle textu ve schránce simuluje stisky jednotlivých kláves. Přenos to usnadní výrazně. Je ovšem potřeba dát pozor na to, že interpret BASICu potřebuje čas na uložení nové řádky do paměti, takže po vložení dlouhé řádky nějakou dobu na další stisky kláves nereaguje.

BASIC verze 1Z-016 a 5Z-009 umí také číst datové soubory, které obsahují text programu jako sekvenci programových řádek, v textovém formátu. Tato data mají na pásce trochu odlišnou strukturu od standardních binárních dat. Také na QD disku mají odlišnou strukturu od normálních souborů.

Takovýto datový soubor můžeme použít pro snadnější přenos textu programu z PC do emulátoru. Musíme ovšem nejprve vyrobit obraz dat použitelný pro virtuální CMT nebo virtuální QD. Použití QD se jeví jako lepší cesta, načítání z něj je rychlejší než z CMT. Navíc myslím zatím neexistuje žádný nízkoúrovňový formát popisující obsah pásky, který by emulátory podporovaly. (Datové soubory pro CMT zatím můžeme jen napodobit pomocí normálních souborů - při malé délce mají binární i datové soubory strukturu stejnou).

Tímto příspěvkem tedy oznamuji, že jsem si připravil aplikaci, která tento převod provede. Tj. jako vstup je dodán text programu, jako výstup je připraven binární obraz Quick disku s jedním datovým souborem. Z virtuálního QD je možné ten soubor načíst příkazem LOAD"PRG",A .

Pro vyzkoušení v on-line verzi na
https://lukq.github.io/mz-basictoqd/Basictoqd.htm


Jestli někdo ještě píšete programy v BASICu, tak dejte vědět. Případně tipy na zajímavé programy, které by šly na Sharpu vyzkoušet.

Autor:  Milsa [ 15.03.2018, 18:02 ]
Předmět příspěvku:  Re: Přenos programu v BASICu do emulátoru

Mám skúsenosti so schránkou. Urobil som to vo svojom emulátore, ale nefungovalo mi to. Zrejme si to pýta veľa ladenia. Niektoré písmená mi preskočilo aj keď som mal veľmi dlhý čas medzi jednotlivými písmenami. Naopak veľa písmen to zobralo aj pri vysokej rýchlosti, takže neviem, kde mohol byť problém.

S Quick Diskom je menší problém. Dodnes nebol uvoľnený presný formát súboru a neviem presne ako vznikol Zdeňkov QD formát. Ja som vo svojom emulátore použil formát od autora iného emulátora. V podstate som mal kompletnú emuláciu QD hotovú, len mi to nevedelo zosynchronizovať dokopy a jednoducho mi to stále hádzalo chyby. Potom som sa dostal k zdrojáku emulácie QD a zistil som, že všetko som mal dobre, až na synchronizačnú značku, pretože tá nebola dobre popísaná v dokumentácii. Tvorbu značky som "okopíroval" z cudzieho zdrojáka a zrazu mi celá emulácia začala fungovať naplno. Problém je, že tento formát nie je kompatibilný so Zdeňkovým a Michalovým. Takže som za to, aby sa sprístupnili nejaké informácie o emulácii QD, aby sme neštiepili formát.

Osobne to vidím tak, že najlepšie by bolo prehodiť to do BASIC kódu a dá sa to načítať kdekoľvek.

Doplnené: Aby som nebol nevďačný, spomenul som si na meno autora. Bol to formát Michala Medeka, ktorý použil vo svojom emulátore. Ide o to, že môj formát bol identickou kópiou jeho formátu, len to nefungovalo a to som ešte nevedel, že sa k nejakému zdrojáku dostanem. Takže Zdeněk zrejme emuluje presnejšie, lebo vo svojom formáte má toho trochu viac (jeho začiatok disku je v súbore posunutý ďalej). Neviem, či som to vysvetlil presne, dúfam, že sa to dá pochopiť.

Autor:  lukz [ 15.03.2018, 19:09 ]
Předmět příspěvku:  Re: Přenos programu v BASICu do emulátoru

Ještě doplním, že při načítání zdrojáku jako datového souboru je možné psát zdroják ve stejně volné syntaxi, jako při zadávání v obrazovkovém editoru. Tj. na mnoha místech je možné ubrat mezery a identifikátory lepit za sebe, na druhou stranu skoro všude je možné mezery přidávat. Takže všechno tohle je platné:
Kód:
10PRINT 21
20 P=21:PRINTP
30  ? 2"1"
Rozpoznávají se také zkratky, např. F. jako FOR a N. jako NEXT.

Na vyzkoušení jsem připravil krátký prográmek, který "něco dělá", a ukazuje syntaxi Sharp Basicu.

Kód:
1 REM PRIKLAD, BINARNI SCITANI
2 A=341:B=342:C=A+B
3 F.I=1TO3:?:?MI.(" +=",I,1);:A=A/512
4 F.J=0TO9:?A AND1;:A=A*2:N.:A=B:B=C
5 N.

Autor:  Mikes21 [ 15.03.2018, 21:19 ]
Předmět příspěvku:  Re: Přenos programu v BASICu do emulátoru

Jo, ve stare verzi emulatoru to opravdu bylo hodne nekompatibilni. Ale jak sel cas, tak vznikla opravena verze, ktera se vice podoba Zdenkove verzi. I kdyz i to je ponekud jine nez v realu. Asi nejpresnejsi format je v soucasne verzi implementovany v emulaci QD v unikarte. Funguje tam samozrejme formatovani i zapis. A taky neco jako oversizing az do cca 120kB.
Ale neni problem dostat neco z/do QD image. Takze by bylo mozne textovy soubor nahrat do QD image, pak s nim pracovat treba v Sharpu s unikartou a potom gto zase exportovat do PC. Podobne se da pracovat s image RAMdisku.

P.S.: Za nedlouho bude setkani sharpistu, tak by se tam dal udelat na toto tema workshop. Urcite tam bude dost lidi, kteri s tim maji zkusenosti. A treba z toho nekdo udela zaznam ;-)

Autor:  Milsa [ 15.03.2018, 21:46 ]
Předmět příspěvku:  Re: Přenos programu v BASICu do emulátoru

Tak to som riadne zaspal dobu, ja si pamätám ešte časy, keď Unikarta ťahala z akože obrazu QD zavádzač a to bola celá emulácia. Ďakujem za informácie.

Autor:  wankes [ 15.03.2018, 23:09 ]
Předmět příspěvku:  Re: Přenos programu v BASICu do emulátoru

Basic na MZ má přece příkaz MERGE
takže by bohatě stačilo, kdyby člověk mohl napsat třeba v PSPadu program v Basicu
a emulátor by ten soubor uměl "připojit" načíst.

Autor:  lukz [ 16.03.2018, 15:20 ]
Předmět příspěvku:  Re: Přenos programu v BASICu do emulátoru

BASIC je jazyk pro snadné experimentování. Měl umožnit lidem vzít nějakou ideu a vyjádřit ji jako program prováděný počítačem. Jedna z ideí, co se mi v poslední době líbila, zahrnovala pohyb robota po dvorku a kladení značek. Připravil jsem tedy simulaci v BASICu a přidávám ji jako další ukázkový program.
Kód:
30 REM SIMULACE ROBOTA KARLA
31 DA.1,0,1,0,1,0,1,1,0
32 DA.1,0,1,0,1,0,1,0,1
33 CLS:DIMA(9,9),O$(99),S(9)
34 F.Y=7TO8:F.X=1TO9:READA(X,Y):CURSORX,Y:IFA(X,Y)?"1"
35 N.:N.
36 READO$(I):IFO$(I)I=I+1:GOTO36

40 X=9:Y=X:DX=1
41 F.L=1TO9:P$="POZICE":GOSUB66:N.:END

66 I=0
67 IFO$(I)<>P$I=I+1:GOTO67

69 REM PROVED PRIKAZ
70 I=I+1:P$=O$(I)
71 CURSOR0,11:?I":"P$;:IFP$="KDYZ"I=I+2:?" "O$(I-1)" "O$(I)ELSE?SPC(10)
72 IFE=0:CURSORX,Y:?MI.("^_ \xc6ü",2*DY+DX+3,1);:WAIT500:CURSORX,Y:IFA(X,Y)?STR$(A(X,Y)):WAIT500ELSE?" ":WAIT500
73 IFP$<>"KDYZ"IFP$<>"JINAK"GOTO77
74 IFEGOSUB70:GOTO70
75 IFP$="KDYZ"AND(O$(I-1)="JE"XORA(X,Y)=0)ORP$="JINAK"ANDKGOSUB70:K=0:GOTO70
76 E=1:GOSUB70:E=0:K=1:GOTO70

77 IFP$="KONEC"RETURNELSEIFEGOTO70
78 IFP$="KROK"X=X+DX:Y=Y+DY:GOTO70
79 IFP$="VLEVOV"T=DX:DX=DY:DY=-T:GOTO70
80 IFP$="POLOZ"A(X,Y)=A(X,Y)+1:GOTO70
81 IFP$="ZVEDNI"A(X,Y)=A(X,Y)-1:GOTO70
82 S(J)=I:J=J+1:GOSUB66:J=J-1:I=S(J):GOTO70

90 DA.HORNI
91 DA.VLEVOV,KROK,KROK,VLEVOV,VLEVOV,KDYZ,JE,ZNACKA,KROK,KROK,POLOZ,KONEC,JINAK,KROK,KROK,KONEC,VLEVOV,KONEC
92 DA.DOLNI
93 DA.VLEVOV,KROK,VLEVOV,VLEVOV,KDYZ,JE,ZNACKA,KROK,POLOZ,KONEC,JINAK,KROK,KONEC,VLEVOV,KONEC
94 DA.PRENOS
95 DA.VLEVOV,VLEVOV,KDYZ,JE,ZNACKA,ZVEDNI,KDYZ,JE,ZNACKA,ZVEDNI,KROK,POLOZ,KONEC,JINAK,POLOZ,KROK,KONEC,KONEC,JINAK,KROK,KONEC,VLEVOV,VLEVOV,KONEC
96 DA.POZICE
97 DA.HORNI,DOLNI,PRENOS,KONEC
98 DA.,

Autor:  Mikes21 [ 16.03.2018, 15:39 ]
Předmět příspěvku:  Re: Přenos programu v BASICu do emulátoru

Dobry, taky prikladam jeden pokus na robota KARLA. Vzniklo to v dobe, kdy tento jazyk slavil nejvetsi slavu - cca v roce 1986. Tahleta verze je zavisla na BASICu pro MZ-800.

Jeste, pri tom prenosu textu z PC do Sharpa je potreba davat pozor na znaky, ktere Sharp zobrazuje jinak. Treba ruzna pseudografika a tak. Tyka se i opacneho smeru.

Přílohy:
KAREL_RAM.zip [5.04 KiB]
604 krát

Autor:  lukz [ 16.03.2018, 16:39 ]
Předmět příspěvku:  Re: Přenos programu v BASICu do emulátoru

Pěkné, to je dokonce kompletní implementace Karla. Povedlo se mi to v ní také nasimulovat. :)

Přílohy:
scrn21.png
scrn21.png [ 10.64 KiB | Zobrazeno 9088 krát ]

Autor:  lukz [ 12.04.2018, 23:31 ]
Předmět příspěvku:  Re: Přenos programu v BASICu do emulátoru

I kdyz to neni potreba (protoze na to program uz existuje), tak jsem si pripravil program i pro opacny prenos. Tj. prevod binarniho souboru zpet na zdrojovy text BASICu. Je tedy mozno prenaset data "do" i "z" binarniho formatu.

Prevod textu na datovy soubor pro QD:
https://lukq.github.io/mz-basictoqd/Basictoqd.htm
Prevod binarniho souboru na text:
https://lukq.github.io/mz-basictoqd/Listbasic.htm

Stránka 11 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/