OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů
Právě je 22 dub 2018, 21:00

Všechny časy jsou v UTC + 1 hodina




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 10 ] 
Autor Zpráva
 Předmět příspěvku: Přenos programu v BASICu do emulátoru
PříspěvekNapsal: 15 bře 2018, 14:11 
Offline
Kecka

Registrován: 28 říj 2016, 20:03
Příspěvky: 33
Has thanked: 1 time
Been thanked: 6 times
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.


Nahoru
 Profil  
 
PříspěvekNapsal: 15 bře 2018, 17:02 
Offline
Profík
Uživatelský avatar

Registrován: 09 říj 2013, 18:04
Příspěvky: 712
Has thanked: 86 times
Been thanked: 28 times
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ť.

_________________
Sharp MZ-821
Milsa MZ-841


Nahoru
 Profil  
 
PříspěvekNapsal: 15 bře 2018, 18:09 
Offline
Kecka

Registrován: 28 říj 2016, 20:03
Příspěvky: 33
Has thanked: 1 time
Been thanked: 6 times
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.


Nahoru
 Profil  
 
PříspěvekNapsal: 15 bře 2018, 20:19 
Offline
Kecálek

Registrován: 11 lis 2013, 09:29
Příspěvky: 205
Has thanked: 8 times
Been thanked: 62 times
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 ;-)

_________________
Sharp MZ-800++, MZ-1500++, MZ-2500++, SM-B-80T, MK-14, HP-85+replica, ZX-80+replica, ZX81, ZX-Spectrum+replica++, PMI-80+replica, SAM coupe++, PMD-85-2A+3, Didaktik-M, SORD-M5, TI-57, TI-59+PC-100, TI99/4A, ZetaV2+ppp, ZX-uno, Petr


Nahoru
 Profil  
 
PříspěvekNapsal: 15 bře 2018, 20:46 
Offline
Profík
Uživatelský avatar

Registrován: 09 říj 2013, 18:04
Příspěvky: 712
Has thanked: 86 times
Been thanked: 28 times
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.

_________________
Sharp MZ-821
Milsa MZ-841


Nahoru
 Profil  
 
PříspěvekNapsal: 15 bře 2018, 22:09 
Offline
Radil

Registrován: 12 kvě 2013, 20:24
Příspěvky: 309
Has thanked: 8 times
Been thanked: 40 times
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.

_________________
ex-STklub BRNO,SEGA Mega Drive, Sharp MZ 800, ZX emul,Commodore C64 kalkulátory HP/TI/FX, (PSP, PS2, X360)


Nahoru
 Profil  
 
PříspěvekNapsal: 16 bře 2018, 14:20 
Offline
Kecka

Registrován: 28 říj 2016, 20:03
Příspěvky: 33
Has thanked: 1 time
Been thanked: 6 times
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.,


Nahoru
 Profil  
 
PříspěvekNapsal: 16 bře 2018, 14:39 
Offline
Kecálek

Registrován: 11 lis 2013, 09:29
Příspěvky: 205
Has thanked: 8 times
Been thanked: 62 times
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]
17 krát

_________________
Sharp MZ-800++, MZ-1500++, MZ-2500++, SM-B-80T, MK-14, HP-85+replica, ZX-80+replica, ZX81, ZX-Spectrum+replica++, PMI-80+replica, SAM coupe++, PMD-85-2A+3, Didaktik-M, SORD-M5, TI-57, TI-59+PC-100, TI99/4A, ZetaV2+ppp, ZX-uno, Petr
Nahoru
 Profil  
 
PříspěvekNapsal: 16 bře 2018, 15:39 
Offline
Kecka

Registrován: 28 říj 2016, 20:03
Příspěvky: 33
Has thanked: 1 time
Been thanked: 6 times
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 333 krát ]
Nahoru
 Profil  
 
PříspěvekNapsal: 12 dub 2018, 22:31 
Offline
Kecka

Registrován: 28 říj 2016, 20:03
Příspěvky: 33
Has thanked: 1 time
Been thanked: 6 times
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


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 10 ] 

Všechny časy jsou v UTC + 1 hodina


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz