Mini-RamdiskDrogi i godny współczucia posiadaczu magnetofonu! Czy zdarzyło ci się kiedyś, że napisałeś w asemblerze wspaniały program, mający dokonać przewrotu w informatyce i nagle stwierdziłeś, że nie jesteś w stanie go skompilować? Całą dostępną pamięć zajmował tekst, moduły, które się tam nie zmieściły miały być doczytane z kasety i wtedy się zorientowałeś, że nie ma gdzie umieścić kodu wynikowego. W takim wypadku zapewne pomyślałeś - żeby tak mieć choć na kilka chwil stację dysków! Skoro jednak nie można na zawołanie wyczarować jej z powietrza, trzeba sobie radzić w jakiś inny sposób. Rozwiązaniem tego i innych podobnych problemów jest program, symulujący stację dysków w pamięci komputera, czyli tzw. ramdysk. Mój program jest właśnie czymś takim i powstał właśnie z powodu opisanego na wstępie. Wykorzystuje on pamięć RAM znajdującą się pod OS ROM'em oraz około półtorej strony pamięci głównej, dając w zamian 13 KB wolnego miejsca na ramdysku. Sterownik urządzenia "D:" instalowany jest jako rezydentna nakładka na system. Odinstalować go można poprzez powtórne wczytanie, o ile nie został przygnieciony innymi nakładkami. Jeśli przydarzy się nam nieoczekiwany zimny start, dane z ramdysku można uratować powtórnie ładując sterownik. Rozpozna, że był już wcześniej zakładany ramdysk i spyta się, czy skasować stare dane - trzeba wtedy odpowiedzieć naciskając klawisz "N". Mój program nie jest pełną symulacją stacji dysków - dostępne są tylko podstawowe operacje. Można otwierać pliki w dowolnych trybach i ile się chce naraz, używać w nazwach gwiazdek i pytajników, odczytywać katalog i kasować pliki, ale nie są dostępne operacje FORMAT, RENAME, NOTE, POINT, LOCK i UNLOCK. Nie uważam tego za wadę - nie mają one zbyt wielkiego sensu w odniesieniu do ramdysku, służącego jako podręczne koło ratunkowe, a zajmowałyby pamięć. W zamian za to dodałem procedurę, którą można wywołać z COS'u rozkazem RUN i która po podaniu nazwy (nie trzeba zaczynać jej od D:) kasuje dany plik. Jest to o tyle ważne, że COS nie ma komendy ERA, a nie zawsze można włączyć BASIC aby wykonać kasowanie używając komendy XIO. Nie napisałem podobnej procedury dla DIR, gdyż większość programów użytkowych ma w menu tę opcję, a i z BASIC'a uzyskanie katalogu nie jest zbyt trudne. Teraz parę uwag na temat BHP: nie wprowadziłem do programu bardzo ścisłej kontroli nienormalnych sytuacji, więc proszę nie próbować otwierać do zapisu tego samego pliku w dwóch kanałach I/O naraz. Z tego samego powodu niewskazane są próby zapisu do pliku, którego się nie udało poprawnie otworzyć. Odczytywać katalog można tylko w jednym kanale na raz. Nieprzestrzeganie tych zasad może zdezorganizować ramdysk, a nawet doprowadzić do zawieszenia komputera. Jeśli chcemy pracować w BASIC'u, to najpierw trzeba wczytać sterownik, a potem zainicjować BASIC komendą CAR ON. Zdecydowanie odradzam mój program użytkownikom stacji dysków. Nie zwraca on uwagi na to, czy istniało wcześniej jakieś urządzenie o nazwie "D:", więc po zainstalowaniu go nie będzie dostępu do stacji. Jeśli ktoś jednak zostanie zmuszony go użyć, proponuję zmianę nazwy, pod jaką się instaluje - jest ona zapisana w 141 bajcie programu i można ją zmienić PATCHER'em np. na "R:" używając takiej łaty: 1000 DATA 140,68,82 W programie wykorzystałem relokator oraz dwie inne procedury autorstwa Janusza B. Wiśniewskiego, a jego doskonałe artykuły o programowaniu pozwoliły mi uniknąć kilku błędów w sztuce, do których wolałbym się nie przyznawać. 1000 REM *--------------------------* 1002 REM : MINI RAMDISK : 1004 REM : autor: Wojciech Palacz : 1006 REM : (c) 1992 Tajemnice ATARI : 1008 REM *--------------------------* 1010 DATA ffff00886b88a200201988a201 1020 DATA 201988a92da2239d4788cad0fa 1030 DATA a2014c1988a000ca300ab94788 1040 DATA c8c99bd0f8f0f38aa2009d4803 1050 DATA 189869479d4403a9009d490369 1060 DATA 889d4503a9099d42034c56e49b 1070 DATA 4d696e692052616d4469736b20 1080 DATA 312e3320627920576f6a636965 1090 DATA 63682050616c61637a9be202e3 1100 DATA 02008800805d81200000ad5981 1110 DATA 8de702ad5a818de802a244ac57 1120 DATA 81ad588120bcee901aa221ad10 1130 DATA 80dd1a03f006cacaca10f66098 1140 DATA 9d1b03ad58819d1c0360202181 1150 DATA 200dc04c3b81202181bd0cc3f0 1160 DATA 0620b6c04c3b81bd0ec3dd10c3 1170 DATA b01ac9fed0032027c1fe0ec3bd 1180 DATA 0fc38d6b80bc0ec3b90001a001 1190 DATA d002a0884c3b8148202181bd0e 1200 DATA c3c9fed011bd10c3c9fff00720 1210 DATA 4fc19005b0182027c1fe0ec3bc 1220 DATA 0ec3bd0fc38da08068990001a0 1230 DATA 014c3b81684c3b81202181bd0c 1240 DATA c3d00ebd0ec3dd10c39006bc0d 1250 DATA c3990dc3a0014c3b81a00160a5 1260 DATA 22c921f003a0a860202181200a 1270 DATA c2208ec2b00f20d4c1a9009900 1280 DATA c3208ec290f3a0014c3b81a200 1290 DATA a9059d4203ad55819d4403ad56 1300 DATA 819d4503a90e9d4803a9009d49 1310 DATA 032056e4300e38a524e9018524 1320 DATA b002c62520d1806c0a0078a900 1330 DATA 8d0ed4ac01d3a9fe8d01d38c08 1340 DATA c38a4a4a652e4a4aaa60ae08c3 1350 DATA 8e01d3a2408e0ed45860003680 1360 DATA a9803f807480c480c7805e8149 1370 DATA 816d8100003a6c88e48a48616e 1380 DATA 646c657220696e7374616c6c65 1390 DATA 642e9b455241534520726f7574 1400 DATA 696e6520617420243f3f3f3f2e 1410 DATA 9b5265666f726d6174206f6c64 1420 DATA 2072616d6469736b3f2028592f 1430 DATA 4e299b48616e646c6572207265 1440 DATA 6d6f7665642e9b43616e277420 1450 DATA 72656d6f76652068616e646c65 1460 DATA 7221fd9b202289a50c8d0180a5 1470 DATA 0d8d028020388a18ade702850c 1480 DATA a869038d1089ade802850daa69 1490 DATA 008d1189189869eea88a6900aa 1500 DATA 98201a8a200000a202201988a2 1510 DATA 0320198820a3896c0a00ade702 1520 DATA 85d0ade80285d1a023b1d0d921 1530 DATA 81d0058810f63010a4d0c6d098 1540 DATA d0ebc6d1a5d1c907b0e36038a5 1550 DATA d0e92185d6a5d1e90185d7a50c 1560 DATA c5d6d03ea50dc5d7d03818a5d6 1570 DATA 696da8a5d76901cde802d02998 1580 DATA cde702d023a002b1d6990b00b9 1590 DATA d50099e60288d0f2ae108020bc 1600 DATA eea9009d1903a2052019886c0a 1610 DATA 00a2062019886c0a00a90085d0 1620 DATA 85d285d4a99085d3a9c085d520 1630 DATA 2181a000b1d2d1d4d005c8d0f7 1640 DATA e6d0a000b1d291d4c8d004e6d3 1650 DATA e6d5c008d0f1a5d5c9c3d0eb20 1660 DATA 3b81a5d0f018a204201988adfc 1670 DATA 02c9fff0f9a2ff8efc02293fc9 1680 DATA 2bf00160202181a040a9009900 1690 DATA c320d4c2d0f6a9c48d118aa200 1700 DATA 8eff01201ac190f34c3b81a003 1710 DATA 20208a8a4820298a684a4a4a4a 1720 DATA 290f0930c93a90026906999188 1730 DATA 8860a90085cfade70285d4ade8 1740 DATA 0285d538a90085d2e5d485d0a9 1750 DATA 8085d3e5d585d1a000f0033866 1760 DATA cfa5d2c95ea5d3e98190016024 1770 DATA cf70613025b1d291d420d88aaa 1780 DATA f0e2c920f017c940f0ddc960f0 1790 DATA d9290dc908f0d390418a291fc9 1800 DATA 09f03ab1d2c8c900b1d288e980 1810 DATA 9012b1d2c8c971b1d288e981b0 1820 DATA 06a5d0a6d1900724cf30a5a900 1830 DATA aa85d686d738b1d2e5d691d420 1840 DATA d88ab1d2e5d74cd08ab1d291d4 1850 DATA 20d88a4c5e8ae6d2d002e6d3e6 1860 DATA d4d002e6d5600090079320a0c2 1870 DATA ae09c3a9119d0dc3d04c8e09c3 1880 DATA a9019d0cc3200ac2b041a52a29 1890 DATA fec906f0de208ec2ae09c3a900 1900 DATA 9d0fc3a9fe9d0ec39d10c3989d 1910 DATA 0dc3a52ab039c908f01bc909f0 1920 DATA 1d0908c90cf003a0a860b90cc3 1930 DATA f003fe10c3de0cc3a0016020d4 1940 DATA c14c9cc020edc1f0ef9d0fc3b9 1950 DATA 0dc39d0ec39d10c34c56c0c908 1960 DATA d0e1a040b900c3f00820d4c2d0 1970 DATA f6a0a960a200bddac2d003a0a5 1980 DATA 609901c3c8e8e00bd0ef9829f0 1990 DATA a8ae09c39d0dc3a9019900c3a9 2000 DATA 00990cc3990dc34c56c0fe0dc3 2010 DATA bc0dc3c012f0099029c091904e 2020 DATA a0886020bfc1b023a9009d0dc3 2030 DATA 20edc1a200b901c39de7c2c8e8 2040 DATA e00bd0f4a0002099c1a000b9e5 2050 DATA c2a00160a9809d0dc3a9008d0b 2060 DATA c3a9c48d02c1acff01d003ee0b 2070 DATA c3201ac190f0a0042099c1a080 2080 DATA b977c2a00160186901b007c9d0 2090 DATA d002a9d81860fe0ec3bc0dc3bd 2100 DATA 0fc3f0188d37c1adff019d0fc3 2110 DATA 8d40c1adff013006b90dc39d10 2120 DATA c360b90cc330e9a9c48d56c1ac 2130 DATA ff01f009201ac190f3a0a23860 2140 DATA fe0ec38d0ac3a900bc0dc39d10 2150 DATA c3990dc3bd0fc3f019bd0fc38d 2160 DATA 83c1ad0ac38dff019d0fc38d8e 2170 DATA c1a9018dff011860ad0ac3990c 2180 DATA c3d0ebae0bc3e8a900f8caf005 2190 DATA 186901d0f8d8484a4a4a4a1869 2200 DATA 3099f4c268290f186930c899f4 2210 DATA c260a040b90ec3d00720d4c2d0 2220 DATA f63860a900990ec31860b90cc3 2230 DATA 10138de1c18de7c1adff0148a9 2240 DATA 008dff01684cd7c160a9008d0b 2250 DATA c38d02c2b90cc3100cee0bc38d 2260 DATA 02c2adff014cf8c1ad02c260a2 2270 DATA 0aa9209ddac2ca10fae8a002b1 2280 DATA 24c93af0078810f7a0a53860c8 2290 DATA b124c92ed008e008b033a208d0 2300 DATA f1c93fd004a900f014c92af010 2310 DATA c9419004c95b9008c9309017c9 2320 DATA 3ab0139ddac2e8e00bf00be008 2330 DATA d0c9c8b124c92ef0c2a200bdda 2340 DATA c2c92af013e8e00bd0f4a20abd 2350 DATA dac2c920d013ca10f630a2a900 2360 DATA 9ddac2e8e008f0dce00bd0f418 2370 DATA 60a04020b4c2900920d4c2d0f6 2380 DATA a0aa38601860a04020b4c2a900 2390 DATA b002a901990ec320d4c2d0ef60 2400 DATA b900c3f015a200bddac2f005d9 2410 DATA 01c3d009c8e8e00bd0f0189001 2420 DATA 389829f0a86098186910a86046 2430 DATA 494c454e414d45455854202046 2440 DATA 494c454e414d45455854203030 2450 DATA 309b3030302046524545205345 2460 DATA 43544f52539be002e102db88 Wojciech Palacz
|