Tak jak to obiecałem w poprzedniej części tego artykułu, dzisiaj zajmę się zabezpieczaniem i odbezpieczaniem programów w BASIC-u.Na początek pokażę chyba najprostszy sposób, który wymaga tylko wpisania jednej linii na samym początku programu. Czasami, gdy listowaliście jakiś program, waszym oczom nagle ukazywał się text:
?SYNTAX ERROR
To było dziwne zwłaszcza, gdy program uruchamiał się bez żadnych problemów. Ktoś był bardzo genialny i za pomocą instrukcji REM przerywał wyświetlanie listingu. Po krótkim przyjrzeniu się takiej linii doszedłem do wniosku, że aby kontynuować wyświetlanie programu, należy wybrać jedną z poniższych możliwości:
1 – jeżeli np. error wyskoczył nam w linii 10 to należy wpisać LIST 11-
2 – skasować linię 10
3 – wprowadzić nową linię 10 (najlepiej 10 REM text)
Czasami się zdarza, że programista wklepał więcej takich linii, aby denerwować innych. Jeżeli nie masz tak zabezpieczonego programu, to uruchom grę MONOPOLY z kasety LOGICZNE nr 7 lub STOLICE KRAJOW EUROPY z EDUKACYJNYCH nr 1. Sorry za to, ale inaczej tego nie da się pokazać.
A jak samemu uzyskać taki bajer? Kiedy listujemy taki program, to wyskakuje najczęściej taka linia:
10 REM ?SYNTAX ERROR READY.
Dziwne. Po REM nic nie ma, a komputer wyświetla błąd. Okazuje się, że jest to banalnie proste. Należy wpisać:
10 REM i po REM nacisnąć SHIFT+L, a potem RETURN.
Teraz wylistuj program. Świetne! Listing się zatrzymuje tak jak to opisywałem! No, to ten problem mamy z głowy.
Programiści stosują również inny trik. Wstawiają do linii kilka znaków DEL i podczas listingu linia się kasuje. Takie coś można zrobić bez problemu. Należy jednak postępować tak jak to opiszę:
Wpisujemy linię:
10 print"rambo ehehe!":rem"
i po tym cudzysłowie wpisujemy jeszcze raz cudzysłów, wciskamy klawisz INST/DEL, aby kursor był po tym pozostawionym cudzysłowie i wciskamy CONTROL+9, a potem wciskamy kilkanaście razy klawisz T (zależy powiedzmy od ilości znaków przed instrukcją REM) i na koniec klawisz RETURN, lub naciskamy x-razy klawisz SHIFT+INST/DEL, a potem x-razy samo INST/DEL – wyjdzie na to samo. Teraz wylistujmy nasz program. I co? Z naszej linii 10 zostaną jakieś śmieci (zależy od ilości znaczka T w rewersie po instrukcji REM). Jednak tego sposobu radzę używać tylko przy gotowych liniach, bo zmiana takiej linii jest bardzo trudna. I zawsze można podejrzeć, co jest w programie, zaglądając do monitora języka maszynowego. Jest jeszcze jeden sposób na zabezpieczenie linii przed jej modyfikacją. Jest to wstawienie znaczka odpowiadającego klawiszowi RETURN. Właściwie to się nazywa SHIFT RETURN, które powoduje, że wszystkie znaki po tym są niewidoczne, a zmiana takowej linii jest bardzo trudna. Jak to zrobić? A po prostu znowu, nawet w instrukcji PRINT, po cudzysłowie wklepać M w rewersie. No i to by było na tyle jeżeli chodzi o zabezpieczanie programów w BASIC-u. Dodam jeszcze, że aby w 99% zabezpieczyć taki program, to należy go skompilować, powiedzmy ASTRO COMPILEREM itp.
Skoro już jestem przy tych dziwacznych znaczkach w rewersie, to postanowiłem przedstawić Wam kilka ciekawych sztuczek, gdyż obiecałem w poprzedniej części TAJNIKÓW BASIC-a, że nie tylko będę gadał o zabezpieczaniu, ale jeszcze o czymś innym, więc macie co chcecie! Tradycyjnie, aby to działało, należy wklepać linię:
10 PRINT" wklepujemy drugi cudzysłów, wciskamy INST/DEL, potem CONTROL+9 i wciskamy klawisz H.
Pojawi się tam jakiś znaczek w rewersie. Wpiszmy RUN. Hmmmm… Rozumiem Wasze zniecierpliwienie, gdyż nie wiecie, co się stało… Wiecie, że klawiszami C=+SHIFT można zmieniać zestawy fontów na małe, lub duże. A spróbujcie teraz to zrobić. I co? Nie działa! Jeżeli działa, to popełniliście błąd przy wpisywaniu. Pamiętajcie, że ma to być H w rewersie. Natomiast I w rewersie daje odwrotny rezultat! Po prostu odblokowuje tą kombinację. Teraz inne bajery. Pamiętacie, że aby zmienić zestawy fontów należy wpisywać:
POKE53272,21 lub 23.
A teraz można to robić za pomocą 1 znaczka! Tym razem jest to N w rewersie, oraz znaczek w rewersie uzyskany po kombinacji SHIFT+N (ta ukośna linia). Ofkoz ma to być zawsze w instrukcji PRINT! Ostatnie dwie kombinacje to w rewersie znak PIK (kto gra w karty, ten wie), czyli SHIFT+A – to daje nam zmianę koloru następnych liter, a E w rewersie daje nam zmianę jak wyżej, tyle że znaków. Sprytne co? A… i obiecałem, że napiszę jakieś POKE! No, bez tego ten artykuł byłby pusty (?), hehe! A oto POKE na blokadę wyświetlania listingu:
POKE775,0 POKE775,167 przywraca normalny stan.
Co przez to otrzymujemy? Prawdopodobnie zmieniamy wektor skoku (nie jestem pewny) i zamiast skoczyć do instrukcji LIST, komputer chyba skacze do ciepłego startu. Jednak ta instrukcja działa dopiero po jej wykonaniu, więc nie myślcie, że jeżeli macie ją w programie, to nikt nie wylistuje waszego programu. To POKE jest np. po to, gdy mamy jakieś rodzeństwo i nie chcemy, aby podejrzało nasze wypociny. Zresztą teraz czasy się zmieniły i rodzeństwo najczęściej zlewa na starszego brata, który ma C64 (u mnie tak nie jest, bo nie mam młodszego rodzeństwa, hehe). No, ale tak na poważnie to należy się zastanowić, co by tu Wam zaserwować w kolejnej, czwartej już części TAJNIKÓW BASIC-a. Może potraktuję to jako niespodziankę i nie będę teraz zdradzał tajemnicy? A na razie to do zobaczenia w kolejnym moim przedziwnym, zwariowanym, ale realnym artykule.
H.M.MURDOCK/TROPYX/OXYGEN64
Ps. Ten artykuł napisałem przy wykorzystaniu książki „Programować może każdy” i oczywiście własnych doświadczeń!
Jest to kolejna część cyklu artykułów o programowaniu w BASIC-u na C64.
Tekst napisałem na przełomie 1999/2000 r. przy użyciu Commodore 64 oraz edytora tekstowego do magazynu dyskowego Inverse. Ukazał się on w marcu 2000 r. w magazynie Inverse #7/Oxygen64 w dziale Inne. Oryginalną treść poddałem obróbce technicznej z uwzględnieniem poprawek interpunkcyjnych.