¢ Thunder Command Processor 1.0beta¢ -----------------------------------¢¢ DUP.SYS jaki jest - kaədy widzi.¢ Szczeglnie wtedy, kiedy takie cudo¢ jak MYDOS traci wiele przez swojego¢ dupa (bez skojarze).¢ Dlatego postanowiem swego czasu¢ napisa⇨ programik, ktry zast⇧pi¢ DUP.SYS, ale jego obsuga b❎dzie nieco¢ bardziej "qlturalna". Tzn. b❎dzie on¢ dziaa na zasadach oglnie przyj❎tych¢ dla "normalnych" Command Processorw -¢ - rezydentny CP pracuj⇧cy w tzw trybie¢ konwersacyjny: komenda - odpowied♪,¢ itd. W podobny sposb wygl⇧da praca¢ w SpartaDOSie, CP DOS 2.5 (z Avalonu),¢ DOS II+/D, etc...¢¢ TCP jest rezydentnym Command Proce-¢ ssorem przeznaczonym dla MYDOS-a 4.50.¢ Moim zdaniem jest to najpopularniejsza¢ wersja tego DOS-a, a z przerobieniem¢ na inne nie powinno by⇨ problemw...¢ Jego najwi❎ksz⇧ wad⇧ jest bardzo¢ wysokie MEMLO (aktualnie prawie $2600)¢ charakterystyczne dla rezydentnych¢ Command Processorw.¢ Jednak programu nie koczyem. Zos-¢ tawiem go takim, jakim by, bo juə¢ istniej⇧cy fragment wystarczy do wy-¢ konywania podstawowych operacji dysko-¢ wych. W kocu postanowiem pu③ci⇨ nie-¢ dokoczony program jako Public Domain.¢ Mo əe kto③ go dokoczy?¢¢ KOMENDY TCP¢¢ Aktualnie TCP wykonuje komendy:¢¢ * polecenie zewn❎trzne¢ nazwa¢¢ uruchomienie polecenia zewn❎trznego¢ czyli pliku wykonywalnego DOS.¢ Brak rozszerzenia powoduje automatycz-¢ ne dodanie .COM¢ np.: ST.EXE¢ PANTHER¢¢¢¢ * PATH¢¢ PATH ③cieəka¢ lub¢ ③cieəka¢¢ zmienia aktualn⇧ ③cieək❎ dost❎pu.¢ ③cieəka - nazwa zakoczona dwukropkiem¢ np.: PATH D1:¢ D4:LISTY:ZENON:¢¢¢¢ * DIR¢¢ DIR (maska)¢¢ katalog dyskietki wedug podanej maski¢ Brak maski daje spis *.* w aktualnym¢ katalogu.¢ np.: DIR D2:SAMPLE:*.D15¢ DIR¢ * 1...8, *¢¢ *¢¢ spis katalogu gwnego stacji 1...8,¢ gwiazdka "*" daje spis katalogu gw-¢ nego aktualnej stacji.¢¢ * MD¢¢ MD nazwa¢¢ utworzenie podkatalogu w aktualnym ka-¢ talogu.¢ np.: MD PLIKI¢¢ * CD¢¢ CD nazwa|..¢¢ przej③cie do podkatalogu o podanej¢ nazwie lub do katalogu macierzystego¢ (po podaniu ".." zamiast nazwy)¢ np.: CD ..¢ CD PLIKI¢ * DEL¢¢ DEL nazwa¢¢ skasowanie plik(w) w/g podanej maski¢ np.: DEL PLIK.TXT¢ DEL *.BAS¢¢ * LOCK¢¢ LOCK nazwa¢¢ zabezpieczenie plik(w) w/g podanej¢ maski¢ np.: LOCK PLIK.TXT¢ LOCK *.BAS¢¢ * UNL¢¢ UNL nazwa¢¢ odbezpieczenie plik(w) w/g podanej¢ maski¢ np.: UNL PLIK.TXT¢ UNL *.BAS¢ * REN¢¢ REN stara_nazwa,nowa_nazwa¢¢ zmiana nazwy pliku (plikw)¢ np.: REN PLIK.DOC PLIK.TXT¢ REN *.EXE *.COM¢¢ * MON¢¢ MON¢¢ przej③cie do MLM Q-Mega lub Self Testu¢ (zaleənie od uəywanego systemu)¢¢ * VIEW¢¢ VIEW nazwa(@)¢¢ wy③wietlenie zawarto③ci pliku o poda-¢ nej nazwie. Mapa umieszczona po naz-¢ wie sygnalizuje, əe kody steruj⇧ce ma-¢ j⇧ by⇨ wy③wietlane, a nie wykonywane.¢ np.: VIEW PLIK.TXT¢ VIEW FILE.DAT@¢ * RUN¢¢ RUN (adres)¢¢ uruchomienie programu od podanego ad-¢ resu (hex). Brak adresu powoduje uru-¢ chomienie programu od adresu zapisane-¢ go w RUNAD. Przydaje si❎, bo czasami¢ program po wczytaniu nie uruchamia si❎¢ :( Wiem əe to mj b⇧d. Dobre, nie!?¢ np.: RUN 8000¢ RUN¢ RUN E477¢¢ * CLS¢¢ CLS¢¢ wyczyszczenie ekranu.¢¢ * MEM¢¢ MEM¢¢ podaje woln⇧ pami❎⇨ (MEMLO -> MEMHI)¢ Kilku komend brakuje, chociaə s⇧ one¢ umieszczone w tablicy. S⇧ to: (skad-¢ nia i opis podane wedug tego, co mia-¢ em zaplanowane)¢¢¢ * INIT¢¢ INIT (dysk)(CD:g❎sto③⇨|CT:l_③cieəek¢ S:l_stron F:l_sektorw¢ L:d_sektora)¢¢ formatowanie dysku w podanej stacji¢ oraz g❎sto③ci. Moəna poda⇨ g❎sto③⇨ li-¢ terowo: S (single), E (enhanced),¢ D (double), I (ibm s-9), Q (quadruple)¢ ewentualnie dokadnie okre③li⇨ para-¢ metry formatu (liczba ③cieəek, stron,¢ sektorw/③cieək❎, dugo③⇨ sektora)¢ np.: INIT¢ INIT 1¢ INIT CD:E¢ INIT CT:40 S:1 F:18 L:256¢ INIT 2 CD:D¢ INIT 2 CS:1 CT:40 CL:256 CF:18¢ * SYS¢¢ SYS (dysk)¢¢ zapis plikw systemowych na dysk o po-¢ danym numerze.¢ np.: SYS¢ SYS 3¢¢ * CAR¢¢ CAR (on|off)¢¢ uruchomienie cartdridge-a. Z komend⇧¢ on lub off w⇧cza lub wy⇧cza wbudowa-¢ ny interpreter Basica. Sam nie wiem¢ czemu tego jeszcze nie napisaem...¢¢ PRZEKAZYWANIE PARAMETR⓪W¢¢ Dekoder rozkazw TCP jest tak skon-¢ struowany, əe umoəliwia przekazywanie¢ parametrw do polece zewn❎trznych.¢ Cay tekst zapisany za nazw⇧ pliku¢ jest kopiowany od adresu $0530.¢ Daje to atwy dost❎p do tre③ci para-¢ metru we wczytywanym programie.¢¢ Kto bawi si❎ np. DSD z TA 2/91,¢ pami❎ta, jak wczytywanie tego programu¢ w Chaos CP, z podanymi parametrami,¢ wymuszao podanie rozszerzenia.¢ Wygl⇧dao to tak:¢ DSD¢ ale¢ DSD.COM /T¢ W TCP nie ma takiego ograniczenia, bo¢ polecenie jest interpretowane po¢ podziale na instrukcj❎ i parametr¢ i TCP dodaje ".COM" na kocu samej¢ nazwy, zostawiaj⇧c parametr w spokoju.¢¢ JAK TO SI② JE?¢¢ Adres kompilacji jest ustalony sztyw-¢ no. Musi to by⇨ 8169 (dec), niəszy mo-¢ əe powodowa⇨ nieprawidowe dziaanie¢ cao③ci (kod TCP b❎dzie pokrywa si❎ z¢ buforem MYDOS-a), wyəszy niepotrzebnie¢ podniesie i tak juə wysokie MEMLO.¢¢ Naleəy pami❎ta⇨ o inicjalizacji D:¢ po reset (Init - $07E0). {adowanie¢ DUP.SYS przy starcie komputera odbywa¢ si❎ w specyficzny sposb. Program¢ uruchamiany jest tylko raz - wedug¢ adresu w INITAD, a wi❎c nie odpalicie¢ əadnego intra, wpisywanie czegokolwiek¢ do RUNAD teə nie odniesie skutku.¢¢ TCP obsuguje przerwanie BRK, przy¢ czym nie ma əadnej pewno③ci, əe zawsze¢ robi to poprawnie.¢¢ Opcja wczytywania plikw binarnych¢ nie dziaa do koca poprawnie - tj.¢ nie zawsze jest wykonywany skok pod¢ adres w RUNAD po wczytaniu programu.¢ Dzieje si❎ tak m.in. przy prbie wczy-¢ tania programu zaraz po komendzie DIR,¢ za③ je③li przy wykonaniu poprzedniej¢ komendy wyst⇧pi b⇧d I/O, to s⇧ duəe¢ szanse na poprawne wykonanie tej ko-¢ mendy. Nie mam poj❎cia od czego to za-¢ leəy.¢¢ Zdaj❎ sobie spraw❎ z tego, əe zmiana¢ bieə⇧cego katalogu moga by⇨ wykonana¢ w inny (czytaj: lepszy) sposb. Obec-¢ nie przy zmianie ③cieəki TCP nie spra-¢ wdza, czy podana ③cieəka istnieje,¢ a przy odczycie przedziera si❎ przez¢ cae drzewo, zanim dotrze do wa③ciwe-¢ go katalogu. Ten sposb dziaania¢ komendy CD zosta wymuszony przez¢ istnienie komenty PATH, a nie wiem¢ gdzie MYDOS przechowuje ③cieək❎ dost❎-¢ pu (D: = ....). Lepiej byoby to zro-¢ bi⇨ wa③nie przez zmian❎ ③cieəki w sa-¢ mym DOSie a nie tylko w CP. Uatwioby¢ to prac❎ z programami nie przystosowa-¢ nymi do operacji na dyskietkach z pod-¢ katalogami.¢¢¢ No i oczywi③cie brakuje kopiowania.¢ Procedurka kopiuj⇧ca zaj❎aby sporo¢ miejsca i praktycznie lepiej jest uəy⇨¢ zewn❎trznego kopiera, ktrych powstaa¢ masa.¢¢¢ Tyle w kaədym razie wynika z moich¢ eksperymentw. Poniewaə kaədy moəe si❎¢ myli⇨ (a ja w szczeglno③ci), wi❎c¢ bardzo prawdopodobne jest, əe cz❎③⇨¢ z tych zastrzeəe nie jest do koca¢ prawdziwa, tym bardziej, əe s⇧ one¢ oparte wy⇧cznie na do③wiadczeniach¢ metod⇧ prb i b❎dw i domysach:¢ dlaczego tak a nie inaczej. Przy¢ pisaniu TCP nie miaem dost❎pu do¢ əadnej, nawet najbardziej oglnej¢ dokumentacji MYDOS-a. A szkoda, bo¢ moəe oszcz❎dzibym sobie sporo nerww¢ i skoczybym cao③⇨.¢¢¢¢ PROPOZYCJE¢ ------------¢¢ Jeəeli kto③ b❎dzie mia ochot❎ zaj⇧⇨¢ si❎ rozwijaniem idei TCP, to mam kilka¢ propozycji. Oto i one:¢¢ - MEMLO moəna obniəy⇨ przez podzia¢ kodu TCP na j⇧dro systemu oraz kod po-¢ lece. System mgby np. przy wczyty-¢ waniu kopiowa⇨ kod polece wewn❎trz-¢ nych (no, juə nie tak cakiem wewn❎t-¢ rznych) do XMS. J⇧dro skadaoby si❎ z¢ interpretera polece, ktry sprawdza-¢ by, czy instrukcja jest w XMS, czy teə¢ naleəy jej szuka⇨ na dysku.¢ - Sposb zmiany aktualnej ③cieəki¢ dobrze byoby zmieni⇨ w taki sposb,¢ əeby TCP cay czas operowa na "D:",¢ a dost❎pem do odpowiednich dyskw i¢ katalogw zajmowa si❎ sam MYDOS. Jak¢ to zrobi⇨? To proste! Wystarczy wywa-¢ li⇨ polecenie PATH, bo jego przydat-¢ no③⇨ jest nika a zmieni⇨ dziaanie¢ instrukcji CD tak, əeby nazwa katalogu¢ do ktrego ma nast⇧pi⇨ przeniesienie¢ bya przekazywana do DOS-u z wykona-¢ niem odpowiedniej komendy (o ile dob-¢ rze pami❎tam, ChDir to w MYDOS-ie #41)¢ No i nazw❎ pliku naleəy zawsze kopio-¢ wa⇨ po samym "D:".¢¢ - Oczywi③cie po wykonaniu punktu pier-¢ wszego moəna i③⇨ na cao③⇨. Dodanie¢ polece typu: kopiowanie plikw czy¢ caodyskw, ustawienia konfiguracji,¢ etc. nie wpynie na MEMLO, wi❎c moəna¢ sobie szale⇨...¢¢¢ Pytanie: Dlaczego sam tego nie zro-¢ biem? ;) Juə odpowiadam: Bo mi si❎¢ autentycznie nie chce.. LENISTFO ROOLZ¢¢¢ Ofukajcie mnie za to, ale po prostu¢ nie mam do tego cierpliwo③ci. Niedugo¢ b❎d❎ instalowa sobie HDD i do tego¢ juə na 100% b❎d❎ pisa DOS obsuguj⇧cy¢ cay potencja interface'u J. ⑧uka -¢ czyli dwa dyski po 8GB. I najprawdopo-¢ dobniej b❎dzie to co③ wi❎cej niə sam¢ DOS - co③ na ksztat skrzyəowania naj-¢ lepszych cech SDX i QMEG-a... Nic wi❎-¢ cej nie powiem. A na razie i tak musz❎¢ skoczy⇨ OSADNIK⓪W. S⇧ post❎py...¢¢ Na r❎ce naczelnego trafia ♪rdwka¢ TCP oraz efekt jej kompilacji. Szukaj-¢ cie w③rd stuff-u plikw קבס«IJצל oraz¢ קבס«צךצ¢¢ I to chyba wszystko. My③l❎, əe cho⇨¢ nie jest to nic wielkiego, to jednak¢ gra moəe by⇨ warta ③wieczki. Bybym¢ niezmiernie szcz❎③liwy, gdyby TCP¢ dalej si❎ rozwija.¢¢ epi/Allegresse^AeR^LSD¢¢¢¢ p.s. Mam nadziej❎, əe wszyscy wiedz⇧,¢ co naleəy zrobi⇨ z plikiem TCP.SYS...¢ Kto nie wie, to suə❎ pomoc⇧. Oczywi-¢ ③cie TCP po zassemblowaniu zapisujemy¢ jako DUP.SYS zamiast oryginalnego pli-¢ ku o tej samej nazwie.¢¢ - end -¢