Bert Holgersson
<560>
· Text 4537 · w8 · kommentar
1988-12-24 15:33
Ärende: Vad gör man...
Din första fråga är just ett exempel på en fråga som kan ha olika
svar. Så, du hade normalt blivit bemött med en rad motfrågor om vad
du egentligen menar. Jag skall försöka prestera en "uppsats" så att
ni kan se problemet:
Enklaste fallet är väl att den "0":a eller "1":a du matar in, kommer
att användas i stränghantering för att bygga ett komplett filnamn, som
sedan användes i en BASIC sats typ "OPEN F¤ AS FILE 1"
Ex: Ditt inmatade svar (t.ex "0") finns i variabeln S¤
Den fil som skall öppnas heter "FOO.BAR"
Då skulle "byggandet" kunna se ut så här: F¤="DR"+S¤+":FOO.BAR"
Det kompletta filnamanet F¤ skulle bli: "DR0:FOO.BAR"
Om du skulle ändra detta enligt ditt önskemål,får du ändra i "byggandet"
så att du får mata in hela enhetsnamnet. Då skulle S¤ i det här fallet
få innehålla dina "MF0","SF0" o.s.v, och bygget av F¤ set ut så här:
F¤=S¤+":FOO.BAR
Och så tar vi den mera sofistikerade metoden:
Det nummer (0/1) som du matar in användes som något man kallar
"DriveSelectCode". Denna stopas in (POKE) direkt i systemvariabel
arean, ofta direkt före diverse CALL till doset. Detta värde talar
om för doset vilken controler och drive den skall prata med. Så, i
detta fallet får du alltså se till att det är rätt värde som stoppas
dit. Allt beroende på vilken enhet du valt.( Detta låter antagligen
*MYCKET* värre än det egentligen är !) De olika värden som finns står
beskrivet i t.ex. den nu famösa UFDPATCH.NY :-)
SelectCode:s 0/1/2 är speciella i UFD doset, pga att de kan resultera
i anrop till vilken enhet som helst ! Det styrs av av något som
kallas DefaultDriveOffset. Där lägger man in ett värde som anger
vilka enheter som skall anropas när enheten "DR_:" anges.
I ett system kan alltså 830 vara DF0,i ett annat kan 832 vara DF0 o.s.v.
Ja förresten, det kan skilja från tid till annan i SAMMA system också,
eftersom de variabler som styr dessa normalt läggs ut i RAM och därmed
också kan ändras "under drift".
Det kan vara händigt att lägga den "normala" offseten fast i dos, så
att man har den direkt vid uppstart. Jag har i "mitt" dos lagt in MF
(d.v.s 832) som den normala "DR_:" enheten.
Som ni ser kan det vara rätt stor skillnad på svaren i olika fall !
Vilket hade varit det rätta i ditt fall ??
Så till funderingarna om TED.
Myror och frågetecken skall du inte ägna någon möda åt ! Det är
"bara" ett lagringsformat. Är du intresserad av TED skall du istället
titta på källkoden. (som finns i monitorn). TED är nämnligen skriven
i assembler. Vill du ändra i den får du skriva assembler, och sedan
assemblera om.(Förslagsvis med programmet ASS, som kan ge dig ett program
i "myr" formatet)
Vill du växla mellan olika dos, får du switcha olika PROM hårvarumässigt,
alternativt köra i RAM och ladda olika dos.(Den senare varianten har
jag praktiserat själv)
Mvh BER
Ps Det jag nämner om UFD-dos ovan gäller "mitt" DIAB-UFD-dos. Det finns
andra mer eller mindre dåliga UFD-dos "ute i svängen". Ds