RAM BASICChcą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
|