Commodore C1541 a

Page 1

COMMODORE

Diskettestation

1541

Brugervejledning

Page 2

Page 3

HÅNDBOG FOR VIC-1541 DISKETTEDREV

Page 4

Page 5

INDHOLDSFORTEGNELSE.

KAPITEL 1.

1.1 Forord 6
1.2 Almindelige oplysninger 6
1.3 Beskrivelse 6
1.3.1 Frontpanel 7
1.3.2 Bagpanel 8
1.3.3 Indvendig opbygning 8
1.3.4 Disketter 8
1.3.5 Specifikationer 9
1.4 Vedligeholdelse af VIC-1540 10
1.5 Vedligeholdelse af disketter 10

KAPITEL 2.

2.1 Så idan klargøres VIC-1540 til brug 11
2.1.1 Hv ordan VIC-1540 tilsluttes computeren 11
2.1.2 Af prøvning af nettilslutning 12
2.1.3 In ndlægning af diskette 12
2.1.4 Af prøvning af diskettedrevet 13

KAPITEL 3.

3.1 Sådan bruges VIC-1540 16
3.2 Styring af diskettens ledige kapacitet (BAM) 16
3.3 Disk-operativsystemet (DOS) 17
3.4 Kommandoer for klargøring og manipulation af
disketter 17
3.4.1 NEW 18
3.4.2 Klargøring af ny diskette 19
3.4.3 Filkataloget 21
3.4.4 LOAD$ 21
3.4.5 Udskrift af kataloget 22
3.4.6 VALIDATE 22
3.4.7 COPY 23
3.4.8 RENAME 24
3.4.9 SCRATCH 24

KAPITEL 4.

4.1 Basic-kommandoer til datahåndtering 25
4.1.1 Særlige BASIC-kommandoer til brug med diskettedrev 25
4.1.2 SAVE (gem et program på diskette) 25
4.1.3 VERIFY 26
4.1.4 LOAD (indlæser et program fra diskette) 27
4.1.5 OPEN 27
4.1.6 CLOSE 29
4.1.7 Lukning af kommandokanalen 29
4.1.8 Lukning af en datakanal 30
4.1.9 PRINT# 30
4.1.10 INPUT# 31
4.1.11 GET 梓 32
4.2 Overførsel af et program fra tape til diskette 33
Page 6

KAPITEL 5.

5.1 Dos og direkte tilgang til blokke 34
5.2 COMMODORE Disk-operativsystemet 34
5.3 OPEN og CLOSE-instruktioner (bufferkommunikation) 35
5.4 Kommandoer til direkte filbehandling 35
5.4.1 BLOCK-READ 37
5.4.2 BLOCK-WRITE 37
5.4.3 BLOCK-EXECUTE 37
5.4.4 BUFFER-POINTER 38
5.4.5 BLOCK-ALLOCATE 38
5.4.6 BLOCK-FREE . 39
5.4.7 MEMORY 39
5.4.7.1 MEMORY-WRITE 39
5.4.7.2 MEMORY-READ 40
5.4.7.3 MEMORY-EXECUTE 40
5.4.8 USER 4 O
5.5 Diskettens struktur 41

KAPITEL 6.

6.1 Sekventielle filer 46
6.1.1 Hvordan en sekventiel fil dannes og bruges 46
6.1.2 Tilføjelse til sekventielle filer (append) 47
6.1.3 Eksempel med sekventiel fil 47

KAPITEL 7.

7.1 Relative filer 49
7.2 Opret en relativ fil 50
7.3 Udvidelse af en relativ fil 52
7.4 Tilgang til en relativ fil 53
7.5 Søgning på nøgler 56

KAPITEL 8.

8.1 Filer med direkte tilgang (RANDOM ACCES) 58
8.1.1 Datastrømme ved filer med direkte tilgang 58
8.1.2 Eksempel på brug af postnummer 60
8.1.3 Programeksempel (RANDOM ACCES) 62

KAPITEL 9.

9.1 Fejlmeddelelser og filhåndtering med fællestræk i
filnavnene (pattern matching) 63
9.2 Oversigt over DOS fejlkoder 63
9.3 Beskrivelse af DOS fejlkoder 64
9.4 Brug af fællestræk i filnavne (pattern matching) 69
Page 7

TILLÆG.

TEST/DEMO-disketten

OVERSIGT OVER ILLUSTRATIONER.

Figur:

1. Frontpanel 7
2. Bagpanel 8
3. Diskettestationens forbindelse til computeren 11
4. Sådan skal indsættes disketten 13
5. VIC-1540-format 45
6. Datastrømme mellem computer, bufferlager og
diskettedrevet 58

OVERSIGT OVER TABELLER.

Tabel 1 Litteratur 6
Tabel 2 Specifikationer for VIC-1540 9
Tabel 3 Standard jump tabel 41
Tabel 4 Antal blokke pr. spor 41
Tabel 5 VIC-1540 BAM format 42
Tabel 6 Filkatalogets hoved (directory header) 42
Tabel 7 Filkatalogets format 42
Tabel 8 Sekventielt filformat 43
Tabel 9 Programfilers format 43
Tabel 10 Relativt filformat 43
Tabel 11 Postnumrenes fordeling på spor og blok 61
Page 8
1.1 FORORD.

Med anskaffelsen af Commodore VIC-1540 diskettedrev har De opnået en væsentlig udvidelse af de muligheder, De har for at arbejde med Deres VIC-20 computer.

For at få størst mulig glæde af Deres edb-anlæg, bør De studere brugervejledningen til VIC-20 og om nødvendigt de Basicgrundbøger, som er opregnet i litteraturlisten, tabel 1.

Videre får De størst udbytte af VIC-1540 diskettedrevet, når De har studeret nærværende håndbog omhyggeligt og noteret Dem de specielle egenskaber, som Deres diskettedrev har – såvel som de egenskaber, der er fælles for alle Commodore diskettedrev. Der anvendes i denne brugervejledning betegnelsen Ø for tallet nul (0) i programmeringssammenhæng for at undgå forveksling med bogstavet 0.

VIC 20 Brugervejledning. VIC 20 Programmers Ref erence Guide. VIC Revealed.

Tabel 1. Litteratur.

1.2 ALMINDELIGE OPLYSNINGER.

Oplysningerne i denne brugervejledning er meget omfattende, og kan i nogle tilfælde kræve en viden, der ligger udenfor Deres nuværende erfaring. Men bliv ikke forskrækket: Når De læser brugervejledning grundigt og med en smule omtanke, vil De snart blive fortrolig med brugen af diskettedrevet.

1.3 BESKRIVELSE.

Diskettedrevet, som denne håndbog handler om, er en "intelligent" enhed, der kan lagre data og programmer på en diskette. De vigtigste dele er 1) elektronik, som styrer læse-skrive-rutinerne, 2) elektronik, som styrer diskettedrevets elmotorer, 3) drev-mekanismen, læse-skrivehovedet og mekanismen, som bestemmer placeringen af de magnetiske spor på disketten.

Diskettedrevet, bruger samme serielle koblingsstik, som VIC-1515 grafisk printer.

Da diskettedrevet er en "intelligent" ydre enhed, optager dets funktioner ikke plads i datamatens arbejdslager. Det betyder, at De har samme arbejdslager til rådighed, uanset om diskettedrevet er tilsluttet Deres computer eller ej.

Page 9

3.1 FRONTPANEL. ontpanelet på diskettedrevet rummer en navneplade, en åbning til disketten og et greb til lukning og åbning af diskettedrevet. når en diskette skal isættes eller udtages af diskettedrevet. På frontpanelet findes også 2 lysdioder. en rød og en grøn.

Den røde lysdiode tænder, når diskettedrevet arbejder med læsning eller skrivning af informationer, og blinker, hvis der opstår en fejlsituation. Den grønne lysdiode er indikatorlampe for nettilslutning.

Page 10

Introduktion

1.3.2 BAGPANEL.

Bag på diskettedrevet findes to serielle koblingsstik. For neden på bagpanelet findes et stik for nettilslutning. Ved siden af denne sidder en holder til en træg sikring.

Fig. 2. Bag panel.

1.3.3 INDVENDIG OPBYGNING.

Indvendigt består diskettedrevet dels af selve drevmekanismen, dels af styreelektronikken, som rummer diskettedrevets logik, "intelligens". De mekaniske dele befinder sig for størstedelens vedkommende i den nederste del af apparatet under disketteåbningen.

1.3.4 DISKETTER.

Disketten, også betegnet "minifloppy", floppy disk, minidiskette og lignende, er i overensstemmelse med standard, og findes i mange fabrikater. Størrelsen er 5 1/4 tomme, og De bør sikre Dem, at De får disketter, fremstillet til SOFT SECTOR-formattering. Deres lokale Commodore-forhandler kan levere sådanne disketter.

Page 11

1.3.5 SPECIFIKATIONER. Tabel 2. Specifikationerne for VIC-1540: Kapacitet i alt 174848 bytes/diskette 168656 bytes/diskette Relativt 167132 bytes/diskette, 65535 records pr. fil Kataloget omfatter maks, 144 filnavne/diskette Antal sektorer 17 - 21 pr. spor 256 nr. sektor Antal bytes Antal blokke 683 (664 til rådighed) INTEGREREDE KREDSE Mikroprocessor Ind/ud-styring, intervaltimere Bufferlager 4 stk. 2114. 2 Kbytes arbeidslager TEKNISKE SPECIFIKATIONER 97 mm. 200 mm. 374 mm. Netspænding 220 V vekselstrøm 50 eller 60 hz Strømforbrug 25 W Disketter Standard mini 5 1/4" single sided, single density soft sectored

Page 12

1.4 VEDLIGEHOLDELSE AF VIC-1540.

Diskettedrevet bør placeres på en plan flade, hvor det kan stå sikret mod rystelser. Det er vigtigt, at snavs og støv holdes på et minimum, idet ansamlinger af støv eller snavs kan forstyrre diskettedrevets funktion.

Opstår der fejl på diskettedrevet, bør De kontakte Deres Commodore-forhandler. Hvis De selv forsøger Dem som reparatør, bortfalder garantien.

1.5 VEDLIGEHOLDELSE AF DISKETTER.

Disketter må behandles varsomt. Reglerne herunder må følges nøje, hvis De ønsker at opretholde sikker funktion af Deres disketter, og beskytte de data, De har lagret.

  • A. Læg altid disketten tilbage i det medfølgende omslag, når den har været brugt.
  • B. Hold disketter langt væk fra magnetfelter, såsom transformatorer, farvefjernsyn og lignende. Da data lagres på disketten ad magnetisk vej, kan selv en svag, uvedkommende magnetisme ødelægge disse data.
  • C. Læg aldrig en diskette direkte oven på Deres datamat eller på diskettedrevet.
  • D. Skriv aldrig direkte på disketten med kuglepen eller blyant. Brug enten en filtpen, eller skriv på de medfølgende, selvklæbende etiketter.
  • E. Udsæt aldrig en diskette for varme eller direkte sollys.
  • F. Forsøg aldrig at rengøre diskettens overflade. Selv små afskrabninger af den magnetiske belægning kan gøre disketten ubrugelig eller medføre, at data forsvinder.
  • G. Slut aldrig netspænding til diskettedrevet mens der er en diskette i drevet.
Page 13
2.1 SÅDAN KLARGØRES VIC-1540 TIL BRUG.

Før De starter diskettedrevet, bør De sikre Dem, at det nu også er klar. D.v.s er korrekt forbundet til VIC 20, at De har kontrolleret nettilslutningen, og at først den grundlæggende kontrol, og derefter funktionskontrollen (ved hjælp af TEST/DEMO-disketten) er gennemført.

2.1.1 HVORDAN VIC-1540 TILSLUTTES COMPUTEREN.

Det medfølgende forbindelseskabel er nødvendigt for at sikre en god, stabil forbindelse mellem Deres computer og VIC-1540. Bemærk, at hvis De serieforbinder flere apparater med computeren, skal diskettedrevet være nummer 1 i rækken – nærmest computeren. Følgende fremgangsmåde må anvendes, når diskettedrevet skal tilsluttes:

  • A. Sluk computeren og eventuelt modermodul.
  • B. Anbring diskettedrevet nær ved computeren. Tænd ikke endnu.
  • C. Forbind computeren og diskettestationen med det medfølgende kabel.
  • D. Monter netkablet og sæt stikket i en stikkontakt - men T&ND ENDNU IKKE FOR STRØMMEN.

Fig. 3. Diskettestationens forbindelse til computer.

Page 14
2.1.2. AFPRØVNING AF NETTILSLUTNING.

Tilslutning af diskettestation til lysnet:

Når alle enheder er blevet forbundet, kan anlægget tilsluttes lysnettet.

NB! DET ER VIGTIGT, AT COMPUTEREN ALTID TÆNDES SIDST !

Det er uden betydning, i hvilken rækkefølge man tænder de øvrige enheder, når man blot husker, at computeren ALTID skal tændes til sidst.

Luk disketteporten på frontpanelet op og kontroller, om der skulle sidde en diskette i drevet - i så fald fjernes den.

Tænd nu for diskettestation, printer og evt. skærm.

Først når alle øvrige enheder er tændt, skal man tænde for computeren. Herefter vil alle enheder udføre en startprocedure. Printerens motor vil starte, og skrivehovedet vil bevæge sig. 1541 - diskettestationen vil starte med at tænde både den røde fejlindikator og den grønne kontrollampe. Efter ca. et sekund skal den røde lampe slukke, mens den grønne skal blive ved med at lyse. Herefter kommer startbilledet frem på skærmen.

Hvis den røde fejl/læse-skrive indikator på diskettestationen ikke holder op med at blinke, er stationen ikke klar til drift.

I så fald kan De muligvis kun få diskettedrevet til at arbejde korrekt, hvis De frakobler eventuelle andre apparater fra det samme serielle stik. Derved undgår De, at en eventuel fejl i en af disse andre enheder påvirker diskettedrevet og udløser en fejlmelding.

