Skip to main content

Full text of "Australian National OS9 Newsletter (August 1989)"

See other formats


y 



ATTR Syntax: Attr filename [permissions] Usage : Examine or 
change the security permissions of a file Opts: -perm = turn off 
specif ied permission perm= turn on specified permission -a = 

inhibi 
s - nc 

to QiWl 



i: 



ynta: 
one d< 



smgie 
BasicO 
filenai 
CHD S 
snecif: 



rms : d - directory file 

pwner w - write permit 
^jI read permit to public 
iii|ermitlo public BACKUP 
jpi Copies all data from 
^i error occurs s = 
^iilites BASIC09 Syntax : 
ippUILD Syntax: Build 
illlfrom standard input 
working directory to 
saee: Change execution 



r^^\JSTr^^m!Smss^m^^^m^DSSEmM nlenamel filenames 
Usage : FiMiiiMiiiiiil^l?^^ Cobbler devname 

Usage : Creates uS-9 bootstrap m 

COPY 



AUSTRALIAN 
0S9 

NEWSLETTER 



age : (SStesTB-T WMSrlp fu^ current boot CONFIG 

Syntair° — ' ■- " r— .i. > — — i ..t. .-j — i — „ ^^^ cop 

St 



EDITOR : 
Gordon Bentzen 
8 Odin Street 
SUNNYBANK Qld 4109 

(07) 345-5141 



lyntax 
one fil 
Date ft 
specify 
: Checl 
for woi 
= save 
cluster 
print i 
|<devn 
lilenan 
delete 
directo 

[e] \A 

names 

execut j 

Display s cfi|i||li|piipii||||p™|||p^| Syntax 



data from 

EjssSyntax : 

iiil> Usage 
»ctory 
jst^s -m 
iiifunused 
-0 = 
iiiyname> 
liel [-x] 
»sij^x = 
li|i:il)eldir 
Hiax: Dir 
B file 
k=print 



: Dsave [-oiiii|:;|iii|!iBiiiii^ file 

to copy all files in a directory system Opts : -b make a system 
disk by using 0S9boot if present -b=<path> = make system disk 

using patl* '^ " «aii»/>fl 1* ■ ^^A^-n^ #»■ Jii . nnfo».T 1«»«ln 1_- ^q jjq^ 

makdir 

AUGUST 1989 «/ 

mnted 

i 



process b 
command 
ECHO Syn 

output EI 

text editoL — n ^m ^^ ^^ .. ^ . 



jjHBj'jfcWaj^llJtrWjMtk.! 



iMii«ibame> 



error messages! ^ 

Usage: Chain ^'^^^^^^pVigff'^'mSii^ 

<devname> Usage : Initializes an OS-9 diskette Opts ; R - Ready L 

- Logical format only "disk name" 1/2 number of sides 'No of 



AUSTRALIAN 0S9 NEWSLETTER 
Newsletter of the National 0S9 User Group 



EDITOR : Gordon Bentzen 

HELPERS : Bob Devries and Don Berrie 

SUPPORT : Brisbane 0S9 Level 2 User Sroup. 

August, 1989 



Let's talk about utility progr amines. Hands up those of you who quickly write a programme in idare I say 
it?) Disk Extended Colour Basici to do a particular Job for a particular time, and then promptly turn off the 
computer when that job is done ? Quite a few of you Til bet. I know I do it all the time. Have you ever considered 
that you have just written, and destroyed, a programme that might be useful to someone else ? And above all, with a 
little bit of extra thought, could be written in Basic09? 

Oh sure, I can hear you say, why would I turn on the computer, boot up 0£9, and then load up Basic39 just 
to run a ten line programme ? Well, I am here to say that it is a very good idea to try it anyhow. There is a 
programme elsewhere in this issue, written by Bob Devries, that started out life just as a little half-a-dozen 
lines to find the file descriptor information of a particular file. The information required was the creation date 
of a source-code listing, and, as ^aje all know, the DIR E command only tells us the date of last modification, not 
its creation. So, having found out how to read the file descriptor, Bob put this to further work and after a few 
hours work, out popped 'UpperDir' a Utility Programme to rename all directory files to uppercase and all normal 
files to lower case. 

