1 REM Ins{nd av Kristoffer Eriksson SYSOP <5357> 1986-08-26 05.04.29 (DUMP) CD.INF +---------------------------------------------------------------+ ! CD.BAC Ver 1.20 - Change Directory- och FILESTAT-instruktion. ! ! F|r ABC800-serien framf|rallt med UFD-DOS. ! ! Av Kristoffer Eriksson <5357>, Augusti 1986. ! ! F}r kopieras fritt, dock endast f|r icke-kommersiellt bruk. ! +---------------------------------------------------------------+ 1. Inledning 2. Instruktionen CD 2.1 Syntax 2.2 Byte till fader-UFD 2.3 L|senord 2.4 Varning! 3. Instruktionen FILESTAT 3.1 Syntax och funktion 3.2 Varianter 4. Start och parametrar 4.1 Vad som ing}r i programmet 4.2 Start-syntax 4.3 Optioner 4.4 ST[LLPAR:s parametrar 5. Tekniska data 5.1 Minnes}tg}ng 5.2 Url{nkning 5.3 Listbarhet 6. Slut 1. Inledning -------------- Detta program skapar BASIC-instruktionerna CD och FILESTAT som vanligtvis bara finns i DOS:et p} maskiner anslutna till LUX-NET. Nyttan h{rmed {r dels att det {r bekv{mare att byta UFD-bibliotek med instruktionen CD {n med programmet UFD, samt att ska bli lite l{ttare att programmera och prova LUX-NET-program p} en frist}ende dator. Det b|r noteras att samma resultat kan uppn}s genom att byta DOS i datorn till LUX-NET:s DOS och ansluta ett nodkort, men det blir mycket dyrare. En extra finess som inte ens LUX-NET har finns ocks} (se 2.2), som kompensa- tion f|r att programmet ockuperar en bit av arbetsminnet. Det h{r {r INTE ett program som till}ter maskiner med {ldre dos {n UFD-- DOS, {ven kallat "super-DOS", att anv{nda sig av underbibliotek. UFD-DOS {r ett KRAV f|r att instruktionen CD ska ha n}gon mening. CD-kommandot ers{tter UFD-programmet, n{r de g{ller att f|rflytta sig mellan UFD-bibliotek, men det kan inte skapa eller radera biblioteken. Till det beh|vs fortfarande programmet UFD. 2. Instruktionen CD ----------------------- CD och FILESTAT {r tv} nya (nya f|r en icke n{tverksansluten dator) BASIC-instruktioner, som kan anv{ndas direkt som kommandon eller inuti ett program. 2.1 Syntax. Till CD ska man ange en str{ng (dvs en text mellan citationstecken, en str{ngvariabel, eller ett str{nguttryck) som inneh}ller namnet p} det UFD-bibliotek man vill placera sig i. Mer formellt uttryckt {r syntaxen: CD "UFD-namn" eller CD Str{ngvariabel Till skillnad fr}n programmet UFD, kan flera biblioteksniv}er anges i samma str{ng, om de skiljs }t av snedstreck (/). Om i st{llet en tom str{ng anges nollst{lls UFD-pekaren. Exempel: CD "MF0:SPEL/REKORD" CD "L[XOR" CD "" I det f|rsta exemplet hamnar man i biblioteket REKORD i biblioteket SPEL p} disketten i enheten MF0:. I det andra kommer man till biblioteket L[XOR som kan finnas p} vilken diskett som hellst, eller i aktuellt UFD. Med sista exemplet "kliver man ur" och deaktiverar UFD helt. Om ett angivet bibliotek inte finns, genereras fel 21 (Hittar ej filen). Om ett angivet biblioteksnamn g}r till en fil som inte uppfyller vissa grundl{ggande krav f|r ett bibliotek, genereras fel 48 (Fel i biblioteket). Vissa andra skivhanteringsfel kan f|rekomma. 2.2 Byte till fader-UFD. Det speciella biblioteksnamnet ".." (tv} punkter) betecknar aktuellt fader-bibliotek, dvs det bibliotek som sj{lvt inneh}ller aktuellt UFD, givetvis f|rutsatt att n}got UFD f|r tillf{llet {r aktiverat. I annat fall genereras fel 21 (Hittar ej filen). Namnet ".." har ingen motsvarighet i LUX-NET, och f|r att det ska behand- las p} avsett s{tt i det h{r programmet m}ste en speciell inst{llning eller option anv{ndas. Se avsnitt 4. Id`n att det ska heta just ".." kommer fr}n UNIX, och finns {ven i MS/PC-DOS. UNIX har {ven influerat LUX-NET. Exempel: CD "DR0:AA/BB/CC" CD ".." CD "../DD" CD "../.." CD "BB/.." Det f|rsta exemplet aktiverar biblioteket CC i BB i AA p} DR0:. Med n{sta exempel kommer man tillbaks en niv} upp till BB. Det tredje kommandot g}r ned till biblioteket DD i BB, och ger i jus det h{r fallet samma effekt som CD "DR0:AA/BB/DD" skulle ha givit. N{sta kommando kl{ttrar upp tv} niv}er och aktiverar AA, medan det femte n}got idiotiska kommandot g}r ned i BB och sen genast tillbaks till AA. Om ".." i "../xxxxxx" g}r till toppniv}n och allts} deaktiverar alla UFD, och, kommer xxxxxx att s|kas dessa p} alla diskettenheter. Om aktuellt UFD var placerat i RAM-floppyn, ska man inte v{nta sig att xxxxxx s|ks i RAM-floppyn, eftersom den inte ing}r i den normala avs|kningsf|ljden av diskettenheter. (Detta p}st}ende kan eventuellt vara falskt f|r andra RAM-floppys {n den version av Luxors (skriven av DIAB) som {r aktuell n{r detta skrivs.) [r aktuellt bibliotek t ex RAM:AA, kommer kommandot CD "../AA" inte att aktivera RAM:AA igen. M|jligtvis kan ett bibliotek som heter AA p} en annan diskett bli aktiverat. D{remot ger CD "../RAM:AA" avsedd effekt, {ven om det lika g{rna kan skrivas mer direkt som CD "RAM:AA". L{gg {ven m{rke till att detta {r ett specialfall. I kommandon som CD "DR1:AA/RAM:BB" struntar CD totalt i den andra enhetsangivelsen "RAM:", och f|rs|ker hitta biblioteket DR1:AA/BB. I LUX-NET {r det m|jligt att g|ra CD till ett ensamt enhetsnamn, som CD "LFD:", CD "MF0:" osv. H{r har den typen av sats ingen effekt. Den ger varken felmeddelande, eller n}gon {ndring av biblioteksinst{llningen. Enheterna LFD:, PFD: och MFD: finns dock inte i vanligt DOS, och ger felkod 21. 2.3 L|senord. I LUX-NET kan biblioteken l|senordsskyddas. N{r man g}r till ett skyddat bibliotek anger man efter dess namn ett utropstecken (!) f|ljt av l|sen- ordet. H{r struntar CD helt enkelt i allt som st}r efter ett utropstecken. F|ljande par av exempel {r ekvivalenta: CD "MF0:SPEL!L\SEN1/REKORD!PARAPLY" och CD "MF0:SPEL/REKORD" CD "L[XOR!MATTE" och CD "L[XOR" 2.4 Varning! Det {r inte tillr}dligt att |ppna en fil i ett UFD, och sedan byta UFD innan filen st{ngts igen om man skrivit n}got p} denna fil, eftersom fill{ngdsinformationen f|r denna fil d} kommer att skrivas ut i fel UFD. Om det skulle intr{ffa b|r programmet DISKCHEK kunna r{dda disketten. Att }tg{rda detta riskfaktor skulle kr{va ytterligare ingrepp i systemet, vilket skulle g|ra rutinerna avsev{rt mycket l{ngre. Att sp{rra m|jlighe- ten skulle eventuellt kunna g|ras genom att alla |ppna filer till UFD st{ngs n{r instruktionen CD anv{nds. 3. Instruktionen FILESTAT --------------------------- FILESTAT har ingen praktiskt anv{ndning p} en icke n{tverksansluten dator. D{rf|r m}ste en speciell inst{llning eller option anv{ndas till CD-prog- rammet om denna instruktion ska skapas. Nyttan med den {r om man arbetar med LUX-NET-program och vill kunna skriva in FILESTAT i det, eller kunna k|ra programmet utan att det stannar pga att instruktionen inte finns i maskinen. I det senare fallet kan dock programmet, om det {r listbart, anpassas s} att det med ON ERROR GOTO tar hand om det fel 200 (enheten ej ansluten), som alltid genereras n{r en obefintlig instruktion exekveras. 3.1 Syntax och funktion. I LUX-NET {r FILESTAT:s funktion att tillf{lligt l}sa en fil s} att andra anv{ndare inte kan l{sa den eller inte skriva p} den. Instruktionen kan anv{ndas p} tv} s{tt: antingen med ett filnummer och ett statusv{rde f|r att l}sa eller sl{ppa en viss |ppen fil, eller helt utan parametrar f|r att sl{ppa alla l}sta filer. Alla parametrar ska vara heltal eller hel- talsuttryck. Syntax: FILESTAT #Filnummer, Status eller FILESTAT Instruktionens namn kan {ven f|rkortas till bara FS, men listas normalt alltid som FILESTAT. Vid exekveringen h{r h{nder ingenting, inte ens n}gon kontroll av att den angivna filen {r |ppen. 3.2 Varianter. FILESTAT finns i tv} varianter i detta program. Dels en mycket minnessn}l form som enbart kan exekvera instruktionen, inte ta emot det vid en inmat- ning (N}ja, den g}r att mata in den inte har n}gra parametrar). Vid list- ning heter den bara FS. Dels en n}got l{ngre form som duger till program- mering ocks}. 4. Start och parametrar ------------------------ Jag hoppas att folk b|rjar bli vana vid hur man behandlar mina program. Som vanligt kan ett antal parametrar st{llas in p} ett varaktigt s{tt med det generella inst{llningsprogrammet ST[LLPAR.BAC. Samma saker, och n}gra till, kan ocks} specificeras direkt i RUN-kommandot, och tar d} |verhanden |ver det som st{llts in med ST[LLPAR. 4.1 Vad som ing}r i programmet. Programmet best}r av ett antal mer eller mindre oberoende moduler plus en inte allt f|r liten rutin som l{nkar in dessa i datorns instruktionslista, tolkar parametrar, ber{knar hur mycket minne som g}r }t, och skriver ut meddelanden. De moduler som finns {r f|ljande, tillsammans med sina beteckningar: N En mycket kort variant av CD d{r inget h{nder n{r CD exekveras. C En standardvariant av CD som klarar samma saker som LUX-NET:s CD, men inte byte till faderbibliotek. L En l}ng variant av CD (eller snarar ett till{gg till C), som {ven klarar ".." f|r byte till faderbiblioteket. E En modul som bara kan exekvera FILESTAT. F En mer fullst{ndig FILESTAT som duger {ven f|r programmering. N, C och L utesluter varandra, liksom E respektive F. C {r standardalter- nativet, och det som laddas in om inget annat anges. C beh|ver bara anges om man med ST[LLPAR gjort n}gon annan kombination till standard, men {nd} vill ladda C ensamt. I alla |vriga fall f}r man C "gratis", s} l{nge man inte anger N. Hur man {n g|r g}r det inte att undvika att n}gon av N, C och L laddas in (om n}got alls laddas), d{remot kan b}de E och F undvaras. 4.2 Start-syntax. Programmet startas med RUN eller CHAIN, och n{r det k|rt klart finns de |nskade instruktionerna inlagda i datorns minne, redo att anv{ndas. Vid denna k|rning kan en del parametrar anges. Syntaxen {r: RUN CD(,(-)(optioner)(;programnamn)) eller CHAIN "CD(,(-)(optioner)(;programnamn))" Parenteserna omsluter h{r s}dana delar av kommandona som inte {r obligato- riska. Uttryckt i ord, kan man direkt efter programnamnet CD ange ett kom- matecken, eventuellt ett bindestreck (en vanlig inledning till optioner) och noll, en eller flera tecken som anger vilka moduler som ska utnyttjas (optioner). Till sist f}r ett semikolon t{tt f|ljt av {nnu ett programnamn ange att ett visst program ska startas automatiskt n{r det h{r {r klart. 4.3 Optioner. De optionsbokst{ver som finns {r de som enligt 4.1 betecknar de olika modulerna (N, C, D, E, F och L), samt D f|r Default som r}kar vara samma som C, H eller fr}getecken (?) f|r Hj{lp, och utropstecken (!) f|r att undg} den kontroll av dubbelladdning som annars g|rs. Anv{nds H (hj{lp) skapas normalt inga nya instruktioner, men anges ytter- ligare optioner efter H skapas de {nd}. Hj{lpen talar om versionsnummer och vilka optioner som finns. Den kontroll som upph{vs av !, g}r ut p} att j{mf|ra den nya dellista av instruktionsnamn som ska skapas (CD, CD+FS eller CD+FILESTAT+FS) med den som redan finns i datorn, och om en exakt likadan hittas skapas instruk- tionerna inte p} nytt. En speciell kontroll g|rs ocks} av att datorn inte redan har LUX-NET:s DOS. Om en felaktig option anges stannar programmet med en hj{lputskrift och fel 221 (otill}tet tecken efter satsen). Om inga optioner anges, inte ens ett streck (-), {r det ST[LLPAR:s para- metrar som g{ller, annars {r det de angivna optionerna, med C underf|rs- t}tt. 4.4 ST[LLPAR:s parametrar Inst{llningsprogrammet ST[LLPAR visar n{r det appliceras p} CD, fyra fr}gor som g|r det m|jligt att v{lja mellan modulerna N, C, D, E och F, samt ange ett program som startas efter k|rningen av CD. Fr}gorna b|r vara begripliga utan s{rskild anvisning. Med ST[LLPAR kan man l{tt f} CD att ing} mitt i kedjan av program som autostartas vid systemstart eller reset. Det g}r {ven l{tt att l}ta en kopia av CD med n}got annat namn, f} andra parametrar om det skulle underl{tta hanteringen. 5. Tekniska data ----------------- Programmets moduler l{gger sig s} l}ngt ned det g}r i det lediga arbets- minnet utan att krocka med t ex KEY. Alldeles i b|rjan av denna minnesarea lagras de f|re detta v{rdena p} Y.BOTM och STMTBA, som eventuellt kan anv{ndas f|r att senare l{nka ur programmet. Programmet mixtrar {ven med dos:ets speciella felhanteringsadress ON_ERR_DEF (som den heter enligt "Bit f|r bit med ABC800" i alla fall). Om denna mot f|rmodan skulle {ndras n}gon g}ng efter laddning av CD, kommer den att }terst{llas om instruktionen CD exekveras. Detta f|rh}llande spar minne i CD-rutinen. 5.1 Minnes}tg}ng. Vid laddning talar CD om exakt hur mycket minne som g}r }t och hur mycket som blir kvar. H{r f|ljer {nd} en lista |ver hur mycket de olika modulerna tar upp: N - Kort CD 27 byte (20+7) C - Normal CD 327 byte (20+307) L - L}ng CD 428 byte (20+307+101) E - Kort FILESTAT 16 byte (7 +9) F - L}ng FILESTAT 49 byte (16+9+24) N}gon av modulerna N, C och L anv{nds alltid med eller utan n}gon av E och F. Siffrorna i parentes avspeglar de egentliga delrutinernas storlekar. 20 {r minsta storleken p} den l{nk i instruktionslistan som kan anv{ndas. 7 resp 16 {r de till{gg som beh|vs f|r en extra instruktion i l{nken med namnet FS resp b}de FILESTAT+FS. 5.2 Url{nkning. Om CD {r det enda hj{lpprogram som ligger i botten av minnet och det enda eller sist laddade som inneh}ller extra BASIC-instruktioner, kan url{nk- ningen g|ras med f|ljande programsnutt: 1000 INTEGER : EXTEND 1010 Stmtba=65405 : Botm=65292 1020 L{nk=PEEK2(Stmtba) 1020 POKE Botm,PEEK(L{nk-2),PEEK(L{nk-1) ! ]terta reserverat minne 1030 POKE Stmtba,PEEK(L{nk),PEEK(L{nk+1) ! L{nka ur instruktioner 5.3 Listbarhet Att programmet inte {r listbart beror inte p} illvillja, utan p} att {ven om datorn (och en del m{nniskor) luras tro att det {r ett BASIC-program, s} inneh}ller det faktiskt ingen BASIC. 6. Slut -------- Rapportera eventuella fel till mig, Kristoffer Eriksson Vassv{gen 3 702 31 \rebro "Fri kopiering f|r icke-kommersiellt bruk" inneb{r att ingen ska tj{na pengar p}, eller fr{mja n}gon verksamhet med s}dant jag som programmets upphovsman sk{nkt till allm{nheten. D{rf|r f}r programmet inte distribue- ras mot h|gre betalning {n distributionsmediets verkliga ink|pspris utan tillst}nd. ABC-klubbens programdistribution {r i f|rv{g godk{nd. Byteshan- del mellan enskilda personer i liten skala {r ocks} godk{nd. Tveksamma fall m}ste liksom kommersiellt bruk ha skriftligt tillst}nd av f|rfatta- ren. Givetvis m}ste denna och den inledande notisen medf|lja kopior. I |vrigt uppmuntras spridningen av kopior. M} detta vara n}gon till nytta, |nskar Kristoffer Eriksson, ABC-klubben <5357>