Tajemnice ATARI

Mini-Ramdisk


    Drogi 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

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

Pixel 2001