2.1.3. INDLÆGNING AF DISKETTE (frontpanel Fig. 1. A.) (Har Deres diskettestation frontpanel Fig. 1. B, se da venligst tillæg, side 74.

HUSK: De må ikke tænde for strømmen til Deres diskettedrev hvis der er en diskette i.

  • A. Kontroller, at den grønne lampe på diskettedrevet er tændt.
  • B. Luk nu disketteporten på frontpanelet op og læg en diskette i drevet.
  • C. Disketten skal vende som vist på figur 4. Bemærk den lille udskæring på disketteomslagets ene kant. Denne udskæring skal vende mod venstre.
  • D. Disketten presses helt ind i disketteporten med et let tryk, indtil den ikke kan komme længere.
Page 15

  • E. Luk klappen med en fast bevægelse, til håndgrebet springer ud i låsestilling. Disketten er nu sikret og låst fast på diskettedrevets kapstanaksel, klar til brug.
  • F. For at få disketten ud, skal håndgrebet trykkes let indad, til det under fjederpres bevæger sig opad. Samtidig vil disketten skubbes så langt ud af disketteporten, at den let kan fattes og fjernes med et blidt træk.

Fig. 4. Sådan indsættes disketten.

2.1.4 AFPRØVNING AF DISKETTEDREVET.

Hvis afprøvningen af nettilslutningen er forløbet heldigt, skal diskettedrevet prøves. Det er uden betydning om hele denne sekvens forstås på nuværende tidspunkt. De skal blot indtaste kommandoerne, for at få en fornemmelse af hvad diskettedrevet kan. Hvis et uventet resultat på noget tidspunkt opnås, stop og start forfra igen. Det er sandsynligt at De har indtastet noget forkert. Det er hvad man kan forvente i begyndelsen.

Alle kommandoer indtastes via tastaturet og skal efterfølges af tryk på return-tasten <RETURN>.

BEMÆRK :

Kommandoer skal indtastes nøjagtigt, som vist. Indsæt ikke blanke med mindre de er vist i eksemplet. Hvis fejllampen lyser, kan det være muligt at fortsætte. Genindtast den sidste kommando. Hvis lyset går ud, gik korrektionen godt, og De kan fortsætte.

Page 16

  • A. Indsæt DEMO disketten i diskettstationen som tidligere omtalt.
  • B. Tast : OPEN 1,8,15,"I" og tryk på <RETURN>. Dette vil initialisere disketten og gør den klar til brug.
  • C. Tast : LOAD "PERFORMANCE TEST",8

Skærmen viser : SEARCHING FOR PERFORMA NCE TEST LOADING READY.

D. Tast : RUN og tryk <RETURN>

Følgende ses på skærmen :

PERFORMANCE TEST

INSERT SCRATCH

DISKETTE IN DRIVE

PRESS SHOULD

WHEN READY

Brug ikke disketter, som indeholder data, idet denne informationer vil blive slettet. Programmet laver en formattering af disketten, hvilket sletter alle de data, som måtte ligge på Testprogrammet vil give den diskette, der sættes i, navnet "TEST DISK". Disketten er klar til brug når testprogrammet er kørt færdigt. Computeren vil først formattere disketten. Dernæst vil følgende fremkomme på skærmen : NØ:TEST DISK,00 DISK NEW COMMAND WATT ABOUT SO SECONDS a ok a a DRIVE PASS MECHANICAL TEST OPEN WRITE FILE а ока а

WRITING DATA

  • 0 OK 0 0
  • CLOSE WRITE DATA
Page 17

  • E. Luk klappen med en fast bevægelse, til håndgrebet springer ud i låsestilling. Disketten er nu sikret og låst fast på diskettedrevets kapstanaksel, klar til brug.
  • F. For at få disketten ud, skal håndgrebet trykkes let indad, til det under fjederpres bevæger sig opad. Samtidig vil disketten skubbes så langt ud af disketteporten, at den let kan fattes og fjernes med et blidt træk.

Fig. 4. Sådan indsættes disketten.

2.1.4 AFPRØVNING AF DISKETTEDREVET.

Hvis afprøvningen af nettilslutningen er forløbet heldigt, skal diskettedrevet prøves. Det er uden betydning om hele denne sekvens forstås på nuværende tidspunkt. De skal blot indtaste kommandoerne, for at få en fornemmelse af hvad diskettedrevet kan. Hvis et uventet resultat på noget tidspunkt opnås, stop og start forfra igen. Det er sandsynligt at De har indtastet noget forkert. Det er hvad man kan forvente i begyndelsen.

Alle kommandoer indtastes via tastaturet og skal efterfølges af tryk på return-tasten <RETURN>.

BEMÆRK :

Kommandoer skal indtastes nøjagtigt, som vist. Indsæt ikke blanke med mindre de er vist i eksemplet. Hvis fejllampen lyser, kan det være muligt at fortsætte. Genindtast den sidste kommando. Hvis lyset går ud, gik korrektionen godt, og De kan fortsætte.

Page 18

  • A. Indsæt DEMO disketten i diskettstationen som tidligere omtalt.
  • B. Tast : OPEN 1,8,15,"I" og tryk på <RETURN>. Dette vil initialisere disketten og gør den klar til brug.
  • C. Tast : LOAD "PERFORMANCE TEST",8

Skærmen viser : SEARCHING FOR PERFORMA NCE TEST LOADING READY.

D. Tast : RUN og tryk <RETURN>

Følgende ses på skærmen :

PERFORMANCE TEST

INSERT SCRATCH

DISKETTE IN DRIVE

PRESS SHARA

WHEN READY

Brug ikke disketter, som indeholder data, idet denne informationer vil blive slettet. Programmet laver en formattering af disketten, hvilket sletter alle de data, som måtte ligge på den. Testprogrammet vil give den diskette, der sættes i, navnet "TEST DISK". Disketten er klar til brug når testprogrammet er kørt færdigt. Computeren vil først formattere disketten. Dernæst vil følgende fremkomme på skærmen :

NØ:TEST DISK,00 DISK NEW COMMAND WAIT ABOUT 80 SECONDS 0 OK 0 0 DRIVE PASS MECHANICAL TEST OPEN WRITE FILE 0 OK 0 0 WRITING DATA 0 OK 0 0 CLOSE WRITE DATA

Page 19

A OK A A OPEN READ FILE а пка а READING DATA ROKA A SO TEST EUE SCRATCH FILE а ока а B-P 4 49 WRITE TRACK 35 aokaa 12:4 0 1 0 WRITE TRACK 1 а пка а U1: 4 0 35 0 READ TRACK 35 ankaa U1:4 0 1 0 READ TRACK 1 0 OK 0 0 UNIT HAS PASSED PERFORMANCE TEST! PULL DISKETTE FROM DRIVE BEFORE TURNING POWER OFF.

Computeren udfører så resten af Performance Test og viser :

  • E. Fjern disketten og læg den i beskyttelsesetuiet. Diskettestationen har bestået sin prøve.
  • F. Hvis der under testen er opstået problemer, så vend tilbage til punkt A. og gentag hele proceduren. Hvis problemerne fortsætter, og De ikke når et korrekt resultat af testen, skal De kontakte deres Commodore-forhandler.
Page 20

3 I SÅDAN BRUGES VIC-15/1

Deres diskettedrev føjer mange muligheder til Deres computer: muligheden for at lagre og genfinde større mængder data eller programmer, håndtering af filer og sammenfletning af større programstrukturer. De kontrollerer diskettedrevet ved hjælp

Basic-kommandoer, indført fra computerens tasta-Basic-instruktioner i en programlinie. eller med særlige styrekommandoer.

I dette kapitel lærer De at bruge disse kommandoer og instruktioner. Kapitlet er organiseret, så beskrivelserne af kommandoer og rutiner giver mulighed for udførelse af diskrelaterede opgaver. Før De starter, bør De have sat Dem grundigt ind i brugerveiledningen til computeren. De må kende til programmering i Basic, og endelig må De vide noget om at åbne og lukke filer.

Dette kapitel vil først lære Dem en række grundlæggende diskkommandoer, som styring, klargøring og manipulation af disketter og filer. Siden går kapitlet videre med henblik på forståelse af de Basic-instruktioner, som benyttes til håndtering af data. De bør øve Dem på diskkommandoerne, studere eksemplerne og følge de trinvist opbyggede illustrationer omkring brugen af kommandoerne. Forståelsen af de mere avancerede programmeringsteknikker vedrørende diskettedrevet afhænger i vid udstrækning af. om De har forstået de grundlæggende regler.

To vigtige begreber omtales i dette afsnit og det er Block Availability Map (BAM- kan oversættes ved begrebet "det interne. elektroniske kort over ledig plads på disketten") og DOS. Disk Operating System, (DOS kan oversættes til "disk-styringssystemet")

3.2 STYRING AF DISKETTENS LEDIGE KAPACITET (BAM).

BAM er en "fortegnelse" over ledig plads på en diskette, i form af nogle data, som automatisk indlæses af DOS på en bestemt del af disketten. Når De beslutter, at en datamængde skal lagres på disketten, undersøger DOS udfra BAM, hvor der er ledig plads, og hvor mange ubenyttede blokke på disketten, DOS kan disponere over. Er der plads nok til de aktuelle data, sørger DOS selv for, at BAM tilføjes oplysningerne om hvor meget plads de nve data bruger (og hvor). Hvis DOS udfra BAM kan forstå, at der ikke er plads til de aktuelle data på diskette, udløser DOS en fejlmelding.

BAM skabes i samme øjeblik, man formatterer en ny diskette. BAM-ontegnelserne lagres på disketten i spor 18 sektor 0 og omfatter 128 bytes. Hver gang, der sker ændringer med BAM i DOS, vil BAM på disketten blive ændret på tilsvarende vis. BAM opdateres således hver gang et program lagres eller ordren CLOSE udføres på en nylagret. SEQuentiel datafil.

Page 21
3.3 DISK-OPERATIVSYSTEMET (DOS).

DOS er ansvarlig for styringen af informationernes vandring mellem diskkontrol og computeren. DOS udfører mange ordrer. som er "usynlige" for brugeren, men som har stor betydning for hele systemets funktion. For eksempel administrerer DOS hele ind- og udlæsning af diskettens indhold, så informationerne styres ad de mest hensigtsmæssige kanaler. og man ikke skal vente på at få åbnet nogen speciel, relevant datarute (kanal). Foruden styring af inddata-uddataprocesserne overvåger DOS de dataveje som anvendes til at finde diskettens elektroniske "katalog" og hente det frem til brugerens orientering. Endelig styrer DOS al kopiering og sletning af filer.

3.4 KOMMANDOER FOR KLARGØRING OG MANIPULATION AF DISKETTER.

De følgende instruktioner/kommandoer tillader brugeren at manipulere med filer eller pleje diskettens indhold på forskel-

Basic-ordre Funktion
NEW Formatterer en ny diskette
INITIALIZE Forbereder disketten til
brug
LOAD" $ " Læser diskettens "indholds-
fortegnelse"
VALIDATE Rekonstruerer BAM
ULA FION :
СОРҮ Kopierer eller sammenkæder
filer
RENAME Tildeler nyt navn til en
fil
SCRATCH Sletter en fil

BEMÆRK :

Diskettekommandoer kan overføres til disketten ved hjælp af PRINT#-kommandoen. Eksemplerne i dette afsnit forudsætter. at en fil er blevet åbnet med åbningskommandoen : OPEN15.8.15 Hvis fejlmeldingen ?FILE OPEN ERROR fremkommer når OPEN-kommandoen skrives, betyder det, at den logiske fil allerede er åbnet. Feilen kan rettes ved at lukke filen med kommandoen : CLOSE 15.

Page 22

Side 18

3.4.1 NEW.

Hver gang en diskette anbringes i diskettestationen, må den klargøres. Drejer det sig om en diskette, der overhovedet ikke har været brugt før. må den først formatteres i softsektorformatet, som Deres diskettedrev anvender. Dette sker med kommandoen NFW NEW-kommandoen bruges til at formattere disketten og klargøre diskettedrevet, følgende kommando indtastes :

PRINT#15. "kommandostreng"

15 er det logiske nummer på en fil, som er åbnet ud til diskkommandokanalen, hvis primære adresse er 8 og sekundære a-

Formatet i NEW-kommandostrengen er:

"NEWdr:fn.xx"

"Ndrtfn.xx"

hvor dr = drevnummer Ø (nul kan udelades), fn = det "navn". som disketten ønskes tildelt - disknavne kan bestå af op til 16 tegn - og endelig er xx et totegns, alfanumerisk identitetsmærke, som De også selv kan vælge. Kun tal og bogstaver

NEW-kommandoen kan anvendes på en uformatteret diskette. eller på en diskette, som ønskes omformatteret. NEW udløser tildeling af header (hoved som på en avis) til hver blok på disketten, indlæsning af synkroniseringstegn og identitetsmærke på disketten og endelig vil NEW-kommandoen tildele spor- og bloknumre. Header for diskette-kataloget påføres, og BAM oprettes og placeres på disketten. Disketten er herefter klargjort til indlæsning af data og programmer.

NEW Kommandoen kan desuden bruges uden identitetsmærke, hvis De ønsker at slette en hel diskette slette dens indholdsfortegnelse og tilbagestille BAM til maksimum ledige kapacitet. Herefter vil De kunne overskrive alle "gamle" blokke med nvt materiale - ganske som om disketten var helt nvformatteret. Det er hurtigere at rense en gammel diskette på denne måde (uden nyt ID-mærke), end at omformattere med ID.

EKSEMPEL :

OPEN15.8.15 PRINT#15, "NØ:TESTDISK,88"

Page 23

Denne kommando vil åbne kommando- og feilkanalen til diskettedrevet og formattere en diskette, idet disketten tildeles navnet TESTDISK og identitetsmærket ("ID") 88.

Følgende kommando udfører det samme, men er enklere:

OPENIS 8.15 "NØ TESTDISK.88"

Herunder er et eksempel på formattering af en diskette uden brug af ID:

OPEN15.8.15. "NØ:NYT NAVN"

Disketten vil i dette tilfælde få navnet NYT NAVN, mens indholdsfortegnelsen og BAM bliver stillet, som om disketten var helt nyformatteret. Husk dog på, at denne metode kun kan anvendes ved en i forvejen "rigtigt" formatteret diskette. Bland heller ikke begreberne omkring kommandoen NEW i diskettesammenhæng sammen med kommandoen NEW i almindelig Basic. Den sidste vil medføre, at et program, som befinder sig i computerens arbejdslager, bliver slettet sammen med alle programmets variabler. NEW i den sidste forbindelse anvendes kun når man ønsker at rense computerens "hukommelse" forud for en ny opgave.

New sletter alt hvad der måtte være på disketten !!!

3.4.2 KLARGØRING AF NY DISKETTE.

Hver gang en diskette lægges ind i diskettedrevet, uanset årsagen, må disketten initialiseres, klargøres, for at sikre. at informationerne i BAM på disketten svarer til indholdet i diskettedrevets BAM-hukommelse. Diskettedrevet må "lære den aktuelle diskette at kende".

Undlader man denne initialisering, vil man få en feilmelding. DISK ID MISMATCH ERROR, og man risikerer, at data eller programmer på disketten går tabt.

VIC-1540 anvender en DOS 2.6 programrutine hver gang man kalder op til en diskette. Denne rutine undersøger, om initialisering af disketten er påkrævet, og hvis DOS finder, at disketten har et andet ID-mærke end det ventede, vil DOS automatisk initialisere disketten. De får således aldrig brug for at initialisere disketter med en særlig kommando, så længe De sørger for at anvende forskellige ID-mærker på Deres disket-

Page 24

Side 20 Hvordan bruges diskettedrevet

Formatet for initialiseringskommandoen er :

PRINT#15, "INITIALIZEdr"

hvor dr = drevnummer Ø (nullet kan udelades). Bemærk, at kommandoen INITIALIZE kan forkortes til I.

EKSEMPEL :

OPEN15,8,15

PRINT#15,"IØ"

eller :

Man kan også udelade det sidste, afsluttende anførselstegn. Bemærk videre, at en FILE OPEN ERROR (fejlmelding) kan fremkomme, hvis De adresserer en allerede åbnet fil med OPEN-kommandoen. Når denne fejltilstand opstår, må en sådan logisk fil lukkes med CLOSElfn-kommandoen, før De kan komme videre.

Disketten i diskettedrevet er nu initialiseret. Bland ikke begreberne omkring initialisering og formattering sammen. Husk, at formattering som hovedregel kun skal udføres en gang på en diskette – nemlig når den tages i brug for første gang. En senere formattering (en omformattering) vil slette alle de data eller programmer, De har på den pågældende diskette.

Da automatisk initialisering af en diskette alene beror på, at DOS opdager et andet ID-mærke, end det, som findes i diskettedrevets hukommelse, vil brug af flere disketter med sam- me identitetsmærke udløse en farlig situation, hvor disket- tens indhold kan gå helt eller delvist tabt. Det sker, fordi de enslydende ID-mærker forleder DOS til at tro, at der slet ikke er skiftet diskette. DOS har i forvejen den tidligere anvendte diskettes BAM "i tankerne", og vil forsøge at anbringe data på den nye diskette i henhold til den gamle diskettes BAM. Skal De f.eks. SAVE et program, vil der næsten med sikkerhed blive skrevet nye informationer ned oven i eksisterende, uden at DOS på noget tidspunkt vil drømme om at reagere med en fejlmelding - DOS vil jo tro, at den "kender" den nye diskette, fordi ID-mærket på den nye diskette svarer til den gamle diskettes ID-mærke.

Resultatet af sådanne fejl er uforudsigelige. I mange tilfælde fald vil disketten blive helt ubrugelig. Alene af denne grund bør De anvende forskellige ID-mærker til forskellige disketter, og fastholde ID-mærkerne sidenhen, også hvis disketten omformatteres. ID-mærkerne er i øvrigt praktiske at anvende, når man vil katalogisere sin diskettesamling.

Page 25

KAPITEL 3 Hvordan bruges diskettedrevet Side 21

3.4.3 FILKATALOGET.

Når De har sikret Dem. at en ny diskette har fået det ønskede ID og disknavn, kan De bruge følgende teknik for at få udskrevet diskettens indhold af filnavne og andre "katalog"oplysninger på skærmen. Kataloget rummer følgende oplysninger

Diskettens ID-mærke Antal benyttede blokke pr. fil Antal blokke til rådighed for nye data

For at få udskrevet kataloget tastes LOAD"$Ø" 8 eller LOAD"$".8

3.4.4 LOAD$.

LOAD"$",8 er destruktiv, hvilket vil sige, at hvis der ligger et program i computeren, bliver det slettet i samme øjeblik.

A. Læg en formatteret diskette i diskettedrevet. B. Tast LOAD"$".8 og RETURN. LOAD"$".8 SEARCHING FOR $ READY. C. Tast LIST

Kataloget for den aktuelle diskette vises på skærmen.

Page 26

3.4.5 UDSKRIFT AF KATALOGET.

Undertiden ønsker man en papirkopi af kataloget. Det kan lade sig gøre med en printer tilkoblet diskettedrevet/computeren.

Kommandoerne er følgende :

LOAD"$",8 Indlæser kataloget.
OPEN4,4:CMD4 Åbner en datakanal til
printeren (enhed nr. 4)
LIST Udskriver kataloget på
printeren.
PRINT#4:CLOSE4 Lukker datakanalen til
printeren og giver kontrol
len tilbage til computeren
3.4.6 VALIDATE.

Hver datablok på disketten gennemgås, og hvis denne gennemgang lykkes, dannes et nyt BAM i diskettestationens lager. BAM'en overføres så til disketten. Alle de blokke som er fundet, men som ikke er knyttet til noget filnavn, frigives til brug og optræder i BAM som fri plads.

Foruden rekonstruktionen af BAM sletter VALIDATE alle de filer, som på det pågældende tidspunkt ikke er lukket korrekt. Hvis READ-fejl forekommer i løbet af en VALIDATE, afbrydes funktionen, og disketten forbliver, som den var før VALIDATEinstruktionen. Forekommer der en VALIDATE-fejlmelding, må disketten initialiseres, før en ny VALIDATE kan udføres.

PRINTHIS "VALTDATEdr"

hvor dr = drev nummer Ø (nullet kan også her udelades). Validate kan forkortes til V.

FKSEMPEL .

OPEN1.8.15

PRINT#1."VØ"

eller:

OPEN1,8,15,"V"

BEMÆRK :

VALIDATE sletter direkte filer !!!. da disse ikke er opført i filkataloget.

Page 27

3.4.7 COPY.

Denne kommando kopierer en fil (men under et andet navn) på den samme diskette. Den kan også bruges til at sammenkæde filer med. Under en "hovedfil" kan man sammenkæde op til fire andre filer. COPY-kommandoen kan forkortes til C. Kommandoen kan optræde i to former, afhængig af den sammenhæng eller den opgave, kommandoen skal bruges i.

For at kopiere en enkelt fil:

PRINT#lfn "COPYddr.dfn-sdr.sfn"

eller kortere ·

PRINT#lfn."Cddr:dfn=sfn"

PRINT#1fn "C.dfn-sfn"

Det ses af disse eksempler, at COPY kan forkortes til C og. at sdr og ddr kan udelades. Blot skal ':' blive stående efter

For at sammenkæde og kopiere:

PRINT#lfn,COPYddr:dfn=sdr:sfn,sdr:sfn..."

eller kortere :

PRINT#lfn. "C:dfn=sfn.sfn..."

hvor ddr = det drevnummer (distination drive), hvor det samlede resultat af kopieringen (sammenkædningen) skal ligge. Dette skal være et navn som ikke eksisterer på den pågældende diskette, idet kopieringen ellers ikke foretages, sdr = nummeret på den port (source drive), i hvilken den fil, som skal kopieres ligger (Ø - nullet kan udelades), og sfn = navnet på den fil, som skal kopieres.

BEMÆRK : Det er ikke muligt med denne metode at sammenføje programstumper til en større programhelhed, kun datafiler.

EKSEMPEL :

PRINT#1."CØ:PROG1=Ø:TEKST1"

En fil med navnet TEKST1 kopieres over under navnet PROG1.

EKSEMPEL :

PRINTEL. "CO: JDATA=O: FILL O: ADATA. O: BDATA"

Her kædes en række filer sammen til 1 fil. Bemærk, at filnavnene ikke må være længere end højest nødvendigt, da maksimumlængden for en disk-kommandostreng er 4Ø tegn.

Page 28

Bemærk videre, at COPY-kommandoen normalt anvendes i dobbelte diskettedrev, for at overføre filer fra en diskette til en anden (sikkerhedskopiering og lignende). Denne egenskab kan ikke udnyttes direkte med VIC-1540, som er et enkelt diskettedrev.

3.4.8 RENAME.

RENAME-kommandoen tildeler nyt navn til en eksisterende fil. Bruges RENAME til at tildele en fil et navn, som allerede er i brug på den pågældende diskette til en anden fil, opstår feilmeldingen FILE EXISTS (filen eksisterer allerede).

RENAME-kommandoen har dette format :

PRINT#1fn "RENAMEdronfn-gfn"

hvor dr = drevnummer Ø (nullet kan udelades), nfn = nvt filnavn. og gfn = filens hidtidige navn. lfn er som før det logiske filnummer. RENAME kan forkortes til R.

Husk også her, at DOS nægter at RENAME en fil, hvis den pågældende fil ikke er lukket korrekt. En aktiv, åben fil kan ikke RENAME's

3.4.9 SCRATCH.

SCRATCH-kommandoen sletter uønskede filer fra såvel disketten som dens katalog. Man kan med en enkelt kommando slette en eller flere filer på disketten. SCRATCH bruges således:

PRINT#lfn "Sdr:fn dr:fn... dr:fn"

hvor dr = drevnummer Ø (nullet kan udelades). fn = navnet på den fil. som ønskes slettet. Skal kun en enkelt fil slettes, er kommandoen f.eks. :

PRTNT#1 "SØ+PROGRAM1"

Læg mærke til, at SCRATCH kan forkortes til S.

Flere filer med forskellige navne kan slettes således:

PRINT#1, "SØ: PROGRAM1, PROGRAM2, PROGRAM3"

Hvis de filer, som skal slettes, har fællestræk i filnavnene, kan man eventuelt følge anvisningerne i kapitel 8. som blandt andet handler om udnyttelse af fællestræk i filnavne, og om hvordan dette forhold kan udnyttes i forenkling af kommandostrukturerne. For at slette samtlige filer på en diskette er det tilstrækkeligt at taste :

PRINT ± 1,"SØ:★"

Page 29

4.1 BASIC-KOMMANDOER TIL DATAHÅNDTERING.

4.1.1 BASIC KOMMANDOER TIL BRUG MED DISKETTEDREV.

Basic-kommandoerne i dette kapitel tillader brugeren at kommunikere med og overføre data til og fra disketteporten. De nedenfor anførte kommandoer er fælles for alle versioner af Commodore Basic.

OPENIfn,8,sa,"dr:fn,ft,funktion" CLOSEIfn LOAD"dr:fn",8 SAVE"dr:fn",8 VERIFY"dr:fn",8 PRINT#lfn GET#lfn

INPUT#1fn

hvor lfn = logisk filnummer, (kan være 1-255), fn = filnavn, som brugeren selv vælger, dr = port nummer (Ø -nul- kan udelades), 8 er enhedens nummer (diskettestationen har nummer 8 og printeren nummer 4 eller 5). sa = en sekundær adresse, ft = filtype (kan være SEQuentiel, USR for USER eller PRG for program), og endelig betegner funktion enten READ (R) eller WRITE (W). Alle tegn, som er vist med store bogstaver i listen herover, skal tastes ind som de står for at sikre, at computeren forstår instruktionerne. Disse kommandoer indføres ved hjælp af tastaturet ved brug af u-"shiftede" tegn alene.

Bemærk, at disketteporten er tildelt enhedsnummeret 8 fra fabrikkens side. Ønsker De imidlertid et andet enhedsnummer (8ll kan anvendes) kan De kontakte Deres Commodore forhandler for nærmere orientering.

4.1.2 SAVE (GEM ET PROGRAM PÅ DISKETTE).

Hvis De ønsker at lagre et Basic-program på diskette, sker det med kommandoen SAVE.

Alle data, som overføres ved hjælp af denne kommando, behandles automatisk af DOS som programfiler. Kommandoen overfører programmet fra computerens arbejdslager til den specifikke diskette. Brugeren skal anføre portnummer, programmets navn og diskettestationens enhedsnummer - hvis man glemmer det sidste, vil computeren forsøge at overføre programmet til enhed nummer 1, kassetteoptageren.

Page 30

Side 26 Basic-kommandoer til datahåndtering KAPITEL 4

Programmet bliver derfor ikke lagret der, hvor De ønsker det. SAVE-kommandoen har følgende format :

SAVE"dr:fn",dn

hvor dr = portnummer, (Ø kan udelades), fn er en hvilken som helst filbetegnelse (op til 16 tegn) for den fil, som ønskes lagret, og endelig er dn = enhedens nummer, altid 8. Det følgende eksempel viser, hvordan et program på en enkelt linie gemmes på diskette under filnavnet "TESTPROG"

1Ø PRINT"DETTE ER EN TEST":GOTOIØ

SAVE"Ø:TESTPROG".8

En anden måde at bruge SAVE på, er denne:

SAVE"@dr:fn",dn

hvor @ betyder, at den aktuelle fil skal erstatte en anden, som findes på disketten under nøjagtig det samme filnavn – for eksempel et program, man tidligere har gemt, men siden rettet i. fn = det "gamle" filnavn.

EKSEMPEL:

SAVE" @Ø: TESTPROG".8

I dette tilfælde vil det nye program erstatte det gamle program - TESTPROG. Findes TESTPROG ikke, SAVE's på normal vis.

BEMÆRK :

Hyppig brug af "@ -metoden" bør undgåes. Man bør i stedet for gemme programmet under et andet navn, bruge SCRATCH (se afsnit 3.4.9) og derefter RENAME (se afsnit 3.4.8). Grunden er, at BAM ikke registrerer at den gamle fil er frigivet.

4.1.3 VERIFY.

Denne kommando udløser en "byte-for-byte" sammenligning mellem den fil, der netop er blevet lagret på en diskette, og den version af samme fil, som stadig befinder sig i computerens lager. VERIFY er med andre ord en kontrol af, om computerens lagerindhold nu også er korrekt overført.

VERIFY bruges således:

VERIFY"dr:fn",dn

hvor dr = portnummer, fn = betegnelsen for den fil, som netop er SAVE't, og dn = enhedens nummer (8).

Page 31

KAPITEL 4 Basic-kommandoer til datahåndtering

En anden måde at VERIFY på, er:

VERIFY" ",dn

idet stjernen udløser en sammenligning mellem den senest lagrede fil og den, der findes i computerens arbejdslager. VERIFY-kommandoen er et værdifuldt hjælpemiddel til at sikre, at et program er lagret korrekt. Det er med denne kommando, De først opdager, hvis diskettestationen trænger til at få et serviceeftersyn hos Commodore-forhandleren.

4.1.4 LOAD (INDLÆSER ET PROGRAM FRA DISKETTE).

Et program, som er lagret på diskette, kan overføres til computerens arbejdslager med LOAD-kommandoen. Programfilens navn specificeres, hvorimod portnummeret kan udelades. Enhedsnummeret skal anføres, da computeren ellers vil søge efter programmet på kassetteoptageren (enhedsnummer 1).

LOAD-kommandoen ser herefter således ud:

LOAD"dr:fn",dn

hvor dr = portnummer,(kan udelades) fn = filens navn (som specificeret i SAVE og opført i diskettens katalog), og dn = enhedens nummer (8).

Lad os forsøge at overføre testprogrammet fra tidligere til computerens arbejdslager.

Når det ønskede program er overført, melder computeren klar med ordet READY, hvorefter programmet beordres kørt med kommandoen RUN.

LOAD"Ø:TESTPROG",8 READY RUN DETTE ER EN TEST DETTE ER...

En vellykket LOAD vil automatisk lukke alle åbne filer. Derfor er en ny OPEN-kommando nødvendig, hvis De herefter stadig ønsker at kommunikere med diskettedrevet og dens fejl- og kommandokanal.

4.1.5 OPEN.

Denne kommando opretter korrespondance mellem et logisk filnummer og en fil, lagret på en diskette. Kommandoen reserverer også plads i disketteportens bufferlager til de operationer, der skal udføres på den fil, som er under åbning. OPEN-

Page 32

kommandoen har følgende udseende:

OPENIfn.dn.sa."dr:fn.ft.funktion"

hvor : lfn = logisk filnummer, dn er enhedens nummer (8). og sa er den sekundære adresse, som vælges mellem tallene 2 -14. til brug ved både inddata og uddata som specificeret under "funktion". dr = portnummeret (Ø kan udelades), fn = filens navn, ft er filtypen (SEQuentiel, USR -bruger- eller PRG - program) Endelig angiver "funktion" bvordan den åbnede kanal skal anvendes enten READ (R) eller WRITE (W)

Bemærk, at sekundæradresse 15 er kommando- og feilkanalen og at den har særlige funktioner. Disse er nærmere omtalt i de følgende afsnit. De sekundære adresser Ø og 1 er reserveret af computerens og diskettedrevets operativsystemer til LOAD og SAVE.

EKSEMPLER

OPEN2.8.2. "Ø:FILL.SEQ.WRITE"

OPEN3.8.9. "Ø: TESTDATA. PRG. WRITE"

OPENS 8 8 "Ø.NUM USB READ"

Indholdet i en eksisterende fil kan erstattes med et andet ved at lade O -tegnet stå umiddelbart foran portnummeret i OPEN-kommandoen. Begræns brugen af denne metode, grunden gi-

OPEN3,8,5, "@Ø:FIL A, USR, WRITE"

Findes den specificerede fil ikke, udføres en helt normal OPEN-rutine. Filerne skal være af samme type f.eks. begge SEO eller begge PRG hvis @ bruges. Nogle af parametrene i OPENkommandoen kan udtrykkes med variabler:

FL$="Ø:FIL A,SEQ,READ"

OPEN1.8.14. FL$

eller:

OPENI 8 14 FIST SEO WRTTE"

Kommaet efter det første anførselstegn er vigtigt. Ovennævnte teknik er især en hiælp, hvor det er nødvendigt at åbne flere kanaler til det samme filnavn. Tilføjelse til fil se 6.1.2.

Page 33

KAPITEL 4 Basic-kommandoer til datahåndtering Side 29

4.1.6 CLOSE.

Med denne instruktion lukkes en fil, der tidligere er åbnet med OPEN-kommandoen. Formatet for CLOSE er:

CLOSElfn

hvor lfn = det samme logiske filnummer, som blev anvendt under OPEN-proceduren til den aktuelle fil. Man bør altid lukke en fil, når man er færdig med at bruge den. Man kan ikke have mere end lø filer åbne af gangen i computeren, og 3 sekventielle i diskettestationen, så det klogt at lukke filerne "efter sig". På denne måde vil man hele tiden have det maksimale antal filer til rådighed.

4.1.7 LUKNING AF KOMMANDOKANALEN.

Når man lukker en kommandokanal, lukker man samtidig alle kanaler, der har forbindelse med diskettestationen. Intet andet logisk fil-område bliver påvirket. Det betyder, at computeren i dette særlige tilfælde ikke opfatter nogen anden fil som lukket. Fra computerens synspunkt er filerne åbne, men fra diskettestationens er de lukkede.

Det følgende eksempel viser, hvordan flere åbnede kanaler kan lukkes med en enkelt CLOSE-instruktion.

EKSEMPEL:

OPEN1,8,15 Kommandokanalen åbnes.
OPEN3,8,2,"Ø:FIL1,SEQ,WRITE"
OPEN4,8,5,"Ø:FIL2,SEQ,WRITE" Datakanalerne er nu åbne
for skrivning
PRINT#3,"VIGTIGE DATA" for skrivning.
PRINT&4,"FLERE DATA"
OPEN3,4 En fil åbnes ved en fejl-
tagelse med samme filnummer
som ovenfor.
?FILE OPEN ERROR En fejlmelding fremkommer
på skærmen.

READY.

Da der opstod en fejl, blev alle logiske filer i computeren lukket, men kanalerne i disketteporten er stadig åbne. For at få dem lukket på behørig vis, må man taste:

OPEN1,8,15:CLOSE 1

Nu er alle datakanaler i diskettedrevet lukkede.

Page 34

Side 30 Basic-kommandoer til datahåndtering KAPITEL 4

4.1.8 LUKNING AF EN DATAKANAL.

CLOSE-kommandoen medfører lukning af såvel filen, som den dermed forbundne data- eller kommandokanal. Når som helst man lukker en fil, som er åbnet for skrivning (WRITE), medfører lukningen af filen, at den sidste datablok skrives på disketten; kataloget på disketten opdateres og BAM ajourføres. Når en fil, der er åbnet for læsning (READ) lukkes, sker der ikke andet, end at kanalen bliver - lukket!

Bemærk, at hvis porten er initialiseret med INITIALIZE, NEW eller VALIDATE, bliver alle kanaler i forbindelse med det pågældende port afbrudt. Derfor må disse kommandoer ikke anvendes, hvis ikke alle filer er korrekt lukkede, idet data på disse filer da vil blive ødelagt.

4.1.9 PRINT#.

Denne instruktion overfører en disk-styringskommando til det pågældende disketteport, eller til at overføre data til disketten.

Formatet for instruktionen er:

PRINT#lfn, "kommandostreng"

hvor lfn er en fil, som tidligere er åbnet ved brug af den sekundære adresse 15, og "kommandostreng" er en samling kommandoer til disk-håndtering eller filhåndtering. Disse kommandoer er omtalt i kapitel 3.

PRINT kan endvidere anvendes til at overføre data til en tidligere åbnet sekventiel eller "bruger"-fil. I CBM Basic Version 2 vil logisk filnummer 1 til 127 i forbindelse med PRINT, udløse afsending af en vognretur, CHR(13), og logiske filnumre fra 128 til 255 udløser en vognretur med linieskift. Et semikolon skal medtages som adskillelsestegn mellem variablerne i en PRINT-instruktion, hvis man vil undgå ekstra linieskift, når man bruger 1fn mellem 128 og 255.

Denne detalje må man huske, for <RETURN> (vognretur på en almindelig skrivemaskine) opfattes som en afsluttende instruktion af DOS, hvorved en instruktion om yderligere et linieskift lagres i filen som første tegn i den næstfølgende post. Man kommer ud over problemet ved at benytte følgende form:

PRINT#128, "COMMODORE-DATA"; CHR$(13);

Her optræder CHR$(13) som den nødvendige, afsluttende vognretur for den pågældende post på disketten - bemærk det altafgørende semikolon - og når posten indlæses, bliver resultatet COMMODORE-DATA, hvilket var, hvad vi havde brug for.En anden form kan anvendes:

PRINT#lfn,A$
Page 35

KAPITEL 4 Basic-kommandoer til datahåndtering Side 31

Denne kommando vil producere den ønskede værdi af A$ og berører ikke den næstfølgende post. Flere variabler kan skrives på disketten på samme tid. Således vil f.eks. formen:

PRINT#1fn,A$,B$,C$

resultere i, at en enkelt variabel (A$+B$+C$). Skal variablerne indlæses hver for sig, er formen denne :

PRINT#1fn, A$; CHR$(13); B$; CHR$(13); C$; CHR$(13);

idet variablerne A$, B$ og C$ nu separeres med <RETURN>.

4.1.10 INPUT#.

INPUT&-kommandoen bruges til overføring af informationer fra en ydre enhed, således f.eks. disketteporten, til computerens arbejdslager.

INPUT har udelukkende værdi, når den bruges i et program, og da kun, når den refererer til en logisk fil, som er åbnet for læsning.

Formatet for INPUT# er:

INPUT≱lfn,A$

eller:

INPUT#1fn,A

hvor lfn er en tidligere åbnet fil; A$ er en strengvariabel, som rummer det tegn, der ønskes overført, og A er en numerisk variabel med de ønskede numeriske data.

INPUT; kan anvendes til overføring af strenge på samme tid:

INPUT#1fn,A$,B$,C$

hvor A$, B$ og C$ indeholder de ønskede datasæt, overført fra disketten til computerens arbejdslager. Hvis variablerne indlæses på denne måde, må de være højst 88 tegn lange, og ligge adskilt med CHR$(13).

EKSEMPEL:

-2ø input#2,A -

overfører næste numeriske post til variablen A.

Page 36

Side 32 Basic-kommandoer til datahåndtering KAPITEL 4 EKSEMPEL 2: 2Ø INPUT*8,A$ Overfører næste post som en streng og knytter den til variablen A$. EKSEMPEL 3: 6Ø INPUT*7,B,C$ overfører næstfølgende to poster, og lægger dem i variablerne B og C$. Husk, at for poster på mere end 88 tegn, kan kun GET*-instruktionen bruges. 4.1.11 GET*.

Denne instruktion anvendes til overførsel af enkelt bytes fra f.eks. disketteporten, til computerens arbejdslager. GET# har kun værdi, når den optræder i et program, og da kun når den refererer til en tidligere åbnet fil.

GET : anvendes således:

GET # lfn,A$

hvor lfn er en tidligere åbnet fil, og A$ er en strengvariabel, som skal rumme den post, der overføres.

GET-instruktionen kan overføre en byte ad gangen. Det er nødvendigt at anvende GET#, når det drejer sig om overførsel af strenge på over 88 tegn, idet INPUT# ikke kan klare denne opgave.

Dette lille program skulle demonstrere effekten af GET#:

1Ø AA$="" 20 OPEN 1,8,2,"Ø:DEMO,S,R" 3Ø FOR I=1 TO 254 40 GET$1,A$ 5Ø AA$=AA$+A$ 5Ø NEXT

Page 37

Programstumpen vil resultere i en streng (AA$) med længden 254. overføres fra disketten til computerens arbejdslager, bytevis i A$, og samles til strengen AA$.

4.2 OVERFØRSEL AF ET PROGRAM FRA TAPE TIL DISKETTE.

Dette afsnit viser, hvordan man løser den opgave at overføre et program fra kassetteoptager til diskette. Eksemplet viser hvordan programmet først hentes ind i computerens arbejdslager fra kassetten, og derefter lagres på disketten, hentes ind fra disketten igen og udskrives på skærmen. Eksemplet forudsætter, at man i forvejen har lagret et Basic-program (ved navn DEMO) på kassetteoptageren VIC-1530.

FKSEMPEI .

LOAD"DEMO" Overfører programmet fra
tape til computerens ar-
bejdslager.
PRESS PLAY ON TAPE
ок
SEARCHING FOR DEMO
FOUND DEMO
LOADING
READY.
SAVE"DEMO",8 Opretter en fil på disket-
ten med det pågældende pro-
gram.
VERIFY"DEMO",8
OK
READY
NEW Sletter computerens ar-
bejdslager.
LOAD"DEMO",8 Henter programmet fra di-
sketten tilbage til compu-
terens arbejdslager.
SEARCHING FOR DEMO
LOADING
READY
LIST Programmet udskrives på
skærmen.
RUN Programmet "køres" som ek-
stra kontrol
Page 38

5.1 DOS OG DIREKTE TILGANG TIL BLOKKE.

Dette kapitel beskriver DOS-strukturen og diskkommandoerne. De sidste udstyrer disk-operatøren med lavniveau-funktioner. som kan anvendes til specielle opgaver, såsom særlige diskhåndteringsrutiner og behandling af filer med direkte tilgang

5.2 COMMODORE DISK-OPERATIVSYSTEMET.

Filsystemet er organiseret med kanaler, som åbnes med Basickommandoen OPEN. Når denne rutine udføres, tildeler DOS den nødvendige lagerplads til hver af de kaldte kanaler (buffere å 256 bytes), og afsætter enten et eller to bufferarealer (arbejdslager)til disk-ind-ud-operationerne.(I/O-operationer)

Hvis der ikke er bufferlagerplads til rådighed, opstår en NO CHANNEL-feilkode. DOS anvender også kanalerne til søgning i diskettens katalog, og til sletning eller kopiering af filer.

Tre ud af de otte bufferlagre benyttes af DOS til BAM-lager. til variabel lagerplads, til kommandokanalens I/O-funktioner og til oprettelse af en "jobkø" for diskkontrolenheden.

Jobkøen er et vigtigt bindeled mellem de to kontrolenheder. Job bestilles på filsiden, idet diskkontrolenheden tildeles sektorheader og instruktionstype. Diskkontrolenheden vil forsøge at udføre jobbet. En fejltilstandskode indsættes i stedet for jobinstruktionen, og hvis jobbet ikke kan afvikles på normal vis, genbestiller fil-siden jobbet et antal gange, afhængig af instruktionens art, inden en egentlig fejlmelding genereres og udsendes.

Den sekundære adresse, der tildeles i forbindelse med OPENkommandoen, anvendes af DOS som kanalnummer. Nummeret, som brugeren har knyttet til en given kanal, anvendes af DOS kun som en reference, som bruges til at opnå adgang til et arbejdsområde (lagerplads), og har intet at gøre med DOS's kald af kanaler.

LOAD og SAVE-kommandoerne overfører de sekundære adresser Ø og 1. og DOS opfatter umiddelbart disse sekundære adresser som LOAD- og SAVE-funktioner. Man bør derfor ikke selv bruge disse to cifre som sekundær adresse - med mindre neton disse to funktioner ønskes anvendt i forbindelse med åbningen af en fil. De øvrige sekundære adresser (2-14) kan anvendes ved åbning af op til 5 datakanaler samtidig.

Page 39

5.3 OPEN- OG CLOSE-INSTRUKTIONER (BUFFERKOMMUNIKATION).

Basic-instruktionen :

OPEN2.8.4."#" OPEN2.8.4."#7"

åbner en kanal til en enkelt buffer, som ønskes anvendt sammen med blokkommandoerne. Den først anvendelige buffer tildeles kanal 4 i det første eksempel, og i det andet vises et forsøg på at tildele buffer 7 til kanalen. Er der ingen buffere til rådighed, udsendes NO CHANNELS-feljmeldingen. Man kan anvende den udtrykkelige tildeling af en bestemt buffer til at reservere bufferplads til en kode, som er positionsafbængig (dette er f.eks. tilfældet med EXECUTE-kommandoen). Dette gøres ved at angive buffernummeret efter a tegnet.

Det er muligt at finde nummeret på den tildelte buffer ved at udføre en GETt-instruktion. Den overførte byte vil da være bufferens nummer. Man kan dog kun få oplyst buffernummeret inden der er foretager læse- eller skriveoneration nå den någældende buffer.

CLOSE-instruktionen lukker den åbnede kanal og opdaterer BAM på disketten, som sidst blev kaldt op via den pågældende . kanal.

5.4 KOMMANDOER TIL DIREKTE FILBEHANDLING.

Til direkte tilgang på disken, samt direkte tilgang til buffere, findes følgende kommandoer:

KOMMANDO FORK. ALM. FORM
BLOCK-READ B – R "B-R:"ch;dr;t;s
BLOCK-WRITE B-W "B-W:"ch;dr;t;s
BLOCK-EXECUTE B – E "B-E:"ch;dr;t;s
BUFFER-POINTER B – P "B-P: "ch;p
BLOCK-ALLOCATE B – A "B-A:"dr;t;s
BLOCK-FREE B-F "B-F:"dr;t;s
memory-write M-W "M-W"adl/adh/nc/data
memory-read M– R "M-R"adl/adh
memory-execute M-E "M-E"adl/adh
USER U "Ui:parametre"
Page 40

ch - kanalnummer i DOS _identisk med den sekundære adresse i det tilhørende OPEN-sætning: dr = port nummer Ø: t = spor nummer (fra 1 til 35): s = bloknummeret (fra Ø til 2Ø). For hvert spor er sektoromfanget vist i tabel 4. p = pointerpositionen for buffer-pointeren (sidste lagrede tegn), adl = den sidste af en to bytes adresse (low-byte): adh = den første byte (high-byte). nc = antallet af tegn (fra 1 til 34) som skal overføres: data = de aktuelle data, anført i hexadecimal

Data overføres med CHR$-funktionen, så f.eks. CHR$(1) svarer til HEX $Ø1 (tallet 1 i decimal notation CHR$(1)).

i = indekset til USER-tabellen: og parametre = de parametre. som knytter sig til U-instruktionen (kun i særlige tilfælde).

Værdierne som anvendes i forbindelse med MEMORY_instruktio_ nerne, optræder i VIC-154Ø som hexadecimale repræsentationer, og må overføres ved highp af CHR$(n)-funktionen, hvor n = den decimale ækvivalent til den hexadecimale værdi.

Bemærk, at man ved brug af variabler kun må sætte anførselstegn omkring selve kommandoen, således:

"B-R:"ch:dr:t:s -RIGTIGT

"B-R:ch:dr:t:s" -FORKERT

Som det fremgår af det foregående, kan de nævnte kommandoer anvendes i forkortet form, idet man bruger det første bogstav i hvert af nøgleordene. De kommandoer, som er skrevet med småt, kan kun gives som forkortelser.

De parametre, som knytter sig til hver kommandostruktur, opsøges kun når de står umiddelbart efter et kolon (:). eller står på den fjerde tegnposition i sætninger, hvor kolon ikke er til stede. Følgende eksempler viser fire måder at udtrykke den samme BLOCK-READ-kommando på – husk at initialisere diskettedrevet inden "block-read" eller "block-write":

EKSEMPLER:

"BLOCK-READ: "2; Ø; 4; Ø

"B-R"2:0:4:0

"B-READ: "2:0:4:0

Bemærk: Parametre, som står udenfor anførselstegnene, skilles med semikolon (;). I den følgende redegørelse er PRINT=-kommandoen underforstået i alle eksempler.

Page 41
5.4.1 BLOCK-READ.

Denne instruktion giver adgang til en hvilken som helst blok på en diskette. Brugt i sammenhæng med andre blok-kommandoer kan et filsystem med direkte tilgang ("random-acces") skabes ved hiæld af Basic. Kommandoen medfører, at tegnpointeren i blokkens Ø-position opsøges. Når et tegn på denne position opsøges med en GET* eller en INPUT*-kommando, sendes et Endor-Identify (EOI). Dette signal afslutter en INPUT#-rutine. og sætter ST (STATUS) til 64 i computeren

Formen "B-R:"ch;dr;t;s illustreres i følgende eksempel:

"B-R: "5: Ø: 18: Ø

Læser blok Ø fra spor 18 ind i bufferen tilknyttet kanal 5. Når BLOCK-READ har været anvendt til overføring af data til en buffer, kan data føres videre til arbejdslageret med en INPUT# eller en GET# fra den logiske fil, der er åbnet til den någældende kanal

Kommandoen III. som er nærmere beskrevet under HSER, virker næsten som BLOCK-READ-kommandoen. Bruges Ul. står bufferpointeren ikke i den byte, som byte Ø angiver.

5.4.2 BLOCK-WRITE.

Når denne kommando anvendes, bruges bufferpointer som sidste-tegns-pointer, og anbringes i position Ø i den nye buffer. Bufferen bliver herefter skrevet ud i den indikerede blok på disketten, og buffer-pointeren efterlades på position 1.

Formen "B-W:"ch:dr:t:s illustreres med følgende eksempel:

"B-W."7.0.35.10

Bufferen under kanal 7 udskrives på blokken på diskettens spor 35. sektor 10.

U2-kommandoen, som er nærmere beskrevet under USER, virker næsten som BLOCK-WRITE, blot ændres byte Ø ikke når U2 anvendes. Det kan anbefales at B-W bruges ved oprettelse af en post, og at man, så fremover anvender Ul og U2 ved tilgang og rettelse, og endelig bruger B-W ved udvidelse af en post. Skal en post udvides (forlænges), læses den med B-R, hvilket sætter B-P på første ledige byte. Dernæst bruges PRINT# til at lægge data efter de bestående og B-W til at skrive blokken og den nye B-P tilbage på disken.

5.4.3 BLOCK-EXECUTE.

Denne kommando tillader en del af DOS eller bruger-konstruerede rutiner at eksistere som "lagervare" på en diskette, og derfra overføre disse til diskettedrevets arbejdslager, hvorfra rutinen udføres. B-E er i virkeligheden en B-R med en tilføjelse. Så snart blokken er indlæst i bufferen, udfører

Page 42

fil-interface-kontrollen indholdet i blokken, idet udførelsen skal bringes til ophør med en RTS (RETURN FROM SUBROUTINE) maskinsprogskommando. Særligt udformede, bruger-designede tilbehør og operationer kan med fordel betjene sig af denne instruktionsmuligheder.

Formatet for B-E er :

EKSEMPEL :

"B-E:"ch:dr:t:s

"B-E:"6:Ø:1:1Ø

læser en blok fra spor 1, sektor 1Ø ind i bufferen under kanal 6 og påbegynder udførelse af blokkens indbold ved position Ø i bufferen.

5.4.4 BUFFER-POINTER.

Denne kommando ændrer pointeren, som er knyttet til en given kanal, til en ny, given værdi (man flytter pointeren). Denne funktion er nyttig, når man ønsker adgang til bestemte dele af en blok f.eks et felt eller - hvis blokkene er inddelt i flere poster -at få fat på individuelle poster.

Formatet er:

: "B-P:"ch;p

EKSEMPEL :

"B-P:"2:1

Positionerer kanal 2-pointeren ved begyndelsen (i byte nr.1) af data-arealet i en buffer med direkte tilgang.

5.4.5 BLOCK-ALLOCATE.

Med denne kommando opdateres den aktuelle BAM som en afspejling af, at de i kommandoen indikerede blokke er reserverede. I fremtidige operationer vil DOS springe over de pågældende blokke, når programmer "SAVE's" eller der oprettes sekventielle filer. Den opdaterede BAM udskrives på disketten enten når en skrivefil lukkes, eller ved lukning af en kanal for direkte tilgang.

Hvis en blok er reserveret, vil feilkanalen indikere den næste ledige blok, med en NO BLOCK-fejlkode. Er der ingen blokke til rådighed, som har højere nummer end den, der er forsøgt reserveret, udskrives nuller som spor- og sektorparametre.

Formatet er :

"B-A:"dr:t:s

EKSEMPEL :

"B-A:"Ø:1Ø:Ø

port Ø's blok (sektor) Ø på spor lØ markeres som reserveret.

Page 43

Bemærk, at fejlkanalen altid bør kontrolleres, efter BLOCK-ALLOCATE, så en tidligere reserveret blok ikke reserveres endnu en gang, og derved kan blive overskrevet, så de gamle data går tabt. Er blokken optaget, vil fejlkanalen vise den næste ledige blok.

EKSEMPEL:

INPUT#15, EN, EM$, ET, ES

Læser næste spor og sektor respektive, ind i ET og ES, idet instruksen forudsætter, at logisk filnummer 15 er åbnet for fejl- og kommandokanalen.

5.4.6 BLOCK-FREE.

Med denne instruktion opdateres BAM i diskettedrevets arbejdslager, så den indikerede blok frigives til brug som ledig plads. Diskettens BAM opdateres først ved CLOSE som tidligere beskrevet. Hverken B-A eller B-F kræver åbning af en kanal for direkte tilgang, da der ikke udføres kanalrelaterede operationer.

Disse instruktioner skal imidlertid anvendes i sammenhæng med andre blok-kommandoer, hvis man ønsker BAM på disketten opdateret.

EKSEMPEL:

"B-F:"Ø;9;2Ø

Frigiver blok 2Ø på spor 9 i diskettestationens BAM.

5.4.7 MEMORY.

Alle tre memory-kommandoer er byte-orienterede, så brugeren let kan betjene sig af kommandoerne i forbindelse med programmering i maskinsprogskode. Basic-udsagn kan dog bruges til at opnå adgang til informationer via MEMORY-kommandoerne ved at bruge CHR$(n).

Nærværende system accepterer kun M-R, M-W og M-E. Andre staveformer eller tegn, f.eks. brug af kolon, er ikke tilladt.

5.4.7.1 MEMORY-WRITE.

Denne kommando giver direkte adgang til DOS's arbejdslager. Specielle rutiner kan direkte lagres på diskette ved hjælp af denne kommando, og siden udførés med en MEMORY-EXECUTE eller en af USER-kommandoerne.

Op til 34 bytes kan formidles ved hvert kald af M-W-rutinen, idet man bemærker, at adressens low-byte altid skal skrives før high-byte.

Page 44

Side 40

Direkte tilgang til blokke

Formatet er :

EKSEMPEL :

"M-W"chr$(00)chr$(7)chr$(4)chr$(32)chr$(0)chr$(17)chr$(96)

Skriver 4 bytes i adresse $Ø7ØØ (decimal 1792).

5.4.7.2 MEMORY-READ.

Med denne kommando kan man få adgang til netop den byte i diskhukommelsen, som adressen i kommandostrengen peger på. Variabler fra DOS eller bufferens indhold kan ligeledes kaldes med denne kommando. M-R ændrer indholdet i fejlkanalen, da denne inddrages til overførslen af informationer til computeren.

Den efterfølgende GET*-kommando fra Fejlkanalen vil bevirke, at den søgte byte's indhold overføres. Man bør ikke udføre en INPUT# fra fejl-kanalen efter en MEMORY-READ, før en anden DOS-kommando er udført.

Formatet er :

"M-R"adl/adh

"M-R"chr$(128)chr$(0)

Giver adgang til byte'n i adresse $ØØ8Ø, decimalt 128.

5.4.7.3 MEMORY-EXECUTE.

Med denne kommando kan underrutiner i DOS' arbejdslager udføres. For at komme tilbage til DOS, skal man afslutte underrutinen med RTS($6Ø).

Formatet er :

"M-E"adl/adh

EKSEMPEL :

"M-E"chr$(128);chr$(49)

Starter udførelsen af maskinkodeprogrammet, som starter på adressen $318Ø (decimalt 12672); idet low-byte = $8Ø (dec. 128) og high-byte = $31 (dec. 49).

5.4.8 USER.

Denne kommando udgør et bindeled til 65Ø2-mikroprocessorens maskinkode, set i relation til en jump-tabel, som refereres af en særlig USER-pointer, se tabel 5.

Kommandoens 2. tegn anvendes som indeks til tabellen. ASCIItegnene fra Ø til 9 eller A til J kan anvendes. Ø (nul) sætter pointeren i en standard jump-tabel, som rummer linken til specielle rutiner.

Page 45

De særlige USER-kommandoer Ul (eller UA) og U2 (eller UB) kan delvis erstatte BLOCK-READ og BLOCK-WRITE-kommandoerne.

Formatet for Ul er :

"Ul:"ch;dr;t;s

Ul tvinger tegntælleren (bufferpointeren) op på 255 og indlæser en hel blok i lageret. Dette giver direkte adgang til alle bytes i blokken med en B-P.

Formatet for U2 er :

"U2:"ch;dr;t;s

U2 udskriver en buffers indhold på disketten uden at ændre indholdet i datablokkens position Ø (i modsætning til B-Wkommandoen). Dette er praktisk, når blokken skal indlæses (med B-R) og opdateres (B-P til det relevante felt, og rettes med PRINT*), og siden tilbageføres til disketten med kommandoen U2. Er der flere poster og/eller felter i hver blok, vil man sædvanligvis bruge U1 og U2.

BRUGER ALTERNATIVT FUNKTION
VALG VALG
Ul UA BLOCK-READ alternativ
U2 UB BLOCK-WRITE alternativ
U3 UC hop til $Ø5ØØ
U4 UD hop til $Ø5Ø3
U5 UE hop til $Ø5Ø6
U6 UF hop til $Ø5Ø9
U7 UG hop til $Ø5ØC
U8 UH hop til $Ø5ØF
U9 UI hop til $FFFA
U: UJ opstarts vektor

Tabel 3. Standard jump tabel.

U3 til U9 kommandoerne defineres af brugeren. De adresser der hoppes til, ligger alle i bufferområderne, og rutiner kan lægges der og indlæses med M-W-kommandoen.

5.5 DISKETTENS STRUKTUR.

En hvilken som helst blok på disketten kan undersøges med programmet "DISPLAY T&S", som findes på TEST/DEMO-disketten.

Tabel 4. Antal blokke pr. spor.

SPOR NR. BLOK OMFANG I ALT
l til 17 Ø til 2Ø 21
18 til 24 Ø til 18 19
25 til 30 Ø til 17 18
31 til 35 Ø til 16 17
Page 46

Side 42

Tabellerne 5-11 er en hjælp til brugerne til at forstå de informationer, som DISPLAY T&S fremkommer med.

Tabel 5. VIC-1540 BAM format.

Ispan 18 blok d

0100 0.
BYTE INDHOLD DEFINITION
Ø,1 18,Ø1 Spor og blok for første blok i
filkataloget
2 65 ASCII tegn A = 1540 format = CBM
4040 format
3
4-143
ø Nulflag til fremtidig brug
Bitoversigt over ledige blokke i
sporene 1-35 (BAM)

l=ledig blok

O=optaget blok (en bit repræsenterer en blok)

Tabel 6. Filkatalogets hoved (directory header).

Spor 18, sektor Ø
BYTE INDHOLD DEFINITION
144-161 Disknavn efterfyldt med shiftede
mellemrum
162,163 Diskens ID
164 16Ø Skiftet mellemrum
165,166 50,65 ASCII 2A = DOS version og format
166,167 16Ø Skiftede mellemrum
171-255 ø Nuller, bruges ikke

Bemærk : ASCII tegn kan forekomme i bytene 180 til 191 på nogle disketter.

Tabel 7. Filkatalogets format.

Spo r 18 , BI lok 1.
вуте DEFINITION
Ø,1
2-31
34-63
66-95
98-127
130-159
162-191
194-223
226-255
Spor og blok for næste blok i filkataloget
#Fil nr.1
#Fil nr.2
#Fil nr.3
#Fil nr.5
#Fil nr.6
#Fil nr.7
#Fil nr.8

z se næste side

Page 47
BYTE INDHOLD DEFINITION
ø 128+type Filtype logisk OR'ed med $8Ø som
viser at filen er korrekt lukket.
TYPER: Ø=DELeted
l=SEQential
2=PRoGram
3 = USe R
4 = RELative
1.2 Spor og blok for første datablok
3-18 Filnavn efterfulgt af hex. $00
19.20 Spor og blok for første sidesektor
ved relative filer.
21 Postlængde for relative filer
22-25
26 27 Spon og sekten for enstatningsfil
20,21 spor og sektor for erstatningstif
nar OPEN nar været anvendt
20,29 Antal blokke i filen : low-byte,
high-byte.

Tabel 8. Sekventielt filformat.

BYTE DEFINITION
Ø,1
2-256
Spor og blok for næste datablok
254 databytes med vognretur (CHR$(13)) som
skilletegn

Tabel 9. Programfilers format.

BYTE DEFINITION
Ø,1
2-256
Spor og blok for næste programblok
254 bytes program gemt i VIC hukommelsesformat.
Filslutningen (EOF) markeres med tre nulbytes.

Tabel 10. Relativt filformat.

DATA BLOK

BYTE DEFINITION
Ø,1
2-255
Spor og blok for næste datablok
254 bytes data. Tomme poster indeholder hexadeci-
male ($FF) i første byte og hexadecimale nuller
($ØØ) i resten af posten, Delvist udfylte blokke
efterfyldes med nuller ($ØØ).
Page 48
SIDE SERIOR
BYTE DEFINITION
Ø,1 Spor og blok for næste sidesektor
2 Sidesektor antal. (Ø-5)
3 Postlængde
4,5 Spor og blok for første sidesektor (nr.0)
6,7 Spor og blok for anden sidesektor (nr.1)
8,9 Spor og blok for tredje sidesektor (nr.2)
10,11 Spor og blok for fjerde sidesektor (nr.3)
12,13 Spor og blok for femte sidesektor (nr.4)
14,15 Spor og blok for sjette sidesektor (nr.5)
16-255 Spor- og blokpointere til 120 datablokke

Fig. 5 viser et forstørret udsnit af en diskette, der er formatteret på en VIC-154Ø. Blokke med data, indenfor den samme fil, lænkes sammen ved hjælp af en to-tegns blokpointer. Ved at referere til adressen for den nærmest efterfølgende blok bliver systemet i stand til at genfinde data i korrekt rækkefølge fra blokke, som ikke nødvendigvis følger hinanden fysisk. Når den første blok i filen er fundet, udløser blokken selv søgningen efter den følgende blok, som - til sin tid søger den efterfølgende blok...indtil den komplette fil er samlet og indlæst i computerens arbejdslager. Alle PRG, USER og SEQ-filer benytter dette format.

En datablok adresseres ved hjælp af spor og sektor. En 154Ødiskette indeholder 35 spor (koncentriske cirkler), som er nummereret fra 1 til 35. Antallet af sektorer pr. spor varierer, som det også fremgår af tabel 4, på grund af henholdsvis de enkelte spors omkreds og indspilningsfrekvens. VIC-154Ø vedligeholder en systemfil på spor 18, som indeholder BAM, diskettens navn, ID-mærke og filkataloget. BAM, som befinder sig på de første 128 bytes i sektor Ø, administrerer ledige og besatte blokke på disketten. De sidste 128 bytes på blok Ø anvendes til opbevaring af diskettens navn og ID, og umiddelbart derefter begynder selve filkataloget i sektor 1.

Page 49

Fig. 5. VIC-154Ø format : Forstørret udsnit af en blok.

Page 50
Side 46
6.1 SEKVENTIELLE FILER.

Håndtering af sekventielle filer, som er den grundlæggende form for datafiler, beskrives nærmere i dette kapitel. En sekventiel fil skal læses i samme rækkefølge, som den er skrevet. En fil, der rummer posterne A, B og C må følgelig læses i rækkefølgen A, B og C, hvis de er lagret i denne rækkefølge. Post C kan ikke læses, førend A og B er læst. Skal man bruge post C, må man indlæse A og B uden at udføre operationer på dem. I en sekventiel fil kan man ikke foretage rettelser og tilføjelser inde i filen. Den eneste ændring, man kan udføre på en sekventiel fil, er at tilføje en eller flere poster i enden af filen. Der kan maksimalt åbnes 3 sekventielle filer ad gangen.

6.1.1 HVORDAN EN SEKVENTIEL FIL DANNES OG BRUGES.

Etablering og tilgang til en sekventiel fil sker som følger:

A. Filen må åbnes for indskrivning af data : OPEN 2,8,2,"Ø:DATA,S,W"

Hermed har vi oprettet filen DATA, og med W'et i slutningen af filåbningskommandoen har vi tilkendegivet, at vi ønsker at skrive i den.

B. Indskrivning af data sker med PRINT# : PRINT$2,A$;CHR$(13);B$;CHR$(13);C$;CHR$(13);

I det foreligende tilfælde har vi nu lagret de tre strengvariabler A$, B$ og C$ med vognretur som skilletegn.

  • C. Filen lukkes efter brug med CLOSE: CLOSE 2
  • D. Vi kan åbne en fil med navnet DATA for udlæsning : OPEN 2,8,2,"Ø:DATA,SEQ,READ"
  • E. Data fra filen kan udlæses med INPUT#: INPUT#2,X$,Y$,Z$
  • F. Filens slutning kan kontrolleres med ST-variablen: IF ST AND 64 THEN CLOSE 2

READ, WRITE og SEQ kan forkortes til h.h.v R,W og S.

Page 51

6.1.2 TILFØJELSE TIL SEKVENTIELLE FILER (APPEND).

Ønskes en sekventiel fil udvidet, skal OPEN-instruktionen se således ud :

OPEN lfn,dn,sa,"dr:fn,A"

EKSEMPEL :

OPEN 4,8,4,"APPENDFIL,A"

Filen APPENDFIL kan tilføjes data med en PRINT#4,post.

6.1.3 EKSEMPEL MED SEKVENTIEL FIL.

Programmet herunder er en simpel måde at skabe en sekventiel fil på. Programmet ligger på TEST-DEMO-disektten og hedder "SEQUENTIAL FILE". Poster, bestående af strengfelter og numeriske felter indtastes, og indholdet af nosterne udlæses til sidst på skærmen ved indtastning af kommandoen END: 207 PRINT" EREAD SED TEST FILES" 208 PRINT 210 OPEN2,8,2,"0:SEQ TEST FILE .S.R" 215 GOSUB 1000 220 INPUT#2.8$(I).B(I) 224 RS=ST 225 GOSUB 1000 230 PRINTA$(1),B(1) 240 IFR S=64 THEN 300 250 IF RSCOU THEN 400 260 1=1+1 270 GOTO 220 300 CLOSE 2 310 ENT 400 PRINT #BAD#DISK#STATUS#ISH"RS" #" 410 CLOSE 2 420 ENT 1000 REM ******** 1001 RFM # 1002 REM # READ 1003 REM # THE ERROR 1004 REM * CHANNEL 1005 REM * 1010 INPUT#15, EN, EM$, ET, ES 1020 IF EN=0 THEN RETURN 1030 PRINT" HODDERROR ON DISK" 1040 PRINTEN; EM$; ET; ES 1050 CLOSE 2 1060 ENT

Page 52

2 REM # EXAMPLE 3 REM * READ & WRITE 4 REM # A SEQUENTIAL 5 REM * DATA FILE 9 REM ********** 10 PRINT" THOUPHINITIALIZE DISK" 20 DIM8$(25) 30 DIMB(25) 40 OPEN15.8.15."10" 60 COSUR 1000 70 CR$=CHR$(13) 80 PRINT 90 PRINT" XEWRITE SEQ TEST FILES" 95 PRINT 101 REM * 102 REM # WRITE SED 103 REM * TEST FILE 104 RFM # 105 REM ******* 110 OPEN2,8,2,"00:SEQ TEST FILE ,S,W" 115 GOSUR 1000 120 INPUT"A$, B"; A$, B 130 IFA$="END"THEN 160 140 PRINT#2, A$", "STR$(B)CR$; 145 GOSUB 1000 150 GOTO 120 160 CLOSE 2

Page 53

7.1 RELATIVE FILER.

Behandlingen af direkte filer er temmelig omstændelig. Derfor er der skabt mulighed for at anvende relative filer, hvor blot postnummeret (record number) angives i stedet for både spor og blok, som ved direkte filer. Programmeringstiden reduceres betydeligt, idet der kun skal opgives et postnr. for at den enkelte post kan findes.

I sammenligning med sekventielle filer er relative filer hurtigere at finde en given post i, og relative filer har også den fordel, at den enkelte post kan rettes.

De to hovedbestanddele i relative filer er sidesektorkæden og datablokkæden. Blokkene er kædet sammen med pointere, som ligger som de to første bytes i hver blok. Den maksimale postlængde er 254 bytes, men er postlængden en gang fastsat kan den ikke ændres. Postantallet er maksimalt 65.535, men filstørrelsen begrænses før af diskstørrelsen end af det nævnte tal. En relativ fil kan indeholde op til 6 sidesektorer, som hver kan pege på 120 datablokke, der hver kan indeholde 254 bytes data. D.v.s. at alene datablokkene kan indeholde op til 6¥120¥254 bytes = 182.880 bytes. Da VIC-1540's totalt kapasitet er 174.848 bytes, er det altså diskstørrelsen, der sætter grænsen for en relativ fils størrelse.

Sidesektorerne indeholder ingen information fra den enkelte post, men indeholder oplysninger om datablokkenes beliggenhed. Poststørrelsen bestemmer hvor pointeren skal sættes, når der refereres til et postnummer via en P-kommando (se senere beskrivelse). Poststørrelsen anvendes i en algoritme, som når postnummeret angives, udregner pointerens position. Sidesektorerne indeholder også pointere til de andre sidesektorer i filen. Skal der flyttes fra en sidesektor til en anden, finder DOS, ved hjælp af en passende kommando, frem til det tilhørende spor og den tilhørende blok og læser blokken ind i hukommelsen. Ved anvendelse af den indlæste sidesektor, kan den ønskede datablok nu findes frem.

For at udvide en relativ fil, må programmøren skrive i det, der fremover skal være den sidste post. De poster, der ligger imellem det, der tidligere var den sidste post, og det der fremover skal være den sidste post, oprettes automatisk af DOS. Det samme gælder de tilhørende sidesektorer. Antag, at en relativ fil indeholder poster, der kun fylder en datablok, og denne fil ønskes udvidet, så den kan indeholde 125 datablokke. Da en sidesektor kun kan indeholde pointere til 12ø datablokke, skal DOS oprette endnu en sidesektor.

Relative filer giver mulighed for at poster kan begynde i en datablok på disketten, og fortsætte i den næste. Denne egenskab reducerer antallet af læsninger og skrivninger, og sparer både tid og plads. Før omtalen af den bedre udnyttelse af ressourcerne, skal vi se på hvordan I/O kanalerne anvendes af relative filer :

Page 54

Når der åbnes en kanal til en eksisterende fil, positioneres DOS til den første post. Dette forudsætter selvfølgelig, at de angivne parametre er korrekte. Det er ikke nødvendigt at angive postlængden, men er den angivet, skal den være korrekt. Matcher den opgivne postlængde og den oprindelige postlængde ikke, genereres feilmeldingen 50 - RECORD NOT PRESENT.

En relativ fil skal bruge tre datakanaler og tre buffere, medens en sekventiel fil kun bruger to. Da der er 8 kanaler i systemet, og de 3 bruges internt, kan der højst åbnes en relativ fil og en sekventiel fil samtidig på disken. Det højeste antal buffere, som kan bruges er fem, hvilket begrænser antallet af kanaler, der kan åbnes på en gang.

Hvis en post ligger på grænsen mellem to datablokke, d.v.s. begynder i den ene og fortsætter i den anden, læses begge blokke ind af DOS. Kun postlængderne 1,2,127 og 254 (= tal der går op i 254) kan undgå en sådan deling,. Når der skrives i en post med en PRINT#-instruktion, skrives blokken ikke straks på disken. Skrivningen sker først, når grænsen til den næste datablok overskrides. Dette kan ske ved skrivning i fortløbende poster, eller ved positionering til en post, der ligger i en anden datablok. Skrivningen sker også, når den relative fil lukkes med en CLOSEIfn.

DOS stopper udskrivningen til en post når den registrerer et EOI-tegn (END OF IDENTIFY), som laves ved hver PRINT#-instruktion. Hvis en PRINT#-instruktion overskrider postlængden, genereres fejlmeldingen 51 - RECORD OVERFLOW. De overskydende data afskæres, og DOS er klar ved det næste postnr. Indeholder PRINT#-instruktionen færre tegn, end der er plads til i posten, udfyldes resten af posten med hexadecimale nuller ($ØØ). Dette medfører, at når der positioneres ved en post, der skal læses, sendes der et EOI fra DOS til computeren, når det sidste tegn, som ikke er nul sendes. Skulle det være ønskværdigt at lagre binær information, kan en postafslutter, som f.eks. vognretur (CHR$(13)), anvendes. Det er dog så nødvendigt at gøre postlængden et tegn større, så tegnet kan være der.

Når DOS skal udvide en relativ fil, undersøger den først om der er plads på disken. Er der ikke det, sendes fejlmeddelelsen 52 (FILE TOO LARGE).

7.2 OPRET EN RELATIV FIL.

De følgende eksempler gælder for relative filer på en VIC-1540 diskettestation med en tilkoblet VIC-20 computer.

Når en relativ fil tages i brug, sættes dens størrelse til det antal poster, som man forventer højst at skulle bruge. Denne filoprettelse tjener to formål. For det første kan den enkelte post hurtigere oprettes, og for det andet sikrer man sig, at der er plads på disketten. Filen kan senere udvides, hvis der er plads på disketten.

Page 55

Følgende program kan klare en sådan filoprettelse, med forventet maksimum på 100 poster og postlængden 20. Bemærk, at postlængden ikke kan ændres, når filen først er oprettet. 10 OPEN 15.8.15 20 OPEN 2,8,2, "RELFIL,L,"+CHR$(20) 25 GOSUB 130 B0 PRINT#15, "P"+CHR$(2)+CHR$(100)+CHR$(0)+CHR$(1) 50 GOSUB 130 80 PRINT#2 (CHR$(255); 90 609118 130 100 CLOSE 2 110 CLOSE 15 120 END 130 INPUT#15.EN.EM$.ET.ES 140 TE ENCOUTHEN RETURN 150 IF EN=50 THEN RETURN 160 STOP Linie 10 Åbner til feil- og kommandokanalen. Kanalen bruges til at sende den kommando, som finder frem til en post. Feil- og kommandokanalen bruges også til at undersøge, om der er opstået feil ved læsningen eller skrivningen på disketten. Opretter en relativ fil : OPEN 2,8,2, "RELFIL,L,"+ Linie 20 CHR$(20) =relativfil med længden 20. Linie 25-50-90 Undersøger om, der er opstået feil. Det er klogt altid at se om en diskoperation er gået godt! Sætter postpointer på det ønskede postnr. "P" Linie 3Ø sætter pointer (gennem fejl- og kommandokanalen). CHRS(2) Angiver den sekundære adresse i linie 20 (det andet af 2-tallene). CHR$(100) og CHR$(0) Sætter h.h.v. mindst betydende byte i postnr. og mest betydende byte i postnr. (low-byte og highbyte). Op til 255 poster kan være i low-byte (high-byte = Ø). EKSEMPEL : Postnr 256 ser således ud : CHR$(Ø)+CHR$(1) Postnr 258 ser således ud : CHR$(2)+CHR$(1) 256 = 258 Sideta CHRS(1) Angiver hvor i posten man ønsker at starte. 1 er første position i posten. Linie 80 Postnr. 100 tildeles værdien CHRS(255) i første byte idet postpointeren er sat på post nr. 100 i linie 40. Systemet gør selv plads til de mellemliggende poster (1-99). Linie 100-110 Lukker h.h.v. : RELFIL og fejl- og kommandokanal. Linie 120-160 undersøger om operationerne er gået godt.

Page 56

Linie 130 henter feilnr., feilmeddelelse, feilspor, feilhvis fejlkoden er mindre end 20 ignoreres den (se under fejludskrifter). hvis fejlkoden er 50 betyder det, at man har ud-Linie 150 widet en fil og det er io i orden her. STOP ved andre feil. Linie 160 7.3 UDVIDELSE AF EN RELATIV FIL. 10 OPEN 15-8-15 20 OPEN 2,8.2, "FTL OPRET" 30 GOSUB 110 40 PRINT#15, "P"+CHR$(2)+CHR$(145)+CHR$(1)+CHR$(1) 50 GOSUB 110 60 PRINT#2, CHR$(255); 70 GOSUR 110 80 CLOSE 2 90 CLOSE 15 100 END 110 INPUT#15.EN.EM$.ET.ES 120 IF ENC20 THEN RETURN 130 TE EN=50 THEN RETURN 140 STOP Den eneste ændring i programmet, i forhold til programmet, som oprettede filen, er linie 30, hvor CHR$(100)+CHR$(0) erstattes af CHR$(145)+CHR$(1), hvilket giver en udvidelse fra 100 til 400 poster idet : Før udvidelse Low-byte = 100 Low -byte = 144 High-byte = 1¥256 High-byte = Ø Følgende procedure, som kaldes med GOSUB 5000, udregner selv high-byte og low-byte og lægger værdierne i variablerne HB og LB, når det ønskede postnr. ligger i PO : 5000 REM **** HIGH- OG LOW-BYTE BEREGNING ***** 5010 HB=INT(P0/256) 5 0 2 0 1 B - PO - HB+256 5Ø3Ø RETURN BEMERK . Når en fil genåbnes, kan .1.20 udelades i linie 20 : 20 OPEN 2.8.2. "RELFIL" Hvis postlængden medtages, SKAL DEN VÆRE DEN SAMME. SOM DA

FILEN BLEV OPRETTET !

Udvides en fil på denne måde, oprettes de nødvendige sidesektorer af DOS.

Page 57

7.4 TILGANG TIL EN RELATIV FIL.

Et relativt filsvstem er baseret på muligheden for at man kan læse og skrive poster i vilkårlig rækkefølge. Før en læseeller skrivefunktion skal DOS have besked om hvilken post. der skal behandles. Dertil anvendes "P" kommandoen igennem EKSEMPEL : 10 OPEN 15,8,15 20 PRINT#15, "P"+CHR$(1fn)+CHR$(LB)+CHR$(HB)+CHR$(PP) hvor : lfn = logisk filnr., som den relative fil er åbnet under LB = low-byte af postnr. HB = high-byte af postnr. PP = postpointer, startposition i posten. 10 OPEN 15,8,15 20 OPEN 2.8.2. "RELET!" 25 GOSHR 130 30 PRINT#15, "P"+CHR$(2)+CHR$(25)+CHR$(0)+CHR$(1) 50 GOSUR 130 80 PRINT#2, "POST NR 25" 98 60508 138 100 CLOSE 2 110 CLOSE 15 120 END 130 INPUT#15, EN, EM$, ET, ES 140 TE ENCON THEN RETURN 150 IF EN=50 THEN RETURN 160 STOP Post nummer 25 ser herefter således ud : 12345678901234567890 POST NR 25× hvor : \neq =vognretur (CHR$(13)). Gem ikke kolon ":", hvis data skal hentes med INPUT. Bruges kolon, indlæses resten af posten ikke.

Page 58

Følgende eksempel viser hvordan man får adgang til en posts 20 OPEN 15.8.15 30 OPEN 2.8.2. "RELEIL" 40 GOSHR 200 50 PRINT#15, "P"+CHR$(2)+CHR$(145)+CHR$(1)+CHR$(1) ER GOSUR 200 70 PRINT#2, "FELT1" SR GOSLIB 200 90 PRINT#15, "P"+CHR$(2)+CHR$(145)+CHR$(1)+CHR$(6) 100 GOSUB 200 110 PRINT#2, "FELT2" 120 GOSUR 200 130 PRINT#15, "P"+CHR$(2)+CHR$(145)+CHR$(1)+CHR$(13) 140 GOSHR 200 150 PRINT#2, "FELT3" 160 GOSUB 200 170 CLOSE 2 180 CLOSE 15 190 END 200 INPUT#15 FN FMS FT FS 210 TE ENCOD THEN RETURN 220 IF EN=50 THEN RETURN 230 STOP Linierne 50.90.130 flytter pointeren til næste felt i posten.

1 2
123456789Ø123456789 Ø
FELT1FELT2¥ FELT3¥

hvor : ★ = vognretur (CHR$(13)). Læg mærke til at CHR$(13) efter FELT1 er overskrevet at F i ordet FELT2.

BEMÆRK :

Felterne skal skrives fremad (byte 1 til 2Ø); thi hvis byte 2Ø skrives først, og dernæst byte 1, så vil alle bytes efter byte 1 overskrives. Da CHR$(13) virker som en afslutning på en INPUT4-instruktion, kan data hentes ved gentagne INPUT*instruktioner hvis posten indeholder CHR$(13).

Page 59

Følgende program kan hente posten fra foregående eksempel :

10 OPEN 15.8.15 20 OPEN 2,8,2, "RELETI " 30 GOSUB 170 40 PRINT#15, "P"+CHR$(2)+CHR$(145)+CHR$(1)+CHR$(1) 50 GOSUB 170 60 INPUT#2.8$ 70 GOSUR 170 80 PRINT#15, "P"+CHR$(2)+CHR$(145)+CHR$(1)+CHR$(13) 90 GOSUR 170 100 THPUT#2.RS 110 GOSUB 170 120 A$=A$+R$ 130 PRINTAS 140 CLOSE 2 150 CLOSE 15 160 END 170 INPUT#15.EN.EM$.ET.ES 180 IF ENC20 THEN RETURN 190 IF EN=50 THEN RETURN 200 STOP Linierne 160 og 180 læser data fra disken og gemmer dem i A$. Man skal selvfølgelig være i stand til at få fat i en hvilken som helst post under et programs afvikling. Følgende rutine illustrerer en procedure, hvor den der betjener anlægget, skal indtaste et postnummer og nogle data. Dataene skrives så ned i den ønskede post. 10 PRINT"INDTAST POSTNUMMER, DATA" 20 INPUT PO DAS 30 GOSUR 180 40 OPEN 15,8,15 50 OPEN 2.8.2. "RELET! " 60 GOSUB 140 70 PRINT#15, "P"+CHR$(2)+CHR$(LB)+CHR$(HB)+CHR$(1) 80 GOSUR 140 90 PRINT#2, DA$ 100 GOSUB 140 110 CLOSE 2 120 CLOSE 15 130 END 140 INPUT#15, EN, EM$, ET, ES 150 TE ENCOUTHEN RETURN 160 TF FN=50 THEN RETURN 170 STOP

Page 60

Side 56

180 REM ##### POSTNR TIL HIGH~ OG LOU-RYTE ##### 190 HB=INT(PD/256) 200 | B=P0-HB#256 210 RETURN Linie 70 sætter filpointeren ved post nr. PO, som er speci-Linie 90 gemmer dataene, som ligger i DA$, på disk. "P" (puinterpositioneringen) kan udelades, hvis posterne gennemløbes sekventielt (i postnummer orden), dette sparer tid når programmet udføres. Denne mulighed kan man gøre brug af. når en større tabel ønskes overført til eller fra en relativ fil, eller hvis en relativ fil skal skrives over på en se-Følgende programstump laver en tabel på 100 elementer. Disse elementer skal skrives over i en relativ fil i postnr. orden fra 1 til 100 på filen ved navn TABELFIL. 10 REM TABEL SKRIVES PAA DISK. 20 AS="POST NP " 30 DIM R$(100) 40 FOR 8=1 TO 100 50 B$(A)=A$+STR$(A) AG NEXT A 70 REM OVERFØRING TIL DISKEN. 80 OPEN 15.8.15 90 OPEN 2,8,2,"RELFIL" 100 GOSUB 170 110 FOR 8=1 TO 100 120 PRINT#2, B$(A); CHR$(13); 130 GOGUR 170 140 NEXT R 150 CLOSE 2 : CLOSE 15 160 END 170 REM ***** LAES FEJLKANAL ***** 190 INPUT#15.EN.EM$.ET.ES 190 IF ENC20 THEN RETURN 200 STOP Filpointeren sættes automatisk ved post nr. 1. når filen åbnes. Hvis "P" kommandoen ikke anvendes, sættes po automatisk til næste postnr. Derfor vil posterne 1 til 100 blive fyldt med tabellens indhold (D$).

7.5 SØGNING PÅ NØGLER.

Ønsker man at søge på nøgler (f.eks. navne), kan man oprette en tabel, der opbevares som en sekventiel fil på datadisketten. Tabellen kunne f.eks. se således ud :

Page 61
TA(IN)
IN Nøglefelt
1 navnl
2 navn2
3 navn3
4
5
6
n navnn

Man kan nu angive et navn i programmet (eller fra tastaturet). Søges TA igennem, og findes navnet, kan posten hentes fra disketten ved, at det til navnet hørende indeks bruges som postnummer.

Sørger man for at navnene altid ligger i samme rækkefølge, og nye navne altid hægtes bagefter, så angiver tabellens indeks altid postnummeret.

Tabellen kan sorteres, (f.eks. alfabetisk), men så bør man anvende 2 endimentionale tabeller (eller en todimentional) :

IN PN(IN) NA(IN)
1 1 PETER
2 2 JENS
3 3 ANNE
4 4 ULRIK
5 5 ULLA
6 6 BØRGE
7 7 HANS
8 8 SØREN
9 9 JYTTE
ASTA

Til at begynde med står navnene i postnummer orden (PN). Postnumrene = indeks (IN).

Efter endt alfabetisering ser billedet således ud :

IN PN(IN) NA(IN)
1 3 ANNE
2 ASTA
3 6 BØRGE
4 7 HANS
5 2 JENS
6 9 JYTTE
7 1 PETER
8 8 SØREN
9 5 ULLA
4 ULRIK

Læses posterne nu med IN begyndende med 1 gående til 1Ø, kommer posterne ud i alfabetisk rækkefølge. Hvis nu PN og NA gemmes på en sekventiel fil, har man altid en alfabetisk rækkefølge, når denne fil læses ind i en tabel i computeren. Sorteringen skal, hvis der er plads, foregå i computerens lager p.g.a. hastigheden.

Page 62

8.1 FILER MED DIREKTE TILGANG (RANDOM-ACCES).

En fil med direkte tilgang kan oprettes som beskrevet i kapitel 5 ved brug af BLOCK og USER-kommandoerne.

8.1.1 DATASTRØMME VED FILER MED DIREKTE TILGANG.

Så simpelt som med sekventielle filer er brugen at filer med direkte tilgang ikke; hverken for inddata eller uddata. Derfor er det vigtigt, at man forstår datastømmen fra computer til huffer og derfra til diskettedrev, hvis man skal høste fordel af en sådan filoverførsel - se fig 6.

KANAL 15

KANAL 3

PRINT⊯4, A$; CHR$(44)I; CHR$(13)

OPEN 5.8.15

OPEN 1 8 3 "#7"

PRINT#5."B-W:"3:0:6:4

Data fra buffer til Indskriv data fra computeren computeren

Overføring af

Indlæsning af data fra buffer til computeren

PRINT#5,"B-R:"3;0;6;4

TNPHT#4 AS T

Fig. 6. Datastrømme mellem computer, buffer og diskettedrev

Fig. 6. kan forklares således:

  • l En filåbreg
  • A: DISK-fil OPEN5,8,15

5 = logisk filnummer: 8 = enhedens nummer (=disk): 15= kommando- og feilkanal.

Page 63

B. Bufferfil OPEN4.8,3,"#7" 4 = logisk filnummer: 8 = enhedens nummer: 3 = kanalnummer: 2. Bufferpointeren flvttes : PRTNT+5. "B-P:"3:120 *5 er logiske filnummer, åbnet i punkt A. "B-P" = placeringen af block-pointeren 3 = B's kanalnummer: 120 = pointerposition. 3. Data placeres i bufferen : PRINT#4, A$; CHR$(44); I; CHR$(13); #4 = B's logiske filnummer: A$. I = variabler: CHR$(44) = komma CHR$(13) = "vognretur". 4. Data overføres fra buffer til diskette PRINT#5. "B-W:"3:0:6:4 #5 = A's logiske filnummer; "B-W" = indskrivning af data; 3 = B's kanalnummer: Ø = portnummer: 6 = spornummer; 5. Data overføres fra disketten til bufferen PRINT#5. "B-R: "3: Ø:6:4 #5 = A's logiske filnummer "B-R" = udlæsning; 3 = B's kanalnummer: Ø = drevnummer: 6 = spornummer: 4 = bloknummer.

Page 64

6. Bufferpointeren flyttes :

PRINT#5, "B-P:"3;12Ø

#5 = A's logiske filnummer; "B-P" = placering af bufferpointeren; 3 = B's kanalnummer; 120 = pointerpositionen.

7. Hent data fra bufferen :

INPUT#4,A$,I

#4 = B's logiske filnummer; A$ og I = variabler.

8.1.2 EKSEMPEL PÅ BRUG AF POSTNUMMER.

Følgende er et programeksempel, hvor der gøres brug af variabelnavne. Eksemplet forudsætter, at en fil er åbnet med :

OPEN15,8,15

og

OPEN CH.8.CH."#"

Eksemplet anvender Ul og U2 i stedet for B-W og B-R. Hele programmet findes på TEST-DEMO-disketten under navnet "RANDOM FILE".

5105 REM * FDD BLOCK READ 5108 RFM 未来来来来来来来来来来来来来来来来来来来 5110 6051185330 5120 PRINT#15, "111: " (CH; FD; FT; FS 5130 PRINT#15. "B-P: ":CH:EP 5140 GOSUB5270 5150 FORFI=1TOFX 5160 INPUT#CH, FB$(FI): 5180 NEXT 5190 RETURN 5200 REM 米米米米米米米米米米米米米米米米米米米米米 5201 REM * EDD BLOCK WRITE 5000 原石树 法法法法法法法法法法法法法法法法法法 5210 GOSUB5330 5220 PRINT#15. "B-P:":CH:EP 5230 FORFI=1TOFX:PRINT#CH,FB$(FI);CHR$(13);:NEXT 5240 PRINT#15, "U2: "(CH; FD; FT; FS 5250 GOSUR5270

5260 RETURN

Page 65
5270 REM ***************

  • 5275 REM * ERROR CHECK
  • 5278 RFM 米米米米米米米米米米米米米米米米米米米米
  • 5280 INPUT#15, EN, EM$, ET, ES
  • 5290 IFEN=0THENRETURN
  • 5300 PRINT"ERROR STATUS: "; EN; EM$; ET; ES
  • 5310 INPUT"CONTINUE?"; Y$: IFY#="Y"THENRETURN
  • 5320 STOP
  • 5322 RFM 未来来来来来来来来来来来来来来来来来来来来来
  • 5324 REM * SET TRACK & SECTOR *
  • 5326 RFM ###################################
  • 5330 IFF<358THENF1=0:F2=22:F3=1:G0T05370
  • 5340 IFF>357ANDF<472THENF1=357:F2=20:F3=19:60T05370
  • 5350 IFE>4718NDE<580THENE1=471:E2=19:E3=25:G0T05370
  • 5360 IFF>579THENF1=578 F2=18 F3=31
  • 5370 FT=INT(((F-F1)-1)/(F2-1))+F3
  • 5380 FS=F-F1-(FT-F3)#F2+(FT-F3-1)
  • 5390 RETURN

hvor :

CH = kanalnummer, FD = drev nummer, FP = bufferpointeren.

Linienumrene fra 527Ø til 532Ø i programmet er fejlkontrolrutine. Yderligere rummer programmet i 533Ø en GOSUB for reservering af en blok på disketten. Både et spor og en sektor skal angives, hvis man ønsker at arbejde med filer med direkte tilgang.

Det er tæmmeligt besværligt, og derfor har vi herunder medtaget en oversigt over postnumre, som kan være en hjælp for den, som selv vil programmere. Postnumrene har variabelnavnet F i underrutinen, som i programmet ovenfor starter i linie 533Ø. Når et F-nummer refereres, og den relevante procedure kaldes, allokeres de tilsvarende spor og sektorer automatisk. Kataloget bliver ikke ødelagt, idet spor 18 ikke berøres af subrutinen. Bemærk at hver post i dette program fylder en blok.

Tabel 11 Postnumrenes fordeling på spor og blok.

SPOR BLOK BLOKKE/SPOR POSTNUMMER
1 til 17 Ø til 2Ø 21 1-357
18 til 24 Ø til 18 19 358-471
25 til 3Ø Ø til 17 18 472-579
31 til 35 Ø til 16 17 560-664
Page 66

8.1.3 PROGRAMEKSEMPEL (RANDOM ACCES).

På TEST/DEMO disketten findes et program, som anvender den beskrevne metode til generering af en random-access-fil. Programmet kan bruges i forberedelsen af, sletning i og korrektur på f.eks. en adresseliste. Programmet findes på TEST-DEMO-disketten.

Linienummer.

- 76 Job menu
1ØØ - 19Ø Filen dannes
2ØØ - 28Ø Sletning i filen
3ØØ - 39Ø Søgning
51ØØ - 519Ø Inddata til fil
52ØØ - 526Ø Uddata fra fil
Page 67

KAPITEL 9 Fejlmeddelelser og fællestræk

9.1 FEJLMEDDELELSER OG FILHÅNDTERING MED FÆLLESTRÆK I NAVNENE (PATTERN MATCHING).

Når den røde lysdiode på diskettedrevets frontpanel blinker, efter endt operation, er der opstået en fejl.

Nedenstående lille program bringer en egentlig fejlkode frem på skærmen, og nulstiller i øvrigt apparatets fejlsystem.

1Ø OPEN1,8,15

2Ø INPUT#1,A,B$,C,D

3Ø PRINT A.B$.C.D

hvor : A er fejlkodens nummer, B$ er selve fejlmeldingen, C er det aktuelle spor og D er den aktuelle blok.

9.2 OVERSIGT OVER DOS FEJLKODER.

ø OK – ingen fejl i systemet
1 FIL-scratch - ikke nogen fejlmelding
2-19 Bruges ikke, kan ignoreres
Blockheader mangler
21 Synkroniseringstegn findes ikke
22 Datablok findes ikke
23 Checksumfejl i data
24 Fejl i dekodning af byte
25 Skrive-VERIFY-fejl
26 Forsøg på at skrive på en skrivebeskyttet di-
skette
27 Checksumfejl i header
28 Data fylder ind i næste blok
29 Diskette ID passer ikke
Almindelig syntaksfejl
31 Fejl i instruktion
32 Linien er for lang
33 Fejl i filnavn
34 Fil findes ikke

Side 63

Page 68

  • Side 64 Fejlmeddelelser og fællestræk KAPITEL 9
    • 39 Kommandofil findes ikke
    • 5Ø Post findes ikke
    • 51 Post overfyldt
    • 52 Filen er for stor
    • 6Ø Fil åbnet for indskrivning af data
    • 61 Filen er ikke åbnet
    • 62 Filen findes ikke
    • 63 Filen eksisterer i forvejen
    • 64 Filtyper passer ikke sammen
    • 65 Ingen blok
    • 66 Illegalt spor eller blok
    • 67 Illegalt systemspor eller -blok
    • 7Ø Ingen ledige kanaler
    • 71 Fejl i katalog
    • 72 Disketten fyldt eller katalog fyldt
    • 73 Opstarts meddelelse/DOS passer ikke til 1540
    • 74 Diskettedrevet ikke klart til brug

9.3 BESKRIVELSE AF DOS FEJLKODER.

Bemærk: Fejlkoder mindre end 20 kan ignoreres. Undtaget er Øl, som efter en SCRATCH angiver antallet at slettede filer.

2Ø READ ERROR (block header findes ikke)

Disk-kontrolenheden er ude af stand til at finde et synkroniseringstegn (SYNC-tegn) i den pågældende blok. Kan forårsages af forkert bloknummer, eller hvis headeren er ødelagt.

21 READ ERROR (manglende SYNC-tegn)

Disk-kontrolenheden er ude af stand til at finde et synkroniseringstegn i det ønskede spor. Kan forårsages af dårlig justering af læse-skrivehovedet, hvis diskette mangler, er dårligt formatteret eller ikke sidder rigtigt på diskettedrevets kapstan-aksel. Kan også indikere en apparatfejl.

Page 69

Disk-kontrolenheden har forsøgt at læse eller verificere en datablok, som ikke har været skrevet korrekt. Feilmeldingen opstår i forbindelse med BLOCK-kommandoer. og indikerer søgning på ulovligt spor eller sektor.

23 READ ERROR (checksumfejl i datablok)

Denne feilmeddelelse indikerer feil i en eller flere databytes. Data er indlæst i DOS-lageret, men kontrolsammentællingen af data-bits viser fejl. Denne fejl kan også skyldes manglende jordforbindelse.

24 READ ERROR (fejl i dekodning af byte)

Data eller header er indlæst i DOS-lageret, men en apparatfeil er opstået som følge af et forkert bitmønster i en databyte. Også denne fejl kan skyldes manglende jordforbindelse.

25 WRITE ERROR (write-verify error)

Denne fejlkode fremkommer, når disk-kontrolenheden opdager et misforhold mellem de indskrevne data og de data, som findes i DOS-lageret.

26 WRITE PROTECT ON

Feilen opstår når man forsøger at skrive data på en skrivebeskyttet diskette. Skrivebeskyttelseshakket er tillukket.

27 READ ERROR (checksumfeil i headeren)

Disk-kontrolenheden har fundet fejl i headeren i en ønsket datablok Blokken er ikke indlæst i DOS-lageret. Også denne feilmeddelelse kan antyde problemer med jordforbindelsen.

28 WRITE ERROR (lang datablok)

Disk-kontrolenheden forsøger at finde et synkroniseringstegn efter indskrivning af en datablok. Findes SYNC-tegnet ikke efter en vis tid, genereres feilmeddelelseen. Feilen onstår ved dårlige disketteformater - data løber ind i næste blok -

29 DISK ID MISMATCH

Fejlen fremkommer når disk-kontrolenheden er beordret til at søge data på en ikke-initialiseret diskette. Fejlen kan også forekomme, hvis der er feil i disk-headeren.

Page 70

3Ø SYNTAX ERROR (almindelig syntaksfejl)

DOS kan ikke fortolke den kommando, som sendes til kommandokanalen. Typisk opstår denne feil, hvor der anvendes ulovligt antal filnavne eller hvor mønstre anvendes forkert. Eksempelvis vil fejlmeddelelsen fremkomme, når de samme to filnavne forekommer nå "samme side" i en COPY-kommando

31 SYNTAX ERROR (ukorrekt kommando)

DOS genkender ikke kommandoen. En kommando skal starte i l. position.

32 SYNTAX ERROR (for lang linie)

Kommandoen er længere end 58 tegn

33 SYNTAX ERROR (ulovligt filmavn)

Forekommer, når pattern matching anvendes forkert (sammen med OPEN eller SAVE-kommandoerne).

34 SYNTAX ERROR (der er ikke angivet nogen fil)

Denne feiltype opstår, når et filnavn "glemmes" i en kommando, eller når DOS ikke kan genkende det, typisk fordi et kolon er glemt.

39 SYNTAX ERROR (ulovlig kommando)

Opstår i reglen når en kommando sendes til en kommandokanal (sekundæradresse) som DOS ikke kan genkende.

50 RECORD NOT PRESENT

Når læsning af en diskettes poster fortsætter ud over den sidste post med INPUT# eller GET#-insteruktionerne forekommer denne fejlmeddelelse. Fejlmeddelelsen vil også fremkomme efter positionering til en post, som ligger udenfor en fil. Hvis det sker bevidst, at man ønsker en fil udviddet (ved hjælp af PRINT#), kan man ignorere feilmeddelelseen. INPUT*eller GET#-instruktionerne bør ikke udføres umiddelbart efter denne fejlmelding uden forudgående ompositionering.

51 OVERFLOW IN RECORD (overløb i en post)

PRINT#-instruktionen går ud over postens længde. Informationen afskæres. Da vognretur (CHR$(13)), som sendes som afslutning på posten, tælles med i poststørrelsen, vil meddelelsen fremkomme hvis det totale antal tegn i posten (incl.

Page 71
52 FILE TOO LARGE (filen kan ikke være på disken)

Postpositioneringen for en relativ fil vil resultere i at filen ikke kan være på disken.

6Ø WRITE FILE OPEN (fil åbnet for skrivning er ikke lukket før den åbnes for skrivning)

Denne fejl opstår når en fil, der er åbnet for skrivning, ikke er blevet lukket, og nu forsøges åbnet med henblik på udlæsning.

61 FILE NOT OPEN (filen er ikke åben)

Denne fejlmeddelelse fremkommer, når en fil ikke er blevet åbnet i DOS. Undertiden genereres fejlmeddelelsen ikke - instruktionen ignoreres blot.

62 FILE NOT FOUND (filen findes ikke)

Den søgte fil eksisterer ikke på den aktuelle diskette.

63 FILE EXISTS (filen eksisterer)

Opstår, når en fil forsøges oprettet under et i forvejen eksisterende filnavn.

64 FILE TYPE MISMATCH (forskellige filtyper)

Den søgte filtype svarer ikke til den eksisterende.

65 NO BLOCK

Fejlmeddelelsen opstår i forbindelse med B-A-kommandoen, og indikerer, at en blok, der ønskes reserveret, allerede er "bestilt". De viste fejlparametre indikerer den nærmeste, ledige blok med højere nummer. Hvis alle parametre er Ø (nul), er alle blokke med højere nummer reserverede eller brugt til data.

66 ILLEGAL TRACK AND SEKTOR (fejl i spor og sektor)

DOS har forsøgt at få adgang til et spor eller en sektor, som ikke findes i det foreliggende format. Fejlen kan antyde problemer med at læse pointeren til den næste blok.

67 ILLEGAL SYSTEM T OR S

Indikerer ulovligt systemspor eller -sektor.

Page 72
7Ø NO CHANNEL (der er ingen ledig kanal)

Enten er den ønskede kanal optaget, eller også er alle kanaler i brug. Maksimalt tre sekventielle filer kan være åbne på samme tid i diskettedrevet. Alternativt kan en relativ og en sekventiel fil være åbne samtidigt. (Der kan ikke åbnes to relative samtidigt)

71 DIR ERROR (fejl i filkataloget)

BAM på disketten passer ikke sammen med BAM i diskettestationen. Enten er der problemer med BAM-allokeringen, eller også er BAM blevet overskrevet i DOS hukommelsen. Det er nødvendigt at initialisere disketten for at genopbygge BAM i DOSlageret. Ikke lukkede filer lider skade ved denne proces.

72 DISK FULL (disken er fyldt op)

Enten er alle blokke på disketten optaget, eller også er kataloget (maksimalt 144 filnavne) brugt.

73 CBM DOS V2.6V17Ø

DOS-versionen i VIC-154Ø er 2.6. DOS2.6 og 1.Ø (CBM 2Ø4Ø og 3040) er indbyrdes kompatible med hensyn til læsning, men ikke med skrivning. Det betyder, at disketter. som er skrevet med DOS 1.0 kan læses, men ikke skrives med VIC-1540, og disketter, formatteret på 2.6, kan læses, men ikke skrives med DOS 1.Ø. DOS 2.6 og DOS 2.Ø er både læse- og skrivekompatible. DOS 2.6 og DOS 2.5 (8050) er hverken læse- eller skrivekompatible. Feilmeddelelse genereres i same dieblik de forskellige systemer optræder i en situation, hvor man forsøger at overskride disse grænser. Feilmeddelelsen fremkommer undertiden også efter strømsvigt.

74 DRIVE NOT READY (diskettedrevet er ikke klart).

Opstår, når man forsøger at kommunikere med et diskettedrev, hvori der ikke er anbragt nogen diskette.

Page 73

9.4 BRUG AF FÆLLESTRÆK T FTLNAVNE (PATTERN MATCHING).

Mønstergenkendelse i filnavne er mulig med alle Commodore disk-systemer. For at udnytte mønstergenkendelsen bruges enten et spørgsmålstegn (?) eller en stjerne (*) for at udføre operationer på en eller flere filer ad gangen.

Stjernen anvendes i en streng for at markere, at alle efterfølgende tegn skal ignoreres.

FIL- kan referere til filer med navnene : FTI. FTL1 FILDATA FTIIFR

Hertil kommer alle andre filnavne, hvori de tre første bogstaver er FIL. ?-tegnet kan anvendes overalt i en streng. og indikerer, at alle tegn på samme position som spørgsmålstegnet, skal ignoreres.

22222 SRC kan referere til filer med navnene :

TASTE, SRC

DIAGN.SRC

PROCE SEC

Såvel tegnene som positionen har betvdning. Spørgsmålstegn og stjerner kan kombineres på mange måder.

*.122222

giver dog ingen mening, fordi alt efter stjernen har mistet betvdning.

P222FTL¥kan referere til filer med navnene :

PET FILER

PRG FIL-32

betyder alle det samme i denne forbindelse, fordi de har et P og bogstaverne FIL på de betydende pladser.

Page 74

Side 70 Fejlmeddelelser og fællestræk KAPITEL 9

Tekniken tillader f.eks. sletning af et antal filer, når filnavnene er udtænkt med denne mulighed for øje. Vær dog varsom med at kombinere denne teknik og SCRATCH-kommandoen.

Brugt uden omtanke kan man risikere at få slettet vigtige filer. LOAD vil kun indlæse den første fil, som matcher mønstret. OPEN med mønstergenkendelse kan bruges til at åbne en eksisterende fil - i så fald bliver den første fil, som svarer til mønstret, åbnet.

Det anbefales dog ikke at anvende mønstergenkendelse i forbindelse med OPEN for at oprette nye filer.

Kommandoerne RENAME, SAVE eller COPY må ikke bruges med mønstergenkendelse. Forsøger man det alligevel, vil resultatet blive en feilmeddelelse.

Page 75

TTTTAC

TILLÆG: TEST/DEMO-diskette:

Følgende programmer findes på TEST/DEMO - disketten:

"how to use"
"how part two"
"how part three"
"vic-20 wedge"
"c-64 wedge"
"dos 5.1"
"printer test"
"disk addr change"
"view hem"
"display/t&s"
"performance test"
"seq.file.demo"
"rel.file.demo"
"sd.backup.c16"
"sd.backup.plus4"
"sd.backup.c64"
"print.64.util"
"print.c16.util"
"uni-copy"
"c64 basic demo"
"header change"

HOW TO USE:

low 10 055: dette program gives en kort beskrivelse af programmerne på disketten. Programmerne beskrives på engelsk.

20 & C-64 WEDGE:

Her findes kommandoer, som gør det muligt at indtaste forkortede instruktioner til diskettestationen. Indlæs (load) og udfør (run) VIC-20 WEDGE, hvis De har en VIC-20, og C-64, hvis De har en Commodore 64. Herefter kan et program indlæses ved at taste en skråstreg "/". efterfulgt af programmets navn og siden et tryk på skråstreg "/", eiteriulgt af programmets navn og siden et tigs på "RETURN" – tasten. Indtastes f.eks. "/HOW TO USE" (RETURN). indlæses dette program. Taster man ">" eller "@" og derefter trykker på RETURN - tasten, vil den aktuelle disk fejlstatus blive vist. Hvis man taster ">$" eller "@$" og derefter trykker på RETURN tasten, vises diskettens indholdsfortegnelse uden at det program, der på dette tidspunkt er i maskinen, slettes.

DOS 5.1: DOS 5.1 - programmet indlæses ikke direkte, men indlæses i stedet fra programmet C-64 WEDGE. Programmets load adresse er $CC00 hexadecimal.

Page 76
PRINTER TEST:

Med dette program kan man teste sin printer. Programmet sender en række karakterer til printeren, hvorved man kan teste dens kapacitet.

DISK ADDR CHANGE:

Dette program bruges til at ændre diskettens apparatnummer. Dette er en programstvret ændring. Når systemet afbrydes, vil diskettestationen atter have det oprindelige apparatnummer.

VIEW BAM: VIEW BAM kan læse BAM på 1541 disketter og udlæse det via en computer. Der er tale om et "matrix-kort", hvor sektornumre vises på Y-aksen og spornumre på X-aksen i et koordinatsystem. Ledige blokke fremtræder som lyse felter i koordinatsystemet, mens blokke, som er optaget, fremtræder som mørke felter. På grund af diskettens særlige format, vises sector 19 på sporene 18-24 dog ikke. VIEW BAM-programmet vil kunne vise . at disse sectorer er reserverede

THECK DISK.

CHECK DISK: CHECK DISK udfører et testprogram for kontrol af diskettens og diskettestationens funktion, og kan blandt andet afsløre eventuelle beskadigelser på en diskette. NB.: Under denne test formatteres disketten. hvorved dens indhold

DISPLAY T&S.

DISFLAT 125: Dette program udlæser en hvilken som helst blok fra disketten til skærmen eller en printer, både i ASCII og HEXADECIMAL kode. Også BAM og katalog kan udlæses. (Se kapitel 5 for nærmere detaljer.)

PERFORMANCE TEST:

PERFORMANCE TEST: PERFORMANCE TEST er et testprogram, som kontrollerer alle disket-NB.: Under denne test formatteres disketten, hvorved dens indhold slettes.

SEQ.FILE.DEMO og REL.FILE.DEMO:

Disse to programmer indeholder programmeringseksempler, der kan være en rettesnor. når De skriver Deres egne programmer. De viser også en teknik, hvorved man kan kontrollere efter hver læsning/skrivning på diskettedrevet. Vil man anvende disse programmer på en VIC 20, kræves en 3 K hukommelsesudvidelse grundet programmernes størrelse.

SD.BACKUP PROGRAMMER:

Disse programmer er skrevet til at arbejde med de anførte computere og en 1541 diskettestation. De anvendes ved kopiering af disketter, ved anvendelse af een diskettestation. Først diskette. Under kopieringen skal der skiftes disketter et antal

Page 77

gange.

PRINT.---.UTIL:

Med disse programmer kan man foretage en udskrift af skærmens indhold eller en udskrift af en variabel. medens et basic program er i hukommelsen. Disse to faciliteter kan anvendes sammen eller separat, alt efter hvad der kræves for ikke at komme i konflikt med andre maskinkoder i hukommelsen.

UNI-COPY: Dette program anvendes til at kopiere filer fra en diskettestation til en anden, tilsluttet samme computer. Det er nødvendigt først at ændre apparatnummer på den ene diskettestation. fra 8 til 9, ved at svare "y" til det første spørgsmål. Følg herefter spørgsmålene. Uni-copy vil da kopiere fra apparat 8 drev 0 (den uændrede diskettestation ) til apparat 9 drev 0 (den ændrede diskettestation). Den diskette, der kopieres, behøver ikke at være skrivebeskyttet, men det er en god ide at gøre det.

C64 & +4 BASIC DEMO:

Disse programmer giver en hurtig test af de respektive computere. og nogle af deres faciliteter. Brug dem som programeksempler.

LOAD ADDRESS

LOAD ADDRESS Med dette program kan programmøren ændre de to byte indlæsnings-adresser på enhver programfil på disketten. Det er også nyttigt, hvis man vil undersøge "low byte/high byte" adresserne, selv om man ikke vil ændre dem.

UNSCRATCH: Med dette program er det muligt at "fortryde" en foretaget sletning af et program fra diskettens indholdsfortegnelse, forudsat der herefter ikke er blevet skrevet på disketten, gemt filer på den. eller foretaget en "VALIDATE" af den.

HEADER CHANGE:

HEADER CHANGE: Dette program kan ændre diskettens navn uden at slette dens

Page 78

Side 74 ISÆTNING AF DISKETTE (FIG. 1.B. side 7) TILLÆG

ISÆTNING AF DISKETTE (Frontpanel 1. B.)

Før man indsætter en diskette, skal diskettelågen åbnes ved at dreje håndtaget 1/4 omgang mod uret, indtil håndtaget står parallelt med disketteåbningen på diskettestationens forside.

Tag disketten på den halvdel, der er modsat den store ovale læse/ skrive-åbning, og hold den med etikettesiden opad og med skrivebeskyttelseshakket til venstre. Nu indsættes disketten ved at skubbe den lige ind i disketteåbningen med læse/ skriveåbningen forrest og etiketten sidst. Disketten skal glide jævnt ind, indtil den er på plads. Der må ikke anvendes magt, ligesom disketten ikke må bøjes under monteringen.

NB. Når skrivebeskyttelseshakket er dækket af tape, kan indholdet på disketten ikke ændres, ligesom data ikke kan tilføjes. Dette beskytter mod utilsigtet sletning af information, De ønsker at bevare. Hvis en diskette leveres uden skrivebeskyttelseshak, er det ikke meningen, at indholdet skal kunne ændres.

Blanke disketter har ikke etiketter påsat, når man køber dem.

Når disketten er på plads, drejes dørhåndtaget 1/4 omgang med uret, indtil den stopper lodret over åbningen.

ADVARSEL: Hvis håndtaget ikke bevæger sig let, skal man straks stoppe. Måske er disketten ikke rigtigt isat. Sæt disketten rigtigt i, således at dørhåndtaget let kan lukkes.

Page 79
NOTATER
Page 80
NOTATER
·
Page 81
NOTATER
······································
·
Page 82
NOTATER
·
·
·
Page 83
NOTATER
Page 84
NOTATER
Page 85

Page 86

Loading...