OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 19.04.2024, 07:45

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 11 ] 
Autor Zpráva
 Předmět příspěvku: Podivná chyba v BASIC MZ 1Z-013B
PříspěvekNapsal: 06.09.2023, 10:22 
Offline
Kecálek

Registrován: 04.02.2016, 10:21
Příspěvky: 91
Has thanked: 7 times
Been thanked: 18 times
Ahoj, tak jsem si zase po nějaké době hrál a narazil na tohle:
Kód:
9430 CLS
9440 COLOR,,,1:CURSOR0,7:PRINT" -------------------------------------"
9450 FORI=1TO9:PRINT"|";SPC(37);"|"
9460 NEXT:PRINT" -------------------------------------"
9470 CURSOR10,10:PRINT"... NEJAKY TEXT "
9480 CURSOR0,22:PRIN "press any key"
9490 GETG$:IFG$=""THEN9490
9500 COLOR,,,0:CURSOR0,11:PRINTSPC(220)
9510 GOTO 9440

Při prvním běhu mi kód udělá správný obdélník, po použití PRINTSPC(x) mi to na screenu vymezí několik řádků, které se pak přeskakují a do nich to netiskne. Tušíte někdo, proč to tak je ? Čekal jsem, že použiju SPC(x) pro smazání části screenu, ale zjevně to nebude použitelné...


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Podivná chyba v BASIC MZ 1Z-013B
PříspěvekNapsal: 06.09.2023, 21:32 
Offline
Pan Štábní

Registrován: 11.11.2013, 10:29
Příspěvky: 1200
Has thanked: 363 times
Been thanked: 304 times
Myslis tohle:
Příloha:
2023-09-06_21-08-15.png
2023-09-06_21-08-15.png [ 13.59 KiB | Zobrazeno 1670 krát ]
Příloha:
2023-09-06_21-08-43.png
2023-09-06_21-08-43.png [ 4.32 KiB | Zobrazeno 1670 krát ]
Příloha:
2023-09-06_21-08-52.png
2023-09-06_21-08-52.png [ 4.53 KiB | Zobrazeno 1670 krát ]

Kdyz tam das
Kód:
9500 COLOR,,,0:CURSOR1,11:PRINTSPC(37)
tak to bude fungovat. Vetsi oblast muzes nulovat cyklem.
Souvisi to s prepsanim posledniho znaku na radku na dalsi radek za tim. Tim se rozsiri aktualni radek na dvojnasobnou delku, ale porad zustava jen jeden. Nekde to ma asi sve limity. Ve zdrojaku se to resi bufferem o 25 bytech, ktery to navzajem propojuje. Presne podrobnosti by asi chtely vydedukovat ze zdrojoveho souboru. v BASICu MZ-1Z016 by to mohlo byt tady:
Kód:
1385   0615             ;
1386   0615             ;   Ukazatel na flagy HL pro spojovani radku (H=radek)
1387   0615             ;
1388   0615 5C          A0615:   LD   E,H
1389   0616 16 00          LD   D,0
1390   0618 21 A9 13       LD   HL,S13A9   ;tab. pole flagu
1391   061B 19             ADD   HL,DE
1392   061C C9             RET

3358   13A9 00 00 00 00 S13A9:   DS   26, 0      ;pole pro spojovaci flagy radku
3358   13AD 00 00 00 00
a kod okolo.
Hodne zdaru ;-)

_________________
Sharp MZ-800++, MZ-1500++, MZ-2500++, SM-B-80T, MK-14_replica, HP-85, 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ředmět příspěvku: Re: Podivná chyba v BASIC MZ 1Z-013B
PříspěvekNapsal: 07.09.2023, 08:30 
Offline
Kecálek

Registrován: 04.02.2016, 10:21
Příspěvky: 91
Has thanked: 7 times
Been thanked: 18 times
Jj, to je ono, mazání části screenu přes SPC() mi přišlo elegantnější a rychlejší, ale zjevně to nebude to pravé ořechové... Přemýšlel jsem, jestli je to bug nebo vlastnost, ale vypadá to jako vlastnost, i když mně nepochopitelná...


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Podivná chyba v BASIC MZ 1Z-013B
PříspěvekNapsal: 07.09.2023, 08:40 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 24.05.2018, 22:32
Příspěvky: 1975
Bydliště: Most, Praha
Has thanked: 870 times
Been thanked: 699 times
Basic spojuje řádky kvůli možnosti editace dlouhých řádků, např. řádky programu. Když na konci nemá CR (v grafickém režimu má na to paralelní textový buffer), ví že řádek pokračuje a může tak dělat operace s dlouhým řádkem - odsouvání a přisouvání textu a hlavně zpracování řádku textu. Díky tomu je možné editovat dlouhé řádky programu přímo na obrazovce, nepotřebuje speciální editační řádek jako Spectrum.

