RAMDiskPrócz standardu modelu 130XE istnieje wiele innych roszerzeń pamięci, montowanych do ATARI. Często oferują one więcej niż 64K w dodatkowych bankach, jednak niewiele programów potrafi wykorzystać tę pamięć. Najpowszechniejszym jej zastosowaniem jest założenie w niej ramdysku, niestety DOS 2.5 potrafi to zrobić tylko w 130XE, a COS w ogóle. Prezentowany program dostosowuje się do każdego typu rozszerzenia pamięci - z pewnym jednak zastrzeżeniem. Otóż banki muszą mieć po 16K i być podłączane w obszar $4000-$7FFF poprzez zmianę bitów 2-6 rejestru PORTB (adres $D301). Jest to standard, któremu jest wierna większość rozwiązań, w tym 130XE. Na początku trzeba zadbać o sposób, w jaki zmiany stanu PORTB wpływają na banki pamięci. Jest to zadaniem programu CHKMEM.COM (listing trzeci). Sprawdza on wszelkie możliwe kombinacje bitów i patrzy, czy ujawniła się jakaś dodatkowa pamięć. Wyniki badań są obwieszczane światu za pomocą kodów literowych, których znaczenie chciałbym wyjaśnić dokładnie - może się to komuś przydać. Rejestr PORTB jest od czasów ATARI 800XL przeznaczony do zarządzania pamięcią. Umieszczone w komputerze 64K RAM wypełnia całą przestrzeń, którą jest w stanie zaadresować procesor. Tak więc część tej pamięci musi pokrywać się adresami z pamięcią ROM, w której zapisany jest system operacyjny, interpreter ATARI BASIC i program testujący (SELF TEST). W celu skorzystania z całej pamięci RAM trzeba mieć możliwość wyłączenia ROM-ów. Temu celowi służą odpowiednio bity 0, 1 i 7 PORTB. Skasowanie bitu 0 powoduje odłączenie systemu, ustawienie tego bitu na 1 - przyłączenie. Dla pozostałych dwu obszarów jest odwrotnie: 1 - odłącza, 0 - przyłącza. Tymi bitami zarządza system operacyjny. Do sterowania dodatkowymi bankami zostają bity 2-6. Po włączeniu komputera wszystkie są ustawione na 1 i wtedy w obszarze $4000-$7FFF jest widoczny podstawowy bank pamięci. Inne wartości mogą już spowodować podstawienie w ten obszar jednego z dodatkowych banków. Przyporządkowanie kodów znakowych kombinacjom bitów przedstawia tabelka.
Ponieważ dodatkowych banków jest przeważnie mniej niż możliwych kombinacji bitów, często dostęp do danego banku jest możliwy za pomocą kilku różnych kodów. CHKMEM wykrywa takie sytuacje i wyświetla obok numeru porządkowego banku wszystkie kody dające dostęp do niego, Kody, które się nie pojawiły obok żadnego banku powodują podłączenie banku podstawowego. CHKMEM spełnia jeszcze dwie dodatkowe funkcje: testuje rozszerzoną pamięć będąc w ten sposób dopełnieniem SELF TEST-u oraz może wygenerować standardowy plik konfiguracyjny dla sterownika ramdysku. Obsługę ramdysku zapewnia program RAMDISK.COM (listing pierwszy). W czasie instalacji odczytuje on plik testowy RAMDISK.SET, który określa konfigurację sterownika. Plik .SET można przygotować za pomocą dowolnego edytora. Pierwsza linia tego pliku określa nazwę i numer, jaki chcemy nadać ramdyskowi. Może to być D8:, może też i coś innego. Sterownik jest w stanie wykryć fakt obecności w systemie innego urządzenia o tej samej nazwie i nie odcina dostępu do niego - jest "przezroczysty" dla wszystkich odwołań do innego numeru urządzenia niż jego własny. Druga linia zawiera kody banków, które sterownik ma wykorzystywać. Nie muszą to być, oczywiście wszystkie banki, część z nich można pozostawić wolną do innych celów. Należy uważać, aby przez przypadek nie podać dwu kodów, dających dostęp do tego samego banku, a tym bardziej nie podać kodu banku podstawowego! Nie jest to wykrywane, a spowoduje zawieszenie komputera. Z punktu widzenia użytkownika ramdysk jest dodatkową stacją dysków i potrafi wykonać wszystkie jej komendy. Małe ostrzeżenie - komendy NOTE i POINT operują nie kolejnymi numerami sektorów, tylko dość dziwnymi kilkunastotysięcznymi liczbami. Nie jest to oznaką żadnych błędów, po prostu dzięki temu program jest krótszy i szybszy. Sterownik ramdysku instaluje się w pamięci jako nakładka, zajmując około 6 stron. Pojemność katalogu wynosi 32 wpisy. MEMLO przed instalacją musi być na tyle niskie, aby cały sterownik zmieścił się poniżej adresu $4000. Plik konfiguracyjny jest odczytywany z tego samego urządzenia, z którego wczytywano RAMDISK.COM. Powtórne uruchomienie programu usuwa sterownik z pamięci, o ile nie został przygnieciony innymi nakładkami. W czasie przełączania banków sterownik nie dezaktywuje przerwań. Może to spowodować zawieszenie się komputera, o ile w tym czasie działają jakieś przerwania, a ich procedury obsługi leżą w obszarze $4000-$7FFF. Taka sytuacja może zajść przy korzystaniu z niektórych programów użytkowych. Wtedy trzeba dołączyć (np. za pomocą programu APPEND) do programu RAMDISK.COM plik RAMINTR.OBJ (listing drugi). Zawiera on dodatkowy kod, obsługujący włączanie i wyłączanie przerwań w czasie transmisji. Ponieważ nie można rozpoznać, czy przerwanie DLI było aktywne przed odwołaniem się do ramdysku, na wszelki wypadek jest ono wyłączane przy powrocie z jego procedury obsługi. Gdyby było to dla kogoś niewygodne, niech zmieni 19 bajt pliku RAMINTR.OBJ z $40 na $C0 i tak spreparowany plik dołączy do RAMDISK.COM - wtedy DLI będzie zawsze uaktywniane po skorzystaniu z ramdysku. W programach wykorzystałem kilka procedur autorstwa Janusza B. Wiśniewskiego. O przerwaniach można więcej przeczytać w jego artykule w TA 10/92. 1000 REM *--------------------------* 1002 REM : RAMDisk : 1004 REM : autor: Wojciech Palacz : 1006 REM : (c) 1993 Tajemnice ATARI : 1008 REM *--------------------------* 1010 DATA ffff0090b090a005980a0a0a0a 1020 DATA aabd4003100c88d0f2ad0103d0 1030 DATA 0ea901d00aa8b91a038da290bd 1040 DATA 410309308da390a200203e90a2 1050 DATA 01203e90a92da21e9d6c90cad0 1060 DATA faa201a000ca300ab96c90c8c9 1070 DATA 9bd0f8f0f38aa2009d48031898 1080 DATA 696c9d4403a9009d490369909d 1090 DATA 4503a9099d42034c56e49b5261 1100 DATA 6d4469736b20312e3020627920 1110 DATA 576f6a63696563682050616c61 1120 DATA 637a9bfd4572726f7220647572 1130 DATA 696e672072656164696e672044 1140 DATA 313a52414d4449534b2e534554 1150 DATA 9be202e30200900080db852000 1160 DATA 00add6858de702add7858de802 1170 DATA a22fa9859ded85ca10fa20f584 1180 DATA a244acd485add58520bcee9009 1190 DATA 30079d1b03989d1a0360a421c0 1200 DATA 00f00238608dd9858edc858a4a 1210 DATA 6ddc854a4aaaad01d38dd88518 1220 DATA 60200000200000aed8858e01d3 1230 DATA 60200000200000a0a060203380 1240 DATA 90034c64808edd85209080aedd 1250 DATA 85989ded85d001c84c578020eb 1260 DATA 40aedd85a9119dee85a0016020 1270 DATA 2d85b069a52a29fec906f0e520 1280 DATA c640aedd85a9009df0859df185 1290 DATA a9fd9def859df285989dee85a5 1300 DATA 2a901ac908d03fa000b90343f0 1310 DATA 08206241d0f6a0a960989dee85 1320 DATA 4c0040c904f019b903431003a0 1330 DATA a760a52ac908f018c909f01ac9 1340 DATA 0cf003a0a860b90443f005a9ff 1350 DATA 9df285a000602083844c104020 1360 DATA bc84f0f29df085ad01d39df185 1370 DATA 20b584b906439def859df285a0 1380 DATA 006020338090034c6480bced85 1390 DATA d02dbdef85ddf285b021c9fdd0 1400 DATA 0320db83feef85bdf1858d01d3 1410 DATA bdf0858d5281bcef85b90040a0 1420 DATA 014c5780a088d0f930f720b584 1430 DATA feee85bcee85c012f008901fc0 1440 DATA 91905cb0e520d640b01ca9009d 1450 DATA ee8520bc8420b584aee285ade1 1460 DATA 85202340b9b941a0014c5780a9 1470 DATA 809dee85a9008de1858de28520 1480 DATA d58120f584200685f0128db181 1490 DATA adff40d0f3eee185d0eeeee285 1500 DATA d0e920b58420d581aee285ade1 1510 DATA 85204b40b94b41a0014c5780a2 1520 DATA 02bdde85bce3859de385989dde 1530 DATA 85ca10f06020338090034c6480 1540 DATA bced85d035bdef85c9fdd011bd 1550 DATA f285c9fff0072026849005b01d 1560 DATA 20db83feef85bdf1858d01d3bd 1570 DATA f0858d2482bcef85add9859900 1580 DATA 40a0014c57803002a087602033 1590 DATA 8090034c648020b584bded85d0 1600 DATA 03204c82a9859ded85a0014c57 1610 DATA 80bdef85ddf2859006bcee8599 1620 DATA 06436020338090034c6480202d 1630 DATA 85b00f20c640b00aa901be0343 1640 DATA 1002a9a7a84c5780a000a90099 1650 DATA 0343206241d0f620f584200685 1660 DATA f0718d98828d9b82a9008dfe40 1670 DATA 8dff40f0eb9848a00a20b14068 1680 DATA a8204485b0582061404c578020 1690 DATA 338090034c648020b584a522c9 1700 DATA fef0b7c925f077c926f056202d 1710 DATA 85b034a522c920f0c820c640b0 1720 DATA 29a522c921f00cc923f026c924 1730 DATA f026a0a8d017b9034330152083 1740 DATA 84a90099034320cd4090ee20f5 1750 DATA 84a0014c5780a0a7d0f9a981d0 1760 DATA 02a9018deb41adeb4199034320 1770 DATA cd4090f5b0e1bced85d020acdc 1780 DATA 85bdef85994e03bdf085994d03 1790 DATA bdf185994c034c02838edd85bc 1800 DATA ed85f004a0abd0ba204c82acdc 1810 DATA 85a200bd1d86f066d94c03f003 1820 DATA e8d0f3b94d033054c9409050e0 1830 DATA 00d004c94490488d7e83b94c03 1840 DATA 8d01d3aedd85adff40f037100c 1850 DATA a9fdd94e03902e9df285d01420 1860 DATA b584bcee85b90643acdc85d94e 1870 DATA 0390189df285b94e039def85b9 1880 DATA 4d039df085b94c039df1854c02 1890 DATA 83a0a64c5780b94c03194d03d0 1900 DATA f3b94e03c9fdd0ecaedd85bdf0 1910 DATA 85f0cfa9ff9df285d0c8a9ff9d 1920 DATA ef85bcee85bdf085f0308df683 1930 DATA 8dfc83bdf1858d01d3adff409d 1940 DATA f185adfe409df0858d0b84bdf1 1950 DATA 858d01d3adff40300920b584b9 1960 DATA 06439df2856020b584b905439d 1970 DATA f185b90443d0d7200685d004a0 1980 DATA a238608d3484acff40d0ef8d3c 1990 DATA 84eeff40a9ff9def85a9009df2 2000 DATA 85bdf085f0238d5d848d6384bd 2010 DATA f1858d01d3adde858dfe40addf 2020 DATA 858dff409df185adde859df085 2030 DATA 186020b584bcee85adde859904 2040 DATA 43addf85990543d0e1b905438d 2050 DATA 9b84b90443f0278da1848da584 2060 DATA 8dad848db084a9008d01d3adfe 2070 DATA 4048adff408d9b84a9008dfe40 2080 DATA 8dff40684c8c84ad1d868d01d3 2090 DATA 60a9008de7848de1858de285b9 2100 DATA 05438de184b90443f01f8de784 2110 DATA 8ded84eee185d003eee285a900 2120 DATA 8d01d3adff408de184adfe404c 2130 DATA d084ade78460a9438dde85a900 2140 DATA 8de085ad1d868ddf8560addf85 2150 DATA f021eede851013a9408dde85ee 2160 DATA e085ace085b91d868ddf85f009 2170 DATA addf858d01d3adde8560add885 2180 DATA 8d01d3a002b124c93af0098810 2190 DATA f7a0a5384cb584add8858d01d3 2200 DATA a20ba9209de085cad0fac8b124 2210 DATA c92ed008e008b033a208d0f1c9 2220 DATA 3fd004a900f014c92af010c941 2230 DATA 9004c95b9008c9309017c93ab0 2240 DATA 139de185e8e00cf00be008d0c9 2250 DATA c8b124c92ef0c2a200bde185c9 2260 DATA 2af01ce8e00bd0f4ade185c920 2270 DATA f09720b584a20abde1859ddc41 2280 DATA ca10f71860a9009de185e8e008 2290 DATA f0d3e00bf0dbd0f20066802e82 2300 DATA 2181e7815a82b182c8853d8600 2310 DATA 0000000088db89a20abddc41d0 2320 DATA 03a0a560ca10f5202a41a90199 2330 DATA 0343a900990443990543990643 2340 DATA a00060488a48204841a20abddc 2350 DATA 419dbb41ca10f7a220b9034310 2360 DATA 02a22a8eb941a00068aa682068 2370 DATA 41a00060a004206841adea41c9 2380 DATA 10a9209002a92b8dce41a08060 2390 DATA a00a20b14020c640b0458cfd41 2400 DATA b903431003a0a760a01520b140 2410 DATA acfd41204841a20abde741f003 2420 DATA 9ddc41ca10f520c640b008ccfd 2430 DATA 41f003a0ae60acfd41202a41a0 2440 DATA 1520b140acfd4120cd4090bda0 2450 DATA 0160a20abddc4148b9e7419ddc 2460 DATA 416899e74188ca10ee60a00020 2470 DATA ff409008206241d0f6a0aa3860 2480 DATA a000b90743d007206241d0f638 2490 DATA 60a9009907431860a00020ff40 2500 DATA a900b002a901990743206241d0 2510 DATA ef60b90343f023a200bddc41f0 2520 DATA 05d90042d017e003b00abde441 2530 DATA f005d90043d009c8e8e008d0e2 2540 DATA 18901b38b019a200bddc419900 2550 DATA 42e003b006bde441990043e8c8 2560 DATA e008d0ea889829f8a860a200b9 2570 DATA 00429ddc41e003b006b900439d 2580 DATA e441e8c8e008d0eaf0e0981869 2590 DATA 08a8608de7418ee841f8a9008d 2600 DATA e9418dea41a2100ee7412ee841 2610 DATA ade9416de9418de941adea416d 2620 DATA ea418dea41cad0e5d8c9109008 2630 DATA a9998de9418dea4120b041ade9 2640 DATA 41484a4a4a4a20b04168290f09 2650 DATA 3099c741c860202046494c454e 2660 DATA 414d45455854203030309b3030 2670 DATA 30204652454520534543544f52 2680 DATA 539bb1908c9448616e646c6572 2690 DATA 20696e7374616c6c65642e9b52 2700 DATA 65666f726d6174206f6c642072 2710 DATA 616d6469736b3f2028592f4e29 2720 DATA 9b48616e646c65722072656d6f 2730 DATA 7665642e9b43616e2774207265 2740 DATA 6d6f76652068616e646c657221 2750 DATA fd9b4d454d4c4f20746f6f2068 2760 DATA 69676821fd9b53796e74617820 2770 DATA 6572726f7220696e2073657475 2780 DATA 702066696c6521fd9b20c091a9 2790 DATA c3cde702a939ede802b008a207 2800 DATA 203e906c0a00208a92205893a5 2810 DATA 0c8d0180a50d8d028020a19320 2820 DATA e09318ade702850c69038d7991 2830 DATA ade802850d69008d7a91200000 2840 DATA a203203e90a5d8d017a204203e 2850 DATA 90adfc02c9fff0f9a2ff8efc02 2860 DATA 293fc92bd022ad1d808da290ad 2870 DATA 368009308da390a210a9fe9d42 2880 DATA 03a9a29d4403a9909d45032056 2890 DATA e46c0a00ade702e90985d0ade8 2900 DATA 02e90685d1a016b92480f004d1 2910 DATA d0d0058810f4300fa5d0d002c6 2920 DATA d1c6d0a5d1c907b0e26038a5d0 2930 DATA e92485d2a5d1e90085d3a50cc5 2940 DATA d2d019a50dc5d3d01318a5d269 2950 DATA 3da8a5d36906cde802d06d98cd 2960 DATA e702d067a01db1d2a200dd1a03 2970 DATA f009e8e8e8e024d0f4f01518a5 2980 DATA d269c8a8a5d36905dd1c03d044 2990 DATA 98dd1b03d03ea002b1d2990b00 3000 DATA b9d10099e60288d0f2e024f022 3010 DATA 18a5d269da85d0a5d3690585d1 3020 DATA a000b1d09d1b03c8b1d09d1c03 3030 DATA 1d1b03d0039d1a03a205203e90 3040 DATA 6c0a00a206203e906c0a002039 3050 DATA 93a9039d4203a9a29d4403a990 3060 DATA 9d4503a9049d4a03a900aca290 3070 DATA c043d002a9809d4b032056e430 3080 DATA 7a2043938d1d8020439338e930 3090 DATA 8d3680204393c99bd0f9a90085 3100 DATA d0a01f991d868810fa204393c9 3110 DATA 9bf00ba4d0e6d0991d86c01ed0 3120 DATA ee203993ad1d80c9419034c95b 3130 DATA b030ad3680f02bc90ab027a4d0 3140 DATA f02388b91d86201393b01a991d 3150 DATA 868810f2603849ff695f100318 3160 DATA 6906c91fb0040a0a098360a208 3170 DATA 203e906c0a00203993a202203e 3180 DATA 906c0a00a210a90c9d42034c56 3190 DATA e4a210a9079d4203a9009d4803 3200 DATA 9d49032056e430d760ae1d8020 3210 DATA bcee9040303ebd1a038dda8585 3220 DATA d4bd1b038ddb8585d5a90a85d0 3230 DATA a4d018b9c885690785d6b9c985 3240 DATA 690085d718b1d4690148c8b1d4 3250 DATA 6900a00191d6688891d6c6d0c6 3260 DATA d010d660ad01d34820b584a900 3270 DATA 85d885d485d6a98885d5a94085 3280 DATA d7a000b1d4d1d6f006c070b002 3290 DATA e6d891d6c0dbd006a5d7c941f0 3300 DATA 09c8d0e5e6d5e6d7d0df688d01 3310 DATA d360a90085cfade70285d4ade8 3320 DATA 0285d538a90085d2e5d485d0a9 3330 DATA 8085d3e5d585d1a000f0033866 3340 DATA cfa5d2c941a5d3e98690016024 3350 DATA cf70613025b1d291d4208094aa 3360 DATA f0e2c920f017c940f0ddc960f0 3370 DATA d9290dc908f0d390418a291fc9 3380 DATA 09f03ab1d2c8c900b1d288e980 3390 DATA 9012b1d2c8c941b1d288e986b0 3400 DATA 06a5d0a6d1900724cf30a5a900 3410 DATA aa85d686d738b1d2e5d691d420 3420 DATA 8094b1d2e5d74c7894b1d291d4 3430 DATA 2080944c0694e6d2d002e6d3e6 3440 DATA d4d002e6d560e002e1023691 1000 REM *--------------------------* 1002 REM : RAMDisk - dodatek : 1004 REM : autor: Wojciech Palacz : 1006 REM : (c) 1993 Tajemnice ATARI : 1008 REM *--------------------------* 1010 DATA ffff5080568078a9008d0ed460 1020 DATA 5d806380a2408e0ed45860 1000 REM *--------------------------* 1002 REM : Check Memory : 1004 REM : autor: Wojciech Palacz : 1006 REM : (c) 1993 Tajemnice ATARI : 1008 REM *--------------------------* 1010 DATA ffff0090b090a005980a0a0a0a 1020 DATA aabd4003100c88d0f2ad0103d0 1030 DATA 0ea901d00aa8b91a038d9b90bd 1040 DATA 410309308d9c90a201203c90a9 1050 DATA 2da21f9d7390cad0faa2014c45 1060 DATA 9086d4a200204590a6d4a000ca 1070 DATA 300ab97390c8c99bd0f8f0f38a 1080 DATA a2009d4803189869739d4403a9 1090 DATA 009d490369909d4503a9099d42 1100 DATA 034c56e49b436865636b4d656d 1110 DATA 20312e3020627920576f6a6369 1120 DATA 6563682050616c61637a9b4372 1130 DATA 6561746520443f3a52414d4449 1140 DATA 534b2e534554203f28592f4e29 1150 DATA 9be202e3020090b19080934e6f 1160 DATA 206164646974696f6e616c2062 1170 DATA 616e6b7320666f756e642e9b50 1180 DATA 726573732045534320746f2062 1190 DATA 7970617373206d656d6f727920 1200 DATA 746573742e9b1c9c4d656d6f72 1210 DATA 79204f4b2e9bfd4d656d6f7279 1220 DATA 206661696c7572656420617420 1230 DATA 24343030302c2062616e6b203f 1240 DATA 2e9b4465746563746564206261 1250 DATA 6e6b732070726573656e742061 1260 DATA 733a9bad004085d1ad01d385d0 1270 DATA a21f20fb92a9008d0040cd0040 1280 DATA d03cca10f0a9ff8d01d38d0040 1290 DATA a000a21e20fb92ad0040d00ac8 1300 DATA 8e0040ec0040d01c8a95d8ca10 1310 DATA e9a5d08d01d3a5d18d0040c000 1320 DATA d017a203203c906c0a008a20ef 1330 DATA 928d1a91a206203c906c0a0020 1340 DATA 5c93a203203c90a204203c9020 1350 DATA 2092b005a205204590a207203c 1360 DATA 90a90085d2a21e8ad5d8d00786 1370 DATA d320bc92a6d3ca10f1a202203c 1380 DATA 90adfc02c9fff0f9a2ff8efc02 1390 DATA 293fc92bf0036c0a00a99b8da9 1400 DATA 90200493200893a20386d4bd7d 1410 DATA 93202a93a6d4ca10f3a21e8ad5 1420 DATA d8d00a86d320ef92202a93a6d3 1430 DATA ca10eea99b202a932004936c0a 1440 DATA 00a90085d5a21e86d38ad5d8d0 1450 DATA 2120fb92a95520589220a89220 1460 DATA 709220a892a9aa20589220a892 1470 DATA 20709220a892a6d3ca10d518a5 1480 DATA d5f0013860a00084d6a04084d7 1490 DATA a00091d6c8d0fbe6d7a4d7c080 1500 DATA d0f160a00084d6a04084d7a000 1510 DATA d1d6d00cc8d0f9e6d7a4d7c080 1520 DATA d0ef60489848a4d7203e93a5d3 1530 DATA 20ef928d1a91a206204590a901 1540 DATA 85d568a868d0d6acfc02c0fff0 1550 DATA 0ca2ff8efc02c01cd003686838 1560 DATA 60e6d2a4d2205c93adb1902026 1570 DATA 93adb290202693a93a202693a6 1580 DATA d3a5d3d5d8d00b86d48a20ef92 1590 DATA 202693a6d4ca10eca99b4c2693 1600 DATA 3849ff695fc95b90026905608a 1610 DATA 0a0a09838d01d360a90cd002a9 1620 DATA 03a2109d4203a9089d4a03a980 1630 DATA 9d4b03a99b9d4403a9909d4503 1640 DATA 4c56e4a200f002a21048a90b9d 1650 DATA 4203a9009d48039d4903684c56 1660 DATA e4a2032044939848204d93684a 1670 DATA 4a4a4a290f0930c93a90026906 1680 DATA 9d0f91ca60a900a201f8c888f0 1690 DATA 05186901d0f8d848290f207693 1700 DATA 684a4a4a4a09309db190ca609b 1710 DATA 3a3844e002e1023891 Wojciech Palacz
|