[Erstatning af sidste afsnit i "Indledning"] Dette er sikkert ikke den sidste version af sln extension, og jeg vil derfor gerne have nogle ideer til nye kommandoer. Jeg vil være meget glad for hvis der fulgte programeksempler med forslagene, især i assembler. Hvis jeg har tid, lyst, evner osv. vil nye kommandoer hurtigt se dagens lys. Jeg har selv en del ideer i øjeblikket, bla. nogle flere sample kommandoer og en serie fil-kommandoer. Jeg er dog noget i tvivl med fil-kommandoerne, da de findes i flere andre extensions (Ldos & Craft), og det er derfor ikke sikkert, at de bliver til noget. [Erstatning af sidste afsnit i "Installering"] Ændr nummeret så det passer til dine behov, assambel programmet, gem ob- jekt koden som "AMOSPro_Sln.lib" (eller hvad du nu har lyst til) og rette configurationen så den passer. Læg dog mærke til at du sandsynligvis bliv- er nød til at ændre nogle assambler options for at få det til at virke. (Slå "Auto Alloc" fra, eller slå "Ensure PC-relative code" til). [Nyt kapitel "REGISTRERING"] Eftersom Sln extension fra og med version 2.0 er blevet shareware, BØR man lade sig registrere for at støtte den fremtidig udvikling. Shareware beløb- et er sat til 30 kr (mere accepteres), så ALLE burde kunne være med. Hvis du sender en diskette+returporto med (eller en 10'er ekstra), sender jeg den næste version af Sln extension, så snart den er færdig. Hvis du sender penge i et brev, så husk at skjule dem bag nogle stykker pa- pir, og sørg for at mønter ikke klirer. Ellers kan man ikke være sikker på om brevet når uåbnet frem. Sammen med Sln extension, skulle du gerne finde filen "Sln_Registrering", som er en ascii-tekst, jeg meget gerne vil have udfyldt af alle, der regi- streres. Skriv den af, print den ud, send den på diskette - jeg er ligeglad hvordan. Jeg stiller ingen krav om, at man skal registrerer efter "2 ugers brug" el- ler lignende, og Sln extension har ingen specielle begrænsninger for dem, der ikke er registrerede. Iøvrigt vil jeg meget gerne se alle de sensationelle programmer i laver, så derfor er i velkomne til at sende lidt source med, når i registrerer. [Nyt kapitel "FEJL & PROBLEMER"] Jeg hader allerede dette afsnit, men det er sikkert meget godt at have med alligevel. -Siden version 1.0 af SLN extension er tokenlisten blevet ændret en smule ved et uheld. Helt konkret betyder det at amos ikke er i stand til at genkende visse af kommandoerne fra v1.0, når du installerer v2.0. Så derfor: Hvis du bruger "S Volume","S Iconify" og ALLE sample kommandoer- ne, er du nød til at gemme programmet som ascii, og hente det ind igen når v2.0 installeret. Husk at gemme alle residente banker særskilt, de vil naturligvis ikke blive gemt sammen med ascii filen. -S Mouse Key funktionen tester ikke højre muse knap -Amos crasher hvis "Track Play" kommandoen bruges, når Sln extension er installeret. Der er to måder at undgå dette problem på: Enten bruger du de player kommandoer sln extension byder på, eller du LOADER det modul du vil spille under programmet, altså ingen permanente banker med tracker moduler. Jeg forstår ærlig talt ikke denne fejl, den er dybt mystisk... [Ændring af "S Ainit" - afsnittet 2. linie] S ainit nr,adresse/bank, celle, størrelse,x,y,z [Ændring af "S Ainit" -Afsnittet 5. afsnit (Den anden udgave...)] Den Anden udgave opretter array'et på en bestemt adresse, uden at ændre noget i hukommelsen, dvs. at du selv skal reservere hukommelsen. Når ar- ray'et igen slettes vil hukommelsen ikke blive frigivet automatisk. Hvis du istedet for en adresse angiver et bank nummer, bruges adressen på banken, som parameter (=Start(nr)). [Erstatning af "S Iinit" - afsnittet kommandosyntakst+1. afsnit] S Iinit nr,adresse/bank,variabel adresse/bank Initialiserer en bruger-interrupt rutine. Denne rutine skal være i maskin- kode, og fungerer på lige fod med AMAL, Interface m.fl.. "Nr" er nummeret på interruptet. Dette skal være imellem 0 og 7 ligesom array nummeret. "Adresse/bank" er adressen, eller bank nummeret, på interrupt rutinen. Nor- malt vil man bruge en bank, hvor et maskinkode program er loadet med "Pload" kommandoen. "Variabel adresse/bank" er en adresse/bank til de variabler, som rutinen skal have overført (hvis det er en bank overføres adressen på den- ne). Her kan interrupt rutinen hente eller gemme forskellige værdier, og derigen- nem kommunikere med resten af programmet. Adressen kan pege på en variabel, et array, en bank, i realiteten hvad som helst. Hver eneste gang interrupt rutinen kaldes (hvert vbl), overføres ad- ressen i a0. Det er nu fuldstændig op til rutinen hvad den vil bruge adressen til. [Nye kommandoer under "MODULER"] -S Track Play Bank/adresse -S Track Play bank/adresse, antal gange -S Track Play bank/adresse, antal gange, start pattern Disse kommandoer starter afspilningen af et protracker modul fra en bank eller adresse. "Antal gange" er antallet af gange modulet skal spilles, hvis det er nul spilles modulet uendeligt, ligesom hvis parameteret helt udelades (modulet stoppes med "S Track Stop"). "Start Pattern" er ganske simpelt start positionen, som normalt er nul=starten af modulet. Protracker player'en har Rune Keller været så flink at fremskaffe, og den understøtter alle protracker kommandoer til og med PT3.10. Playeren er naturligvis koblet sammen med sample playeren, så de kanaler, der afspiller samples bliver koblet midlertidigt ud af PT-playeren. Det vil sige at alle samples afspilles normalt, mens PT-playeren naturligvis vil mangle nogle kanaler. -S Track Stop Stopper et igangværende modul, startet med "S Track Play". -S Track Load modul_navn$ -S Track Load modul_navn$,bank nr Første version loader et modul ind i bank 7, mens anden udgave loader mo- dulet til en angivet bank. Hvis bankerne eksisterer i forvejen, vil de uden varsel blive slettet. "S Track Load" kommandoerne svarer nøje til amos' egen "Track Load" komman- do, og de kan bruges i flæng. Grunden til at S Track Load kommandoerne er lavet er, at man så helt kan undgå at bruge nogen kommandoer fra music extension. Hvis man bruger bare en enkelt kommando fra en extension, bliver hele datazonen og diverse andre code stumper inkluderet i programmet. Mængderne af dette afhænger naturlig- vis af, hvor godt det er programmeret. -S Track Volume vol% Denne kommando sætter volumestyrken på modulerne, når de bliver afspillet. Kommandoen kan både bruges inden og under afspilningen. Den nye volumestyrke sættes i % af den oprindelige, og eventuelle variati- oner i lydstyrken bevares. Dette er den væsentligste grund til at bruge den- ne kommando istedet for "S Volume". "vol%" er en procent værdi mellem 0 og 255, hvor 100% angiver normal volume. Bemærk at man skruer op for lyden ved at sætte en værdi over 100. Computeren har dog en max. lydstyrke, som overskrides. -=S Track Length (adresse/bank) Kommandoen returnerer ganske simpelt længden af modulet i patterns. Ikke antallet af definerede patterns, men antallet af ppatterns, der skal gen- nemløbes inden modulet er færdigt. -S Track Tempo= speed -=S Track Tempo Første version sætter tempoet for modulerne, mens den anden returnerer det nuværende tempo. "Speed" angiver antallet af vbl's imellem, hver node, og jo lavere denne værdi er, jo hurtigere er tempoet. Hvad tempoet er i bpm (beats per minute) udregnes sådan: 750/speed=bpm. [Nye kommandoer under "TRACKDISK" (eller hvad du nu kan finde på)] -S Disk Open drev Kommandoen åbner trackdisk.device, som skal bruges til alle trackdisk kom- mandoerne. Du skal altså bruge denne kommando inden du bruger nogen af de andre trackdisk kommandoer (ellers kommer der en fejlmeddelelse). Hvis kommandoen bruges flere gange, med forskellige drev parametre, lukkes trackdisk.device for de andre drev automatisk. -S Disk Close Lukker trackdisk.device, og frigiver system resourcer osv. -S Motor On Tænder diskette motoren. Der er ingen grund til at gøre dette, men da der er en motor off kommando, må der også være en motor on. -S Motor Off Slukker diskette motoren. Kommandoen bruges kun sjældent. -S Disk Read disk_offset,buffer_adresse,længde Kommandoen læser rå data fra disketten med den angivne længde, og lægger dem ind i bufferen. Offset på disketten angives i byte, og derfor må man kende lidt til disket- te strukturen. En diskette består (normalt) af 160 spor (80 på hver side), med hver 11 sektorer i. Hver sektor indeholder 512 bytes. Hvis vi nu vil læse 1. sektor af spor 10 bliver offset=512*11*10=56320. Bemærk at der er flere måde at betegne diskette strukturen på, man kan f.eks. bruge cylinder, som betegnelse for et spor på hver side. Se iøvrigt min artikel om trackdisk.device i DABG #1 fra oktober 1994. Kommandoen venter til læsningen er færdig, før den fortsætter, i modsætning til næste variant... -S Disk Send Read disk_offset,buffer_adresse,længde Er næsten magen til den ovenstående, men fortsætter programudførelsen, inden disketteoperationen er færdig. Dette er også grunden til at motoren ikke vil blive slukket automatisk, som normalt (brug "S Motor Off"). -S Disk Write disk_offset,buffer_adresse,længde Argumenterne svarer til "disk read" kommandoernes, men her skrives fra buf- feren til disketten. Trackdisk device understøtter to forskellige kommandoer til at skrive på disketten med, nemlig write og format. Forskellen er, at format kommandoen kun kan skrive hele spor ad gangen og at offset'et skal være starten på et spor. Fordelen er naturligvis en stor hastighedsforøgelse. "S Disk Write" bruger begge kommandoer og vælger automatisk format, hvis ar- gumenterne passer, ellers vælges write, som altid kan bruges. Dette betyder at du har muligheden for at speede disk operationerne geval- digt op, ved at skrive hele spor ad gangen. -S Disk Send Write disk_offset,buffer_adresse,længde Se "S Disk Write" og "S Disk Send Read". -S Disk Wait Kommandoen sørger for at fryse amos indtil alle diskette operationerne er færdige. Kommandoen bruges naturligvis i forbindelse med "S Disk Send Read" og "S Disk Send Write". -S Disk Abort Kommandoen stopper eventuelle igangværende diskette operationer inden de er færdige. -S Disk Update Trackdisk device har en buffer, som beholder den sidste sektor i hukommelsen, og altså ikke på disketten. Denne buffer bliver først skrevet på disketten ved næste read/write kommando, eller ved brug af denne kommando... -=S Disk State Funktionen returnerer -1, hvis der er en diskette i drevet, ellers 0. -=S Disk Prot State Funktionen returnerer -1, hvis disketten er skrive beskyttet, ellers 0. Hvis der ikke er nogen diskette i drevet, returneres værdien for den sidste diskette der var i. -=S Disk Changes Funktionen returnerer antallet af diskette skift siden sidste reset. Værdi- en stiger med 1 både når disketten tages ud, og når den sættes i. -=S Num Tracks Funktionen returnerer antallet af spor på disketten i drevet, som vil være 160 for en almindelig DD diskette, og det dobbelte for en HD diskette. Hvis der ikke er nogen diskette i drevet returneres -1. -=S Disk Dev Check Giver 0 hvis trackdisk device ikke er åbnet, og -1 hvis det er. -S Disk Rename Nyt_navn$ Kommandoen omdøber disketten til "Nyt_navn$". Navnet må ikke være over 30 bogstaver langt. Kommandoen har det problem, at efter omdøbningen skal disketten tages ud, og sættes ind igen, før systemet opdager navneforandringen. -=S Checksum (adresse) Dette er den eneste trackdisk kommando, som hverken kræver at trackdisk de- vice er åbnet, eller åbner det selv. Kommandoen regner simpelthen checksum- men ud for den sektor (512 bytes), der starter ved den angivne adresse. Checksummen er det longword (4 bytes tal), der står ved den 20. byte i en- hver normal sektor (bootblocks er ikke normale).