BEF2.KRS¢*************************************¢* *¢* >> B E F E H L E << *¢* *¢* Teil 2... *¢* *¢* (c) 1987 by Action! User Group *¢* *¢*************************************¢¢¢BYTE FUNC GETD ¢--------------¢¢GETD ist eine Funktion und liest ein¢Datenbyte vom angegebenem Kanal.¢¢Syntax: A=GETD(7)¢¢(A muss BYTE Variable sein)¢¢liesst hier ein Byte von Kanal #7,¢also dem Kanal fuer die Tastatur,¢falls der Action! Compiler aktiv ist.¢¢¢CLOSE¢-----¢¢zum Schliessen von Kanaelen¢¢Syntax : CLOSE(kanal)¢¢¢OPEN¢----¢¢zum Oeffnen der IOCB Kanaele.¢¢Syntax: OPEN (KANAL,STRING,AUX1,AUX2)¢¢also z.B: OPEN (3,"D:FILE.*,4,0,)¢ oder: OPEN (3,"P:",8,0) ¢ oder: OPEN (3,file,4,0) ¢ wenn 'file' ein Bytearray¢ ist oder auf eine String-¢ konstante zeigt.¢¢fuer KANAL kann man eine Kanalnummer¢von 0-7 einsetzen(Achtung: Kanal 0/6/7¢werden meistens vom System benutzt!!!)¢Falls die Kanaele vor dem OPEN noch¢offen sind ,muessen sie vorher mit ¢CLOSE geschlossen werden.¢Fuer AUX1 koennen folgende Werte ein-¢gesetzt werden oder auch BYTE Var-¢iablen, die diese Werte haben:¢¢ 4 : NUR lesen¢ 6 : Directory lesen¢ 8 : NUR Schreiben / Auch fuer ¢ Druckerausgabe¢¢ >> 9 und 12 NUR fuer Files:¢¢ 9 : Schreiben/ ,aber an das be-¢ stehende File anfuegen¢¢ 12: Lesen und Schreiben (hier mit¢ NOTE und POINT PROCs arbeiten¢¢ AUX2 ist vom jeweiligen Geraet ab-¢ haengig. Beim Diskettenlaufwerk 0¢ Beim Screen ("S:") ist es die ¢ Graphicstufe(geht aber besser ueber¢ die GRAPHICS Proc.¢ Beim Cassettenrecorder ("C:") be-¢ stimmt es die Pause zwischen den¢ Bloecken: 0=lange Pausen, 128=kurze¢ Pausen(fast Mode wie bei CSAVE)¢ Beim Drucker 820 von Atari ist 0¢ normal(wie auch bei den meisten ¢ anderen Druckern) und 83 ergibt¢ liegende Zeichen.¢¢¢XIO¢---¢¢zum Aufrufen verschiedener OS-Routinen¢¢Syntax:¢¢XIO(KANAL,0,KOMMANDO,AUX1,AUX2,string)¢¢Man beachte , dass der 2.Parameter 0¢sein muss.¢¢z.B.:¢¢XIO(2,0,254,0,0,"D:")¢¢formatiert die Diskette in LW#1 !!!¢ ¢KOMMANDO kann (wie auch AUX1/AUX2)¢entweder ein fester Wert, als natuer-¢lich auch eine BYTE Variable sein.¢¢Hier die Werte fuer KOMMANDO:¢ ¢zuerst die ,die andere PROCs schon ¢sind: ¢¢ 3: Kanal oeffnen OPEN¢ 5: Zeile einlesen INPUTSD¢ 7: Zeichen lesen GETD¢ 9: Zeile ausgeben PRINTD¢11: Zeichen ausgeben PUTD¢12: Kanal schliessen CLOSE¢¢nun Diskettenorientierte Funktionen:¢¢32: Rename :Files umbenennen¢ dann STRING z.B.:¢ "D:OLDNAME.EXT,NEWNAME.EXT"¢33: Delete :Files loeschen¢35: Protect :Files sichern¢36: Unprotect :File entsichern¢37: Point¢38: Note¢254: Formatieren¢¢¢¢NOTE & POINT¢------------¢¢NUR mit Diskette:¢Mit diesen PROCs koennen Sector und ¢BYTE innerhalb des Sectors ,aber nur¢innerhalb eines Files gelesen und be-¢stimmt werden ¢¢Syntax: NOTE(KANAL,SECTOR,SECTORBYTE)¢ ^ ^¢ CARD BYTE¢ POINTER¢¢¢Mit NOTE kann die Sectornummer und das¢Byte im Sector, auf dem sich der ¢Schreib/Lesekopf der Diskettenstation¢gerade befindet gelesen werden. ¢Normalerweise wuerde dies ja ueber ¢eine FUNCtion gehen, aber es werden¢3 Bytes benoetigt: Eine CARD fuer den¢Sector und ein BYTE fuer das BYTE im¢Sector. Deshalb muss NOTE eine PROC¢sein und die Variablen, in denen nach¢Aufruf von NOTE die Sectornummer/Byte¢stehen soll muessen POINTER sein. Das¢wird aber auch aus der Demo er-¢sichtlich.¢ ¢Syntax bei POINT:¢¢ POINT (KANAL,SECTOR,SECTORBYTE)¢ ¢Hier duerfen SECTOR bzw. SECTORBYTE¢keine POINTER sein, da diese ja nur¢zur Angabe des Sectors dienen¢¢Aber nun zum Demoprogramm ,aus dem¢alles ersichtlich sein sollte:¢¢¢; note & point demo¢¢CARD POINTER SECTOR¢BYTE POINTER SECTORBYTE¢CARD STARTSECTOR¢BYTE STARTBYTE,CONSOLE=53279¢¢PROC NOTEDEMO()¢BYTE A¢¢GRAPHICS(0)¢PRINTE("Dieses Programm zeigt, welche") ¢PRINTE("Sectoren ein File belegt")¢PUTE()¢PRINTE("Um auf den Anfang des Files zu")¢PRINTE("'zeigen' (POINTen) >START< Taste")¢PUTE()¢PRINTE("Irgend eine Taste zum Start")¢¢A=GETD(7)¢¢CLOSE(2)¢OPEN(2,"D:*.*",4,0) ; IRGENDEINFILE¢ ; OEFFNEN¢¢ NOTE(2,SECTOR,SECTORBYTE)¢ STARTSECTOR=SECTOR^¢ STARTBYTE=SECTORBYTE^¢¢DO¢ A=GETD(2)¢ NOTE(2,SECTOR,SECTORBYTE)¢¢print("Sector : ") printc(sector^)¢print(" und Byte ")¢ printb(Sectorbyte^)¢print(" inhalt ") printbe(A) ¢¢IF CONSOLE=6 THEN ; WENN STARTTASTE¢¢ POINT(2,STARTSECTOR,STARTBYTE)¢FI¢¢until EOF(2)=136 ; bis File zuende¢od¢return¢¢-----------------------------------¢¢¢Es geht weiter mit :¢¢¢ BEF3.KRS¢¢