You know, rd like to hear from other people who have perhaps put together a few ideas like that to do a 
task and, even if it does not work as expected, send it to us here at the newsletter, and we may be able to add 
some more code to make it work better, or do more yet. Sometimes, I find that ! start writing a programme to do 
something, and find when I am part-way through that I can't finish it because of lack of experience or not enough 
knowledge of the subject. What happens then is that usually it gets forgotten, or picked up again much later. 
Sometimes I wonder if someone else could perhaps continue with it to make it turn out correctly. Of course, the 
best idea would be to talk with people at the local user group, but that is usually still three weeks away, and I 
need help NOW! When this happens to you, drop us a few words on paper (or disk) and we will endeavour to set you 
straight if possible. Don't forget, we three are not super programmers either, so don't expect miracles, and please 
give as full an explanation of what you want as you can. 

Well, I guess it's time to remind you about your subscriptions. They are due at the end of THIS month. 
Please get those cheques away as soon as possible so that we can decide whether it was all worth it. I for one have 
learnt a lot from writing in this newsletter, and from having to read the manual whenever I had to cover a subject 
I was not too sure about. I know I am speaking for the three of us when I say that I'd like to continue for another 
year, so how about it fellows ? Hake my day, send that cheque! 

Topics covered in this month's newsletter include 'UpperDir* by Bob Devries, more explanations about the 
'Edit' utility (that word again) by Don Berrie, and also of course, more of Bob's Database in 'C, I'd like to see 
more questions coming to us from you people out there, even if you've found out the answer yourself in the mean 
time, don't forget that others may have similar problems. At a local user group recently, I showed some-one how to 
use the Config programme to set up a double sided 0S9 system disk (Oh, don't blush, friend). I'm sure there are 
others who have the same problems, including difficulties in setting up fluiti-Vue and other programmes. 

Well, that's about all for this month, happy computing. 

Regards, 
The Editor. 



Page 2 



AUSTRALIAN 0S9 NEWSLETTER 

MACROS: Continuing a Tutorial for the 0S9 Macro Text Editor 

Two of the most overlooked features of the Macro Te>;t Editor are its ability to handle utore than one file at a 
tiffie, that is multiple buffers* as well as its ability to handle quite complex macros. It is not really surprising 
that these features are overlooked, because the manuals (both Level 1 and Level 2) leave much to be desired in 
their explanations. First of all, let's look at multiple buffers. 

Why do we need multiple buffers? Well consider the following. We are writing an article for the newsletter using 

good old EDIT, and we decide that, as an example, we want to include our startup file into the text to illustrate a 

point. Ever tried it? If, like most people that I know, you looked in the manual to see how to do it, couldn't 

understand it, and gave up and used Stylograph", read on. 

The other (and I guess the most important) reason for having the ability to edit multiple files is of course for 
our friends with Level 1 systems, or for those with Level 2 systems which don't support windowing, (Yes, some 
Level 2 systems don't have that ability.) Back to our example. For the purpose of this tutorial, we decide that we 
want to edit the text before we import it into our document. To do this, we load the new (ie /dd/startup ) file 
into a DIFFERENT buffer. (We could have imported the whole file into our document, and then edited it, but that 
doesn't serve the purpose of this example.) We do this by switching to a new buffer : 

B0 

When EDIT is started, by default there are two buffers already defined, the primary buffer (denoted by *), and the 
secondary buffer (denoted by $). At startup, the primary buffer is always buffer 1, and the secondary buffer is 
buffer 0. So the command B0 makes buffer into the primary buffer. You can only operate on the text contained in 
the primary buffer. Rather than make buffer 6 the primary buffer, you could have equally typed : 

B6 

and created buffer 6 (if it did not already exist), and made it the primary buffer. I don't know how many buffers 
you can create, but you are limited (initially at least) only by the amount of memory available. Remember the 
C#nK] command line modifier from last months installment. To display the buffers currently defined, type : 

.DIR 

(Don't forget the full-stop.) This will show you a list of the currently defined buffers, with the primary buffer 
marked with an asterisk, and the secondary buffer marked with a dollar sign. It will also show a list of MACROS 
currently defined. We will come to those later. 

Next, we will need to load the text into the new primary buffer. This is a two step process. The first thing to 
do is to tell the editor the new filename. This is where the confusion starts. To do this you need to use the : 

.READ "pathlisf 

command. The parentheses are necessary. Therefore our command line becomes (in my case at least) .READ 
VHB/startup', So far we have only told the editor the name of the file that we wish to edit. Next we must 
actually read the file into the buffer. To achieve this we use the ' 

Rn 

comntand, which causes the editor to read n lines, (eg R* reads the whole file into the buffer, if it will fit). As 
the editor is loading text into the buffer, is displays the lines as they are read. From here on, we edit the file 
as per normal. 

When we have the text in the format we desire for incorporation into the original document, we use the : 

Pn 



Page 3 



AUSTRALIAN 0S9 NEWSLETTER 



coiiiinand. This is where the concept of defined primary and secondary buffers becomes important. The Pn command 
PUTS n lines of text into the secondary iin our case buffer 0f ahere we just were) buffer. Remember, that the 
buffer last used, becomes the secondary buffer. (Use the .DIR comsand if you are not sure where you are.) If we 
were to switch to the original document using the Bl commandi we could then load text from the secondary buffer 
(now buffer 3, the last buffer that we used), by the use of the command : 

5n 

This command SETS n lines from the secondary buffer. The thing to remeiriberT is that both G and P operate only 
between the primary and secondary buffers, whatever their numbers ajay be. 

Other commands that you may wish to use are the W command, which writes n lines from the current buffer to the 

pathname as defined in the initial command line, or by a .READ command. The Vn command turns on (n=0) or off 

(n=any other number) the verify command. This will prevent the editor from echoing lines to the terminal. You 

need to exercise care with the use of the V command, because it will also prevent listing of your document to the 
screen using the Ln command! 

As with the previous article in this series, you may use both upper of lowercase for these commands. 

Next month, we will discuss the editing of files larger than the workspace, and start on the concept of MACROS, and 
hopefully we will provide a macro to delete lines of text and display the next line in the file, rather than the 
one just deleted (a quirk of this editor which I find absolutely infuriating! I). Until then keep up the good work. 

ooooooooooOOOOOOOOOOggoooooooo 

A Database in C 
By Bob Devries 

Here are two more parts to my C Database programme. The first is 'help.c' and provides a help screen 
documenting all the commands available, and the second is the 'find.c' routine which allows you to find a 
particular record in the file. 

The 'help' command clears the screen with a call to the 'els' function, and prints a series of lines to the 
screen, and then waits for a keypress. When a key is pressed, it clears the screen and returns to the main 
programme. 

The 'find' function prints up an empty shell for the data entry, and then asks for the surname to be found. 
It then goes looking for the record that matches that name. If found, it is displayed, and that record becomes the 
current record. If it is not found, 'Not Found' is printed on the status line, and the last record is displayed. 
Note that the programme is very litteral in its search, and does differentiate between upper and lower case. So 
?Tiake sure you get it right. Perhaps someone can devise an easy way to overcome this limitation. 

helpO 

/* pressing h from the data screen will clear the screen and display the */ 

/* help message, then wait for a keypress, the mainO function then re- * 

/* displayes the data screen. */ 

{ 

char ch; 

ch = '\3',' 

clsO; 

printf('\n\n\n a = amend (edit) displayed record. \n'); 

printfC p = goto previous record. \n'); 

printfC n = goto next record. \n")', 

printfC i = insert new record. \n'); 

printfC d = delete displayed record. \n"); 

Page A 



AUSTRALIAN 0S9 NEWSLETTER 

p-rinttr f = find a record by 5urr!5iTie.\nM; 

printfC m = find another record oiith sanie critsrid,W)\ 

printfC h = help ithi£ screen^.Xn" ); 

printfC e = e>;it from prograirfme/Nn"); 

printf CXnXnXn Press any key to return,,."); 

ch = getchO; 

cl5(); 



findO 

/* findO locates the first occurence of the surnafne Jjhich is input and */ 

/* returns the record number of that record */ 

[ 

char naiTietinp[21 1; /* te-irip surnafiie variable */ 

int tefsprec; /* teiTipcrary current record */ 

long lof; 

temprec = S; 
fseek(fP,3I,2)? 
lot = fteil(fp); 

ciso; 

scrnuiaskO; /* display erfipty screen Hiask */ 

cursor (13,23); 

erase! in O; /+ erase ^nessage line */ 

cursor (10, 23); 

pr intf ("Input surnairie to be fcund."); /* print proiiipt */ 

cursor (14,5); 

qetsinaiTietiTip); /* get surnarrie to be found +/ 

cursor (!2» 23); 

erase] in (); /* erase jiiessage line */ 

do i 

temprec += 1; 

fseek(fp, (long)(teinprec - l)*5izeof (friaiD^S) ; 

if (fteli(fp) < lof) /* read until eof */ 

fread(&!Tiai I , sizecf (iriai I ) , 1 , f p) ; 

} 
else 

i 

cursor (IS, 23); 

erase! in (); 

cursor (10, 23); 

printfC'Not found,'); 

break ; 

) 
} mile ((strcinp(naf?ietrnp,fnail, surname) '= 2)); 
rEturn(tefiiprec); /* return record nu.Ttber of manted file */ 

} /* or last record if not four^d */ 

dcoooooocdOOOOOOOOOOddgoooodgo 

LABEL PRINTER This is another SasicS? prngrai^rie Submitted by Phil Frost of Kalgocrlie. Phil states "the 
label_Printer prografiinie arose froffi the need to re-label disks after a re-organization of m cGllection,' ye thank 
you Phil for sharing this prograi^iirse iiuth us, and no doubt other meiTibers 'Jiill also find it useful. The prograiTiiTie 
uill help you print labels to attach to disks, and contains all the necessary instructions 'iihen run. I note that 
Phil has included printer codes for a Tandy DHP-133, however his CDnimented source ^^ill fTiake it very easy to alter 
the codes to suit any other printer. 



a q B 



AUSTRALIAN 0S9 NEWSLETTER 



PROCEDURE iafaei.print^r 

i* One Line Printer prograiTiiTie for 3 1/2 >; 15/16 labels 

U For Printing Lables 

(* 

(# by Phil Frost 

(# 

(* The Printer Codes are Set for a DhP-i30 Printer 

DIM printer:EVTE 

DIM a$:STRING[35] 

DIM b$:STRINGE42] 

Dill c$;STRING[60] 

DIM select :BYTE 

•(* 

OPEN #printer//p'': WRITE 

(* 

53 PRINT CHR$(12}; 

PRINT \ PRINT \ PRINT 

PRINT TAB(33}; "LABEL PRINTER/ 

PRINT \ PRINT 

PRINT TAB(23); " 1/ Noruial 35 Characters per Line' 

PRINT 

PRINT TAB(23); " 2/ CoiTiprsssed 42 Characters per Line' 

PRINT 

PRINT TAB(23); ' 3/ Ccnderised fcS Characters per- Line' 

PRINT 

PRINT TAB (23); ' 4/ End ' 

PRINT \ PRINT 

PRINT TAB(33)? 

INPUT ''Select", select 

ON select GOTO 223i 300,430,500 

200 PRINT 

PRINT TABdS); " Type quit cr QUIT tc end input" 

PRINT TAEa0); ' 35 Characters Per Line' 

PRINT TAB(10)? ' +*******+***+*t**+********+i^*******' 

PRINT TAE(9); 

INPUT a$ 

IF 5$=^quit" OR d$=^OUIT^ THEN 

GOTO 50 

ELEE 

ENDIF 

PRINT i|printer,CHR$(27); CHR$a9); 

PRINT #printer,a$ 

SOTO 283 

300 

PRINT TAB(10); " Type quit or QUIT to end input' 

PRINT TABil3); ' 42 Characters Per Line' 

PRINT TAB(10)? " *****#****************i^*+*****+*f**+******' 

PRINT TAE(9); 

INPUT b$ 

If b$=''qu2t^ OR b$=^QUIT^ THEN 

GOTO 53 

ELSE 

ENDIF 

PRINT #printeriCHR$(27}? CHR$(23); 

(t set CGfiipressed character 

PRINT #printer,b$ 



E[-'=}\-=t 



AUSTRALIAN 0S9 NEWSLETTER 

GOTO 30S 

43i3 

PRINT TABdS)? ' Type quit or QUIT to end input' 

PRINT TABUS); ' 613 Characters Psr Line' 

PRINT TAEUfl); ' *********ft**##**t*****ie^****************+******+******':^* 

PRINT TAB(9); 

INPUT c$ 

IF c$=''quit" OR c$=^qUIT^ THEN 

GOTO 53 

ELSE 

END IF 

PRINT Sprinter, CHR$(27); CHR$(20); 

(* set cDndensed character 

PRINT ipr inter, c$ 

GOTO 4B0 

530 PRINT #printer,CHR$':27}; CHR$(19); 

(* reset printer tc nDruial HfOde 

CLOSE #pr inter 

END 



DGOOGGGGOODv^^OvOIJUUOUDGOGDGDOOO 



The Public Domain Libirairy. 



We have received a number of requests froiri .triembers far a ccrriplete listing of the Public DOiTiain files Gf the 
National 0S9 user Group. The task of providing this hciiiever, is not as sii^ple as it sounds. Bob Devries revieiued 
SGiTie 34 archived files in last /Tionth's neuisletter which provided inforrriatiDn about each of the filssr This nionth 
we include a simple directory listing of another disk from the library iiihich includes iiiany files published in past 
newsletters. Please r'BfBr to this neujsletter listing if ycu iifant any of these files, and order in the usual 'iiay. 
i.e. Post formatted disks ^itu returr^ postage plus $2.03 copy charge for each disk, and of CDurse^ specify the 
files or other disks required. 

Directory of /d2/ASh/ChDS 
util d'Tfode iriverify frirenaiife ar09 ar 

Directory of /dlv ASH/ HELP 
ar.aoc 

Directory of /d2/C_rWC!1DS 
lsn3 database lb Is rdump h>;d 

Directory of /d2/C_f1W/SRC 
IsnS.c database, c ansi.h ib.c rdufiiP.c 

h>;d. c 

Directory of /d2/C^iiy/HELP 
Riost C.2 Ds9h>;d.art 



Directory of /d2/BASICS9/Cr1D3 
zap oh^iiS labeLprinter upperdir 

Directory of /d2/BASICS9/SRC 

zap iconedit ohf7f5_laii« label .printer 

upperdir. B39 



AUSTRALIAN 0S9 NEWSLETTER 



Directory of /d2/SH£LLSCHlPT 
ccl_cc2 ccl_patch 



Directory of /d2/3H£LL 

shellpiuB 5hell?iU5.dDc shellpluE-. install 

ioglock.on.scr logiock.off .scr uild.cn.scr 

uild.off .scr nGblDck.on.bcr r.DblDck.off.scr 

*>SHELLPLUS.2.1 

Directory of /d2/SHELL/SHELLPLUS.2.1 

sheilpius 5hellplu5.doc shellpliis. install 

atcheck.on.scr atcheck.cff .=.cr logiock.Gn.srr 

Icglock.off.Bcr =iiiid.cn,5cr kuid.off.scr 

noblGck.on.scr noblock.off. scr bhellscript 

paraiTi.a parairf.bin sdate.a 

■E-date.bin prD-;ript.bin 



OOOODDODGOUUOUUOvOOOOOGGOCDGGO 

UpperDir, A Ba5ic09 Utility. 
By Bob Devries. 

TvB had heard several tiiiies in the past the corriplaint that it is i-inpossiblp to tell files and directDries 
apart in 0S9. The ansiiter of caurse lies in good hcusekeeping, and by having all files in loii;ercase characters, and 
ail directories in uppercase characters. Well^ thaVs ail very good* but li^hat if you've already got the?!? all in 
uppercase like the 0S9 level one disks as they li^ere supplied by Tandy? Of course a utility prograiiiriie is the ansujer. 
And here it is, I have called it UpperDir. 

It opens the current liiorking directory! ap,Q reads the filenajTies one by one? and decides lishether they are 
files or directories^ and rena^ies theui using loyercase or uppercase as is necessary. If they 3.tb already cGrrect 
then no changes are ?^ade. 

Please note that this prcgra^iHie requires that you have 'Rename' in n^emory or the current execution 
directory, or it luill not liicrk. If you forget this, the UpperDir iiiill teruiinate ujith an error. 

I have eisD liiritten a version in -C, yhi ch does not require 'Renan^e' to york, but does the renajiiing 
itself. I liiill be presenting that version m a future neuisletter, 

PROCEDURE UpperDir 

mm (fr UpperDir - CopyRight (c) 19S9 By Bob Devries 

3S2F (* Freely distributable, 

0047 U UpperDir reads the current directoryi and changes all 

Mir (* the directory naines to UPPERCASEi and all the files to LOi^ERCASE 

30C2 (* It uses the 'Renaius' utility i so be sure it is in NieiTiory 

30FD (* or m the execution directory. 

311E (* Version LM Date 12th July, 1989. 

0143 EASE 3 

8145 TYPE direct=fn3iife:STRING[29]; f5ect(3):EYTE 

3162 DIH entryidirect 

0169 DIM dirp3th:BYTE 

0173 DIM path:BYTE 

2177 DIM na[^e,neana[ne:3TRING[29] 

3187 DIM attriBYTE 

31SE DIM changed I BOOLEAN 
0195 

3196 attr=S 

319D nafTiS^"" 

3iA4 neiiinafTie^'" 

01AB OPEN #dlr?athT^ = :READ+DIR 

31B7 GET #dirpathTentry 



AUSTRALIAN 0S9 NEWSLETTER 



SiCi 


GET #dirpath, entry 


01 CB 


WHILE N0T(E0Fi#dirp5th)) DO 


SIDS 1 


GET #dirparhTentry 


01 E3 


IF LEFT*(eTitry.tnanie,l)-CHK$(0) THFN 


mfb 


GOTO 30 


01FA 


END IF 


01FC 


RUN ex t p, auie ( en t ry , n arrie ) 


020B 


ON ERROR GOTO 10 


8211 


OPEN ^path^naiTieJREAD 


32iD 


ON ERROR 


3220 


GOTO 20 


0224 10 


ON ERROR 


022A 


ON ERROR GOTO 15 


0230 


OPEN 4tpath,narrse:READ+DIR 


023C 


ON ERROR 


023F 


GOTO 20 


0243 15 


PRINT "File 'M nafTte? ' irtaccessablE, ' 


0264 


ON ERROR 


0267 


naiT!e="'' 


026E 


neumarje="' 


0275 


SOTO 1 


0279 20 


RUN readfd(path,attr) 


02SB 


EXITIF attr=-l THEN 


02VB 


PRINT "Error m Syscall ''GetStt SS.FD calT' 


S2ca 


ENDEXIT 


02C4 


changed=FALSE 


02CA 


IF LAND(dttr,$80)=*S0 THEN 


02DE 


RUN upper (nafffSineiunaiTie, changed) 


02EF 


ELSE . 


02F3 


RUN- lower (nafrfeireyrjaniei changed) 


0307 


ENDIF 


0309 


PRINT neuinameT 


030F 


IF changed=TRUE THEN 


031A 


SHELL 'renafTie "+nairie+'' '+neiiinaiTie 


0331 


ENDIF 


0333 


CLOSE #path 


0339 


na.[ite="' 


0340 


newnaiTie^'' 


0347 30 


ENDWHILE 


034£ 


CLOSE ^dirpath 


0354 


PRINT \ PRINT 'Finished '* 


0364 


END 


PROCEDURE 


extnairie 


0000 


TYPE direct=fnajTietSTRING[29]; fbeettSi^BYTt 


001B 


PARAH entry: direct 


0024 


PARAh nafrie:STRING[2v] 


0030 


DIM i: INTEGER 


0037 





003S FOR 1=1 TO 28 

004S E)(ITIF ASC(fiIDi(entry,fnd(Tie,i,l))>i27 THEN 
00jE natr!e=narne+CHR$(ASC(HID$ientry. fna-iff, i, I ) )-i2e) 

007B ENDEXIT 

007C Tiajae=nanie+HiD$(enti"y,tname!ia ) 

0091 NEXT i 

00^C END 
PROCEDURE upper 

0000 PARAh n3JTfe:STRINGL2'9] 



AUSTRALIAN 0S9 NEWSLETTER 



m\f 

3326 
eS2D 

mit 

003E 
004D 

0060 

8070 
0076 
007A 
0087 
008? 
0094 



PAR AH neutna.riie « b i H I N'b[ 2? J 
PARAM changed: BOOLEAN 

DIH i: INTEGER 
DIM char: INTEGER 

FOR i=l TO 29 
Lhar=ASC(HlD$(riafiietiTl M 
IF chdf>96 AND cuar<..i72 THEN 
neiitnafi>e=n8ynrifTiP+CHR5khar-32) 
changed=TRUE 
ELSE 

r(eiunanie=neL!!fdfne+CHR$ i char ) 
END IF 
NEXT I 
END 



PROCEDURE lo^PT 



PARAh name :STRING[ 291 
PARAM npu)nai[ie:STRINGL29] 
PARAh changed: BOOLEAN 
DIh i: INTEGER 
Dili char; INTEGER 

FOR i=i TO 29 
cbar=ASC(t1ID*(nafriGTi,l)) 
IF char>64 AND char<91 THEN 
neufnair-re=neu.inajTie+CHR* { char+32) 
changed=TRUE 
ELSE 

neuinaiTie^neuinaiietCHR'J ( char- ) 
ENDIF 
NEXT i 
END 



0000 
000C 

00iB 

001F 

0026 
002D 
002E 
003E 
004D 

0060 

0070 

0076 

007A 

0037 

0089 

0094 
PROCEDURE readfd 

0000 PARAM path.-SYTE 

0007 PARAH attriSYTE 

000E EASE 

0010 TYPE regi5ters=rc,a,bTdp:BYTE; >;,y,u: INTEGER 

0035 TYPE 5egiist=lsn(3):EYTE; no5ec(2):BYTE 

0050 TYPE filedes=3tt:BYTE; oiiiner: INTEGER; dateiS) :BYTE; iink^BYTE 

seQB(43):5eqlist 



5zei 



crEat(3):BYTE; 



0095 
009E 
00A7 
00AE 
00B5 
00BD 
B0C5 

00D1 

00DD 
00EB 
00FA 

010C 

0114 
0113 

0123 

1 '~'^i 



DIM rege: registers 
Dili fd:filedes 
DIN GetSttiBYTE 
DIfi SS_FD:BYTE 

SS_FD=5GF 

reg5,a=path 

reg-=.,b=SS_FD 

reg5.>;=ADDR(fd) 

RUN syscainGptStt.regbJ 

IF LAND(reqs.cCf 1)=1 

attr=-i 
ELSE 

attr=td.Hti 
ENDIF 
END 



i^j-N; 



-^'tJ 



W)