_________________
i++ (INC) increment
i-- (DEC) decrement
i@@ (EXC) excrement


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Podivná chyba v BASIC MZ 1Z-013B
PříspěvekNapsal: 07.09.2023, 08:47 
Offline
Kecálek

Registrován: 04.02.2016, 10:21
Příspěvky: 91
Has thanked: 7 times
Been thanked: 18 times
Aha, spojitost s dlouhými řádky mne skutečně nenapadla. S tímhle už to trochu smysl dává. Díky.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Podivná chyba v BASIC MZ 1Z-013B
PříspěvekNapsal: 10.09.2023, 19:57 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 09.10.2013, 19:04
Příspěvky: 1404
Has thanked: 130 times
Been thanked: 71 times
A nie je v tomto BASICu aj SPACE$()? Toto by to mohlo vyriešiť?

_________________
Sharp MZ-821
Milsa MZ-841


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Podivná chyba v BASIC MZ 1Z-013B
PříspěvekNapsal: 11.09.2023, 14:15 
Offline
Pan Štábní

Registrován: 11.11.2013, 10:29
Příspěvky: 1200
Has thanked: 363 times
Been thanked: 304 times
To je ale to same, ne?

_________________
Sharp MZ-800++, MZ-1500++, MZ-2500++, SM-B-80T, MK-14_replica, HP-85, 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ředmět příspěvku: Re: Podivná chyba v BASIC MZ 1Z-013B
PříspěvekNapsal: 11.09.2023, 14:25 
Offline
Kecálek

Registrován: 04.02.2016, 10:21
Příspěvky: 91
Has thanked: 7 times
Been thanked: 18 times
SPACE$ v S-BASICu neexistuje, viz screenshot. Jsou to pak zbytečné diskuse, když si to nezkusíte, nevyriešitě...
Příloha:
Poznámka: spaces
spaces.png
spaces.png [ 9.97 KiB | Zobrazeno 1488 krát ]


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Podivná chyba v BASIC MZ 1Z-013B
PříspěvekNapsal: 11.09.2023, 21:29 
Offline
Pan Štábní

Registrován: 11.11.2013, 10:29
Příspěvky: 1200
Has thanked: 363 times
Been thanked: 304 times
Klidek, nemusis se hned zlobit. Vim, ze jsi myslel BASIC pro MZ-700. Funkce SPC() a SPACE$() jsou obe definovane v BASICu pro MZ-800. Tak drobna chybicka ;-) Ona je mi ta MZ-800 tak nejak prece jen blizsi.

_________________
Sharp MZ-800++, MZ-1500++, MZ-2500++, SM-B-80T, MK-14_replica, HP-85, 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ředmět příspěvku: Re: Podivná chyba v BASIC MZ 1Z-013B
PříspěvekNapsal: 11.09.2023, 23:12 
Offline
Kecálek

Registrován: 04.02.2016, 10:21
Příspěvky: 91
Has thanked: 7 times
Been thanked: 18 times
V pohodě, jen jste to oba mohli prubnout a vyřešeno. Já zkouším převod jedné simulace, ale ona se asi nevleze ani do toho S-Basicu...


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Podivná chyba v BASIC MZ 1Z-013B
PříspěvekNapsal: 14.09.2023, 20:29 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 09.10.2013, 19:04
Příspěvky: 1404
Has thanked: 130 times
Been thanked: 71 times
Ja som to neskúsil, lebo som nesedel pri počítači. Nie vždy je taká možnosť a myslel som, že v 700 to je. Chcel som len pomôcť. Pre doplnenie, SPC je tuším posunutie a SPACE$ vytvorí reťazec s medzerami.

_________________
Sharp MZ-821
Milsa MZ-841


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ů: 11 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 5 návštevní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