Tajemnice ATARI

RAM BASIC

    Na temat samouruchamiania programów odczytywanych z taśmy magnetofonowej pisano już nieraz (tematem tym zajmował się zwłaszcza "Bajtek"). Wszystkie rozwiązania jednak zakładały albo wczytywanie programu Basic "Bootem" albo też zamiast instrukcji LOAD/RUN używano krótkiej procedurki maszynowej. Cały problem tkwi, jak wiadomo, w specyfice interpretera języka Basic, który rozkazem SAVE zapisuje programy wyłącznie z długimi przerwami międzyblokowymi - i tylko takie potrafi odczytać przy pomocy RUN i LOAD.

   Chcąc temu jakoś zaradzić napisałem programik "RAMBAS" (listing nr 1). Dokonuje on zmiany w interpreterze Basicu, pozwalając instrukcjami SAVE, RUN i LOAD zapisywać i odczytywać dane z krótkimi przerwami miedzyblokowymi. Działanie jego jest proste - interpreter Basicu przepisywany jest z ROM do RAM, po czym dokonywane są w nim niezbędne zmiany. Standardowy interpreter jest odłączany (poprzez ustawienie bitu 1 w komórce PORTB - 54017). W związku z tym, po uruchomieniu programu, należy uważnie posługiwać się instrukcją POKE, bowiem obszar interpretera ($A000-$C000) nie jest już chroniony przed zmianami.

   Program nr 1 jest przeznaczony dla osób posługujących się COS-em i programami mu podobnymi. Powinien być używany jako komenda zewnętrzna. Po wczytaniu (oczywiście musi być podłączony interpreter Atari Basic) program zadaje pytanie "Prompt ???". Użytkownik ma w ten sposób możliwość zmiany znaku zachęty (prompt) - pytajnik bowiem, z niewiadomych przyczyn, niektórym osobom nie odpowiada. Jako odpowiedź wystarczy podać nowy znak (np. #). Naciśnięcie "pustego" klawisza RETURN powoduje pozostawienie poprzedniego znaku.

   Po tym program samoczynnie umieści się nad MEMLO, "uodporni" na Reset i przekaże sterowanie do COS - od tej chwili będzie stale rezydował w pamięci. Swą obecność sygnalizuje podwyższoną jasnością ramki obrazu. Jeżeli jednak ktoś zapragnie powrócić do standardowego interpretera - wystarczy po prostu nacisnąć jednocześnie RESET i OPTION. Atari Basic zostanie podłączony, a ramka ekranu znów będzie miała normalny, czarny kolor. Programu wszelako nie da się odinstalować. Jeżeli po nim uruchomiono jeszcze inne nakładki (np. XLF-a). I jeszcze jedno: gdy znudzi nam się nowy prompt - wystarczy jeszcze raz uruchomić RAMBASa - program zapyta nas wtedy o "Nowy prompt". Postąpić wtedy należy tak Jak przy uruchamianiu programu.

   Program nr 2 jest propozycją loadera programów Basic wykorzystującego przedstawioną wyżej technikę. W liniach DATA zawarta jest nieco uproszczona wersja RAMBASa - nierelokowalna, nieodporna na Reset. Prompt można zmienić jedynie instrukcją
POKE 45887,ASC('?')
zamiast pytajnika wstawiając nowy znak zachęty.

   Wszystkim zainteresowanym działaniem programu polecam samodzielną jego analizę połączoną z lekturą książki Wojciecha Zientary "Mapa pamięci Atari XL/XE - procedury interpretera Basica" wydanej przez SOETO.

1000 REM *--------------------------*
1002 REM : RAM-BASIC                :
1004 REM :  autor: Maciej Czarnota  :
1006 REM : (c) 1992 Tajemnice ATARI :
1008 REM *--------------------------*
1010 DATA ffff00905c92a2b9a0902042c6
1020 DATA adf803f00aa2e6a0902042c668
1030 DATA 6860ad01d3c9fdf00ca2d6a090
1040 DATA 208f90207190d0eaa9a085cca9
1050 DATA 7085ce207890a9ff8d01d3a970
1060 DATA 85cca9a085ce207890ade70218
1070 DATA 694d8d70bb8d01bbade8026900
1080 DATA 8d71bb8d02bba2dba090208f90
1090 DATA a201b50c9d0291bde702950cca
1100 DATA 10f3a2fca0904c42c6a00084cd
1110 DATA 84cba21fb1cb91cdc8d0f9e6cc
1120 DATA e6ceca10f2602042c6a9058d42
1130 DATA 03a9028d4803a2008e4903a905
1140 DATA 8d4503a9808d44032056e4ad80
1150 DATA 05c99bf0038d3fb36052414d42
1160 DATA 41532076657220332e30206279
1170 DATA 204d2e437a61726e6f74619b4e
1180 DATA 6f77792070726f6d7074203f3f
1190 DATA 3f9b4e6965206d612041746172
1200 DATA 692042617369632021219b4f2e
1210 DATA 6b2e9b200191ad1fd0c903d02e
1220 DATA ad6f91c50cd01ead7091c50dd0
1230 DATA 17ad0291850cad0391850dad6f
1240 DATA 918de702ad70918de80260ae6d
1250 DATA 91ac6e912042c6ad6b918de702
1260 DATA ad6c918de802a9ff8d01d3a902
1270 DATA 8dc8026048a00784c120afbca9
1280 DATA 0c202bbda00384c068a0802002
1290 DATA bca90760009291739101910000
1300 DATA 4e6965206d6f6765206f64696e
1310 DATA 7374616c6f7761632052414d42
1320 DATA 415341219b00200090a9608d93
1330 DATA 91a90085cfade70285d4ade802
1340 DATA 85d538a90185d2e5d485d0a991
1350 DATA 85d3e5d585d1a000f0033866cf
1360 DATA a5d2c993a5d3e9919014ade702
1370 DATA 1869038d0070ade80269008d01
1380 DATA 706c007024cf70633027b1d285
1390 DATA ce91d4205092aaf0cdc920f017
1400 DATA c940f0c8c960f0c4290dc908f0
1410 DATA be90418a291fc909f03ab1d2c8
1420 DATA c901b1d288e9919012b1d2c8c9
1430 DATA 93b1d288e991b006a5d0a6d190
1440 DATA 0724cf3090a900aa85d686d738
1450 DATA b1d2e5d691d4205092b1d2e5d7
1460 DATA 4c4892b1d291d42050924cc191
1470 DATA e6d2d002e6d3e6d4d002e6d560
1480 DATA e002e1029391


0 REM *---,-------------------------*
2 REM : Krotkie przerwy w SAVE/LOAD :
4 REM :   autor: Maciej Czarnota    :
6 REM :  (c) 1992 Tajemnice ATARI   :
8 REM *-----------------------------*
10 U=1536:A=U:TRAP 30
20 READ B:POKE A,B:A=A+1:GOTO 20
30 A=USR(U)
110 DATA 104,169,160,133,204,169,112
120 DATA 133,206,32,45,6,169,255,141
130 DATA 1,211,169,112,133,204,169
140 DATA 160,133,206,32,45,6,169,68
150 DATA 141,112,187,141,1,187,169,6
160 DATA 141,113,187,141,2,187,96,160
170 DATA 0,132,205,132,203,162,31,177
180 DATA 203,145,205,200,208,249,230
190 DATA 204,230,206,202,16,242,96,72
200 DATA 160,7,132,193,32,175,188,169
210 DATA 12,32,43,189,160,3,132,192
220 DATA 104,160,128,32,2,188,169,7,96


Maciej Czarnota



Powrót na start | Powrót do spisu treści | Powrót na stronę główną

Pixel 2001