Skip to main content

Full text of "Australian National OS9 Newsletter (July 1990)"

See other formats


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

rms : d - directory file 
l^jiwuer w - nrrite permit 



inhibi 
s - nc 
to owi 

Sw - 
ynta: 
one d( 
single 
BasicO 
filenai 
CHD S 
specifi 
di: 
Usag 



sHi read permit to public 
ii|>ermitU public BACKUP 
"^ Copies all data from 

P^ error occurs s = 
iiliites BASIC09 Syntax : 
HiBUnJ) Syntax: Build 
J|i|from standard input 

W: working directory to 



Change execution 

amel filename2 

Cobbler devname 



ax; 



Usage : Creates OS- 9 b^ current boot CONFIG 

Syntaxr '^"^ - " ^^ ■ ^ — i r - - »ii . - \ . ■ * - . ^ j — i . -p ^j^jj-g ^Qpy 

from 



r. 



yntax 

one fil 

Date [t 

speciiy 

: Checl 

for woi 

= save 

cluster 

rint ^ 

<devn 

ilenan 

delete 

directo 

[e] U] 

names 
execut] 



EDITOR : 
Gordon Bentzen 
8 Odin Street 
SUNNYBANK Qld 4109 

(07) 345-5141 



data 

EjPjSyntax : 
^^ s: t = 
iH> Usage 
■li^ctory 

Hirs -m 
^iiunused 
-0 = 
iii?!iiyname> 
iliel [-x] 
terx = 

Deldir 
ifiiax: Dir 
iiie file 

k= print 



Display VcMpiippi^iliiipii^iiMiiMiiiiiP Syntax 

: Dsave [-oipppiiiiiMiiiiiii^^ file 

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



using pat 
process b 
command 
ECHO Syn 
output EI 



JULY 1990 



do not 
makdir 

iliiiard 
.Jpiited 

text edltO. — ^ffj » !> j a;*MBayi«-y»!H^<am ! ^^ 

error messag^lip|iiiililiiiiiBli^^ 

Usage; Cham w me j^Ten^m 

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

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



? 



AUSTRAL I AN 0S9 NEWSLETTER 
Newsletter of the National 0S9 User Group 
Vol-Qme 4 Number 6 



EDITOR : Gordon Bentien 

HELPERS : Bob Devries and Don Berrie 

SUPPORT : Brisbane 0S3 Level 2 User Group. 

I'a trying to think but nothing happens! 

What would you think of your favourite coiputer if it kept on saying this to you? The above phrase is a direct 
steal froB a recently acquired public doiain disk which included the archived file °piay.ap\ The PLAY coiiand, 
written by Kevin Darling and uodified by Brian C. White, will play sost Hac and Aiiga sound files. The coiiand 
"play think* will result in that phrase coiing fpoi your ionitor speaker. GREAT! 

Yes, we do have sore public doaain prograiies thanks to the efforts of Don Berrie, Bob Devries and the cooperation 
of ieibers of overseas QS9 user groups. The files obtained are iostly in the AR archive fonat. The AR utility, by 
Carl Kreider, is loosely modelled on the archive utility in the Kernigan & Plaugep book, 'Software Tools" and its 
purpose is to gather together files into a coMon file to keep related files together. The files included in an 
archive typically include the executable lodule, source code .doc files, readae and any other related instruction 
files. 

All the public doiain library files are available by following the usual procedure. That is, lail your FORMATTED 
disks to address shown on the newsletter cover, include paysent of our copy fee of $2 per disk (all disk foriats 
35s5, 40ds and SOds attract the sane charge) plus payient for return postage. We can also copy to three and half 
inch 0S3 disks if required, op even MSDQS 360k disks (if you really want to do that). 

We do incur costs in obtaining PD aaterial, even though there say be no direct charge for the prograwes, and the 
copy fee is designed to share these costs. 

we do .ffianage to deal ^iiith your requests for disk copies fairly oronptly lost of the tiae, however due to other 
cosiilaents, a yeek or so aay soBeliaes slip by. The easier you sake it for us, the quicker we can return iail 
your disks. Please include a self addressed label, postage stasps for return sail and use a lailer or package 
i*hich we can reuse for return. This seans that we can repack the copied disks back in youp aaiiep, stick on youp 
addpess label and staips; and pop it in a sail box. 

Most of the PD 15 stored cm 30 track double sided disks, and if se can siaply do a backup, this also speeds things 
up. 

Now the question on youp lips is; What PD ppogpasnaes do we have and how sany disks ape needed? Very good 
question! The ppoblea of indexing and listing the progpaiBies in a aeaningful way is a ppoblea to which we do not 
have an ideal answer at this point. 

The newly acquiped aatepial was soupced fro* the European OSS Usep fipoup and caae on twenty-eight (28) 40tp OS plus 
three (3) 30tp OS disks. There appears not to be any papticular order to the type of file, and files ape iostly in 
the root dipectopy of each disk. tfe will need a pepiod of grace to sopt thpough these disks if particulap 
ppogpaiBe types are sought, tfe ape, however, aost gpateful for the aatepial. 

tfe also have a nuabep of disks fpoi the U.S. 0S9 User Group in the original fopsat, Diskl thpough Di5kd2 (with a 
couple aissing). These wepe issued on 35tp single sided disks, and ape now in the library on 80 track disks under 
a dipectopy fop each issue, eleven 30tp disks in all. The saae files have also been sopted into categories, eg. 
tfopd Processing, Coaaunication etc., nine 80tr disks in all. These disks are now a few years old and do not 
contain any prograaaes specifically for level 2. Soae 0S9 63k is included. 

Page 2 July 1990 



AUSTRALIAN 0S9 NEWSLETTER 

All in all there is enough laierial to keep anybody busy for lonihs even if it is soiewhat of a lucky dip at the 
loient. We will include soie cowent and review of the lore interesting prograiies in our future newsletters for 
those who wish to be selective. 

"Things are certainly starting to happen in the DS9 World'/ That was the opening stateient of last »onth's 
editorial which dealt with new OSS lachines. The new DS9 prograises being advertised overseas together with the 
increasing voluees of PD software certainly add weight to that stateient. 

To keep the ball rolling we can add our bit, even if it seeas but a drop in the ocean. We desperately need 
Australian produced coftsercial progranses and public dosain laterial. The aiti of the National 0S5 Iteer firoup is to 
prosote the use of DS9 on a non-profit basis, so please assist us by sharing any programe of your own which you 
are prepared to release as public dosiain or shareware. Hany of our Beaibers want to see sore Basic05 prograises. 
Can you help? 

Also to keep the ball rolling, and to saintain supply of PD software fros overseas sources, we do need to send 
something in return. Your little Basic09 prograifiBie or utility could spread throughout Australia, Europe and 
Afiierica. 

SUBSCRIPTIDNS:- Heiabership of the National 0b5 User Sroup is still only $18 per annusi. Sincere thanks to those 
who have already sent a cheque for Beebership renewal. 

y& feaintdifi a cosicn expiry date of end August each year, and we do need your continued support to avoid a rise in 
fees. 

PLtASE, PLEASE, PLEASE take the tise to include a short note with your subscription renewal and tell us what you 
would like to see in this newsletter; also tell us what you don't like. Please sake your cheque payable to 
"National 0o9 User Group" 

JUST ft REHINDER;- We do not accept PAID advertising (subscriptions iust cover all costs) however, we will include 
ads froi seffibers for locally produced hardware or software, and ads (unpaid) fros coBuercial enterprises, only if 
we consider such an ad would be "a service to neftbers". 

Tifi trying to think but STILL nothing happens! Cheers, Gordon. 

ooooooooooDOOOOOODOOoooooooooo 



CCSfiO AND SHELLPLUS 

The Biodified shell proqrafiste, Shellplus (Version 2.xx and onwards) gives us all kinds of nifty 
opportunities to get better productivity trot our CoCo 055 systefts. One of those nice things that shellplus offers 
is the ability for the user to set a search path for executable files. This allows the systefi to exawine a nuiflber 
of directories, not just the current execution directory, for executable files. 

Siiiilarly, the user has the opportunity to use a prospt other than the standard 0S9 system proiapt. It is 
possible for the user to actually feodify the shellplus executable file, and hardcode the desired prospt within the 
shellplus code. However, we are all aware of the problesis caused by hard coded device nases, paraaeters etc, and 
of course they all have the drawback that they then cannot be easily changed, 

Because of the way that OSS Level 2 for the CoCoS forks the startup file froE it's specific sysgo aodule 
(called ccSgo), unless you actually hard coded the paths into that sodule, you would not normal ly be able to have 
any paths or custom prospts set, on your /Tertt device. 

To atteapt to get around this liRitation, we are now able to offer, as part of our public dofiain library, 
an archived set of files containing a replacesient module for ccSgo, written by Bob Devries and Don Berrie. This 
new Bodule tries to open a one-line file called /dd/SYS/config.os9, and expects to find in that file the paraieters 
required for the shell which it opens on the default device (norially /TerK). 

Page 3 July 1990 



AUSTRAL I AN 0S9 NEWSLETTER 

Included in the archive is also a sataple config.osS file as an exaaple. If the file is cannot be found, an 
error aessage is printed. Siailarly, if the system cannot read the file, an error message to indicate this ppoblei 
is also printed. In either case, the systea then sisply uses the standard default paraaeter i=/l as in the 
original cc3go aodule. 

For those users who have a Burke i Burke hard drive nih the U-RQII installed in the interface, and wish to 
use .the alternate boot feature of that systes, we have also included a Bodule called ccSgo.alt. This aodule looks 
for files naaed /dd/SYS/config.alt, altstart, and altshell rather than /dd/SYS/config.os9, startup and shell. This 
will allow you to have two totally different bootfiles on your hard drive. 

The source code, fully coaaented, for both aodules is also included. 

The usual National 0S3 Users Group copying conditions apply. Any coaaents or requests for further 
inforaation should be directed to the authors; 

Bob Devries Don Berrie 

(07) 372781 G (07) 375 3236 

ooooooooooOOOOOOOOOOoooooooooo 

HOy COHE NY BOOT PROCESS TAKES SO LONG? 



Ever wanted to know what is happening while you are sitting there looking at that green VDS screen with 0S9 BOOT 
written in the aiddle of it? 'Jell read on. 

This inforaation coses froa the 0S9 "super guru" Kevin Darling, and is reproduced with thanks. 

The QS3 Boot sequence is as follows; 

The DOS routine in RSDOS, or sose other type of custoa ROM, points to a track (noraaliy Track 34) on a disk drive, 
and reads that track, which has REL, BOOT, and 0S9P1. 

REL sets up the sain 5IME registers and the systes crash/reset vectors, and then bypasses Boot to execute the 0S9P1 
aodule. 

G£3pl sets up Direct Page variables, F$ systea calls, finds free RAM, and scans RAM for aodule headers. It 

then inserts found aodules (at this stage Rel, Boot and 0S3p]) into the aodule directory, and looks for the Init 
sodule. QS9pl can't find Init, because it has not as yet been loaded froa the disk, so it does an internal F$Boot. 
FSBoot caiis the Boot aodule, which Jhopefuliy-t loads the bootfile froa disk. F$Boot is not particularly saart, 
and aaongst other things, requires that the bootfile is in one single contiguous block. 035pl then links to 0S3p2 
and juBips to it. 

QS9p2 installs its FIcalls, and then looks in Init for its default execution and data directories, and atteapts to 
change to thea using I$ChgDir. I$ChgDir fails because no I$calls are as yet installed, so 0S9p2, by default, finds 
IQMan and initializes it, and I$ChgDir is tried again. 0S9p2 opens a path to the default device (usually /tera, 
but hard coded into the Init aodule.) 

0S9p3 is then looked for, and, if found, it is called as a subroutine. (If QS9p4 is present it is called froa 
0S9p3 ... Setc) 

Once the user defined extensions to 0S3 (0S9p3, 0S9p4 ) have been called and executed, 0S3p2 then checks Init 

for the initial process naae (CC38o), and executes it using an F$Fork call. It then does an FINProc call which 
doesn't return. 

CC3So prints the "0S3 LEVEL 2 .... " signon aessage, and sets the default tiae (setiae causes 0S9p2 to find the 
Clock aodule and init it at this tiae), which is also hard coded into the CCoGo aodule. 



Page 4 July 1990 



AUSTRALIAN 0S9 NEWSLETTER 

CCSGo atterspts to change directories to /hO. If successfLil, it Rodifies the syBteGi procesB descriptor to also use 
/hO (for calling in grfdrv later, etc). CC3Go tries to fork 'shell startup" and waits until the startup process 
has coffipieted. CC3So then tries to fork "autoex" and if found will sit and yait until the execution of this 
prografirRt terainates. 

CC36o theri chains (ehich ieans that it tersinates itself, and starts a new process) to the Shell on the default 
wmdotef defined in the Init iodule. (This shell is not started fro& the startup procedure; hence only the preset 
shell parafifeters, which are hardcoded into CC3G0j are set for this shell). 

Then, you finally get control of the systeft. tlhet'! 

ooooooooooOOOOOOOOOOooooooDooo 

BUILDING A BOGT DISK Part 2 

If you followed part I in last sonth's News Letter, you should have a systes'i disk that is configured to take 
advantage of the ftaxisus capacity of your disk drives. 

As proRiised I sill explain how to build a customized systei disk using only the sodules supplied on the original 

Level 2 systes disk So Boot up your systea. Hake sure you are using a copy of your system disk in drive /du. We 

need to create a fiOD'JLES directory on this disk and copy into it the iiiodules needed for your Syste&t Disk. 

Hakdir /dO/HODULES 

By now you should have decided which modules you require in your Boot file, if not, lake yourself a list now. Place 
a backup copy of your Boot-Config-BasicOS disk in drive /d] and copy the files you require into the aodules 
directory on the disk in /dO. 

chd ./'dO/ sodules 

copy /d]/Bodules/CC3Disk.dr CC3Di5k 
copy hi] /iiodules/c lock . SOhz Clock 
copy /di/sodule5/dO_40d.dd dO 
copy /dl/feodules/dd_40d.dd dd 

etc 



Until you have all the modules required to create your new boot disk. It is a bit tedious, but once done, you 
shouldn't have to do it again. You can add, delete or change itodules as your systein requi resents change. You will 
have noticed that 1 left the extensions off the files 1 copied, they are not needed. 

While I did state that we wouldn't be using anything that was not on the original systes disks supplied by Tandy, 
should you have the "save" coKBand froi^ Level 1 or frofi the Developsent Systesi disks, then to save soae tiise I 
would suggest you save the i&odules fros- sesory that you require, especially those aodules that have been patched. 

chd /dO/sodules 
save dO 
save dl 
save dd 

etc 



The liodules directory can contain as iany files as you wish, it is not restricted to only the files required on a 
particular Boot Disk. It will be a perianent source for creating different Boot Disks when required. 

Now we need to create two files, the first is to be a file called "bootlist", which will contain a list of the 
modules to be included in the new osSboot file. The other is the procedure file that will create the new OSSBoot 
file, Ue will call this file "new^bootV These files can be created by using the Build coaaand or with Edit, or as 
1 do with a word processor, 

Page 5 July 1990 



AUSTRALIAN 039 NEWSLETTER 

The list- of Bodule ridtteB in "bootlisl" should be in the order they are wanted in the Boot file. 

Eootlist 

0S9p2 

lOhan 

RBF 

CCJDisk 

DO 

Di 

DD 

etc.. . . 

Once you have created this bootlist in the data directory of /dO, the next thing is to create the procedure file 
ney_boat which sust also reside in the data directory of /dO. 

Procedure Nev^Boot 

t 

tffiode .1 -pause 

chd /dO/Bodules 

osSgen 16] </dO/hootlist 

chd /dO 

dsave /dO /dl ! shell 

tfeode . 1 ■ pause 



Nu^i' ^i'ith 5 formatted disk in /dl type new_boot then press enter and a new bootdisk will be created that includes 
only those files listed in Bootlist. The two lines Chd /dO and dsave /dO /dl ! shell can be reiiioved if you don't 
want the directories and files on /dO copied to the ne^^ boot disk. You can copy these files frofit any source you 
choose, bearing in lind that shell and GrfDrv Bust be in the coemands directory otherwise the boot %ill fail. Once 
the boot disk is completed, you. can boot up with the new systes disk and then sake the necessary patches etc. 
according to last eonths' article. 

Durinq the writing of this article I have coEe to realise just how far we have progressed since 0S3 Level 2 was 
first released. An overview of the aodifi cations being used by the Brisbane User Group Herfibers sight be in order. 

Regards Rob Uns worth. 

ooooooooooDDOOOODDOOoooooooooo 

Check Book Prograuffie. 
Prograeae by Dale L. Puckett, cosKents by Bob Devries. 



Here's a short Basic 09 prograaoie to assist in balancing your checkbook. The prograsie case to us by 
courtesy of the European 0S5 Usergroup, and originated froBi CofBpu-Serve Information System. The source is very 
short and easy to understand. It requires no special software (except BasicO^ of course) and should work on both 
level one and level two 0S5 systeifis. 

Bob Devries. 
PROCEDURE Checkbook 

0000 it Sofifething to Help balance your checkbook t] 

002E 

002F DIK answer, ciearcode:STRINb[l] 

003F DIH balance, ser-vice_charqes:REAL 

004A DIH totai_checks,outstanding_deposit5:REAL 

Page 6 July 1990 



AUSTRALIAN 0S9 NEWSLETTER 

0055 DIM nuftber_of_check5,nusber_cif_depo5it5; INTEGER 

0060 

0061 clearcc.de;=CHR$(tOC) 

006A 

006B PRINT clearcode 

0070 

0071 PRINT 

0073 INPUT "yhat was the balance on the statesent-^ ", balance 

00A2 INPUT "What was the total of all service chargeE? \5ervice_charges 

O0D5 

O0D6 PRINT clearcode 

OODB 

OODC nuiiiber_of_check5:=-l 

0OE4 total/che"ck5;=0 

OOEC aisount:=0 

OOF^ 

OOFS RUN getcheck5(nuffiber_of_check5,total_check5,aftount) 

0105 

OlOA PRINT clearcode 

01 OF 

0110 nuBber_uf_depo5it5:=-l 

0118 out5tanding_depo5it5:=0 

0120 afflount;=0 

01 2£ 

0125 RUN getdeposit5(nuaber_Df_depo5its,out5tanding_depo5it5,aBount) 

013D 

015E PRINT clearcode 

0143 

0U4 PRINT 

0U6 PRINT "Your final balance should be $": 

Olt-A PRINT USING "RS.2'"",balance+out5tanding_deposit5-(total_check5+5ervice_ch3rge5) 

0184 PRINT \ PRINT \ PRINT 

018fl PRINT "Froi your stateient: ' 

01A3 PRINT 

01fi5 PRINT "A balance of $"; 

01B3 PRINT USING "R8. 2'", balance; 

OlCo PRINT "»inu5 a service charge of $"; 

01E9 PRINT USING V5.2'",servicejharqeE; 

01 F5 PRINT " = $"; 

0202 PRINT USING V8.2'";baUnce-5ervice_charge5 

0214 PRINT 

0216 PRINT "You had "; nueber^of ^checks; " outstanding check (s); totalling $\ 

024D PRINT USING "r8.2^%total_check5 

025B PRINT 'and "; nu&ber^of^deposits; 

0263 PRINT ' deposit(s) outstanding, totalling: $"; 

0294 PRINT USING "r8.2*",outstanding_depo5it5'' 

02A2 PRINT 

02h4 

02AS 

02An INPUT "Would you like to balance another stateient; (Y'jes or (N)o! ".answer 

G2EA 

02EB IF an5wer='Y- DR an5tfer=''y" THEN 

0300 RUN checkbook 

0304 ELSE 

0308 PRINT 

030A PRINT "Hope »e sere able to help you with your headache." 

033F END IF 

0341 

Page 7 July 1990 



AUSTRALIAN 0S9 NEWSLETTER 

03i2 END 

PROCEDURE getchecks 

0000 PARAM nuaber_of_check5:INTEfiER 

0007 PARAH tot.dl_checks,a80unt;REAL 
0012 

0013 PRINT 

0015 PRINT "Now we need to have you list the aaount of each check" 

OOiE PRINT Hhat was not listed on the bank's statesent." 

007E PRINT 

0080 PRINT "Uhen you have listed all the checks enter a value of zero." 

OOBE PRINT 
OOCO 
OOCl 

00C2 REPEAT 

00C4 INPUT ^Aiount of check? ".atount 

OODD nuiber_of_check5:=nuRber_of_checks+] 

OOES total_check5:=totdl_checks+aiiount 

00F4 UNTIL affiount=0 
0)00 

0101 END 

PROCEDURE getdepos its 

0000 PARAM nusber_of_depo5its: INTEGER 

0007 PARAH outstdnding_deposits,aBOunt;REAL 
0012 

0013 PRINT 

0015 PRINT "You sust now list each deposit that did not show up" 

004C PRINT "on the bank stdteitent." 

00&6 PRINT 
OObS 

0065 PRINT "Enter a zero when all your deposits have been entered." 

00A3 PRINT 
00fi5 
00A6 

00A7 REPEAT 

00A9 INPUT "Affiount of deposit? ",a»ount 

Q0C4 nuaber_of _depo5i ts : =riui6ber_of _deposi ts+1 

OOCF out5tandinq_depo5it5;=out5tanding deposits+asount 

OODB UNTIL a&ount=0 

00E7 END 

oooocoooooODOOOOOOOOoooooooooo 



Uindow Directory 
prograntae by Kevin Darling, text by Bob Devries, 



More Basic09 you say? yell OK. Here's a little utility written by Kevin Darling, and obtained by ae via the 
European DS3 coaiunity fros the Coi^pu-Serve Information Systes. The prograaie displays a directory of the currently 
opened or INIZ'd windows in your systei. It tells you the entry nusber, the window type, which block the screen rai 
uses, the current working area, and the sixteen palette register contents. I have found it useful t-o find out what 
colours are set in each window. The prograiuse is not very large, and uses various 0S9 systM calls via the 



'SysCair utility. 



Bob Devries. 



Page 8 July 1990 



AUSTRALIAN 0S9 NEWSLETTER 



PROCEDl 


JRE yOir 


0000 


REh yindow Direciory 


0013 


REil Copyright by Kevin Darling Aug S7 


0037 


REH For Each Window yOir ShowE.; 


005S 


REM yindotf table entry 1 


OObC 


REM Window type 


007A 


REM Block nupiibers LtBed, with offset into block if 1 block 


0062 


REh Bdcklink window table 1 if overlay, and overlay buffer 


OOFB 


REH block begin nusber. 


Old 


REH Uindow begin and size (col, row) nuBbers 


01 2B 


REM Window current cwarea being and size 


0152 


REH Palette values (0-15) for that screen 


01 7A 


REM Really should be rewritten wit-h recursive calls to 


OlAF 


REM show all parent back links of euitiple overlay ^'s. 


01 E4 


REH Set Up Vars and Define Constants: 


0208 


EASE 


020fi 


DIM tesp'.BYTE 


0211 


DIM w; INTEGER 


021S 


DIM yWuslBYTE 


021F 


DIM sctab: INTEGER 


0226 


TYPE register=CC:BYTE; OllNTEGER; DP:BYTE; )(,Y,U: INTEGER 


024B 


DIM req:reqist-er 


mi 


DIM yE(:64)l"BYTE 


0260 


DIM Sy5PrL(512):BYTE 


02ec 


DIM DJevTbl: INTEGER 


0273 


TYPE'table=V_Driv..y Stat.y_Desc.V_FHqr: INTEGER; V UsrslBYTE 


0290 


DIM devtable(32): table 


02HE 


DIM DrvNa»e:STRIf^SC5] 


02AA 


DIM DevNaffie:STRING[41 


0266 


DIM M Nase; INTEGER 


02B0 


DIM cc3io:STRING[51 


02C3 


DIM SC(32):BYTE 


02DS 


DIH typ${3) 


02DF 


DIM F_GPrDsc;BYTE 


C2Eb 


DIM FJ:pyHe»:BYTE 


02ED 


cr3io="CC3r+CHR$($CF) 


02FD 


F_GFrD5C=$18 


0305 


F CpyMeuFliB 


030D 


FOR n=0 TO 8 


031F 


READ typKn) 


0523 


NEXT n 


0334 


DATA "Saae Screen" 


0346 


DATA "40 Col Text" 


0358 


DATA "80 Col Text" 


03bA 


DATA -Bad" 


0574 


DATA "Bad" 


037E 


DATA -640 Two Color" 


0332 


DATA "520 Four Color" 


03fi7 


DATA "640 Four Color" 


03ec 


DATA "320 Sixtn Color" 


0502 


REM Get SysPrc Descriptor: 


03EB 


req. 0=256 


05F7 


req.)(=ADDR(SysPr-c) 


0405 


RUN SyscalKFJPrOscreq) 


0414 


REM Get Offset in Systei Map to Device Tables; 


0441 


de5tindtion=A0DR(0_bevTbl) 


044C 


count=2 


0454 


off5et=$30 



Page 9 July 1990 



AUSTRALIAN 0S9 NEVSLETTEK 



0150 


GOSUB 1000 




0461 


REM Nny Use thai Info to Gel the Device Table Itself: 




04S5 


de5tiridlion=AD0R(devlabie) 




04A0 


LOunl^SlZECdevtable) 




04AB 


off5et=D_DevTbl 




04B4 


G03UB 1000 




04BS 


REH Main Loop; 




04C& 


REH Check Each Device Entry for CC310 Driver. 




G4F1 


REH If it is, then Get the Uindow Entry * FroB Static 


Storage. 


0&2E 


REH (unless type <> window, then treat as VD5) 




055B 


REM (and skip deleted entries) 




0S78 


FOR DE=0 TO 31 




053A 


REH Check for Entry in Use: 




05A4 


IF devtable(DE}.VJJ5r5<>0 THEN 




05B? 


REM Set Driver Nase Offset In Descriptor; 




OSDF 


destindtion=ADDR(H_Haie) 




05EA 


count=2 




05F2 


offset=devtable(DE).V_Driy+4 




060S 


SOSUB 1000 




0605 


REH And Then the Naae Itself: 




0625 


de5tination=ADDR(DrvNatte) 




0630 


off5et=M_Nafie+devtabie(DE).V_Driv 




0644 


count =5 




Ob4C 


GOSUB lOOO 




0650 


IF Dr¥Naae=cc3io THEN 




065D 


eOSUB 500 




Obbi 


END IF 




0663 


ENDIF 




0665 


NEH DE 




0670 


rjDTWT » " 




rniN 1 




069B 


END 




069D 500 


REM itttjjjt«tmtt«m«wmtm 




06C3 


REM Print Uindow Entry This Device: 




06E5 


de5tinatiori=ADDR(M_Nafie) 




06FO 


off5et=devtablH(0E).V_De5L+4 




0703 


couni=2 




070e 


GOSUB 1000 




070F 


de5tinaiion=ADDR(DevHaie) 




07]A 


offset-H_Naie+devtabIe(DEJ.V_De5c 




072E 


L0uni=4 




0736 


SDSUB 1000 




073A 


nnTijT H Bt 




rhiNI , 




0767 


n$='" 




07bE 


FOR c=1 TO 4 




0780 


t$=MID$(DevNaf&e,c,l) 




07SF 


EHTIF ASC(U}>123 THEN 




079C 


t$=CHR$(ASC(t$)-128) 




07A9 


n$=n$+t$ 




07B5 


ENDEaIT 




07B9 


n$=n$+t$ 




07C5 


NEH c 




07D0 


PRINT nS 




0705 


REH Check Device Static Mesory For Type; 




07FC 


destination=AODR(teip) 




0307 


off5et=$06+devlable(DE).V_Stat 




03 IB 


counl=] 




0323 


GOSUB 1000 




0627 


IF LAND($80,tesp)=0 THEN 





ge 10 July 1990 



AUSTRALIAN 0S9 NEWSLETTER 



0837 


PRINT "VOe Screen" 


0845 


RETURN 


0847 


ENOIF 


0849 


REM Else Gel Window Entryf Fros Static Hea: 


0873 


de5tination=A00R(yNutt) 


087E 


of f5et=$35+devtable(DE). V.Stat 


0892 


count=] 


085fi 


SOSUB 1000 


089E 


w=yNu!i 


08fi6 


Off5et=$1280+tft64 


om 


count=64 


OSBE 


de5tination=ADDR(WE} 


08C9 


60Sl)e 1000 


08CD 


5ctat.=yE(0)t256+WE(l) 


08E1 


PRINT "Entryl "; s 


08F0 


IF LAN0(5ctab,$FF00)=tFF00 THEN 


090] 


IF LAND(5ctab,$FF)=tFE THEN 


0912 


PRINT "Iniz'd" 


09] C 


ELSE 


0920 


PRINT "!! DE1NI2 or DWSET THIS DEVICE '!" 


094& 


ENDIF 


0947 


ELSE 


094B 


off5et=sclab 


0954 


cnunt=32 


09SC 


deslination=ADOR(SC) 


0967 


SOSUB 1000 


096B 


PRINT %"indO¥ Type :": 


097D 


tftype=SC(0) 


G98S 


IF wtype=$FF THEN 


0996 


PRINT Mniz'd" 


09A0 


RETURN 


09A2 


ENOIF 


09A4 


IF tftype>$30 THEN 


09B2 


¥type=t37-tftype 


09BF 


ELSE 


09C3 


tftype=wtype+4 


09CF 


ENDIF 


09D] 


PRINT USINS "i3>",tftype: 


09DE 


PRINT " ': typ$(wtype) 


09F2 


REM PRINT ^Screen Table! "; 


OAOD 


REK PRINT USINS "h4",5ctab 


0fi26 


PRINT "Block Nuftber; '; 


0A39 


PRINT USING "h2\SC(l); 


0fi47 


IF ¥iype>2 THEN 


0A54 


PRINT '-'] 


0A5A 


IF ytype=5 OR wtype=fc THEN 


0A5F 


PRINT USINS "h2",SC(l)+l 


0A7F 


ENDIF 


0A81 


IF tftype=7 OR wtype=8 THEN 


0A96 


PRINT USIN6 •'h2%SC(l)+3 


0AA6 


ENOIF 


OAAS 


ELSE 


OAAC 


PRINT " Offset: "; 


OACl 


PRINT USING •'2(h2)V.yE($34)-*80; yE($35) 


OADO 


ENDIF 


OADF 


IF WE(2)<>$FF THEN 


OAEE 


PRINT "Parent Entry: V: \ PRINT USING '*i2)V.UE(2); 


OBIG 


PRINT " Overlay "; 



Page 11 July 1990 



AUSTRALIAN 0S9 NEWSLETTER 



0825 


PRINT USING "h2".UE(t2D 


0B33 


ENDIF 


0B35 


PRINT -Window Start: "; yE($3£); ',"; yE(t37); 


0B61 


PRINT " Size : ^ yE($38); ",': WE($35) 


0B31 


PRINT ^WArea Start: '; «E(S05); •/; mm)', 


OBA& 


PRINT • Size : "; yE($07); ","; yE(S08) 


OBCA 


FOR prrFO TO 7 


OBDC 


PRINT USINS ^h2\S(:(16+prn); 


OBFO 


PRINT ' "; 


0BF6 


NEH prn 


OCOl 


PRINT 


0C03 


FOR ppn=8 TO 15 


0C15 


PRINT USIN6 ■h2\SC{16+ppn); 


0C29 


PRINT ' "; 


0C2F 


NEH prn 


0C3A 


PRINT 


0C3C 


ENDIF 


0C3E 


RETURN 


0i40 ■ 


1000 REM Copy count at cff5et in datiaaqe to destinat 


0C76 


reg.0=ADDR(Sy5Prc)+$40 


0CS8 


req.Y=count 


0C95 


req.X^offset 


0Ch2 


regAl=de5tination 


OCAF 


RUN SyscdlKF CpyHesjeg) 


OCBE 


IF LANO(req.CC,$On<)0 THEN 


OCDl 


PRINT •'Error " 


OCDB 


PAUSE 


OCDD 


END 


OCDF 


ENDIF 


OCEI 


RETURN 


0CE3 





ooooooooooOOOOOOOOOOoooooooooo 



COCO-LINK Magazine; Just a re»inder for those interested in a wider section of CoCo systeias. CoCo-Link is 
produced in South Australia and is well worth your support. Contact the Editor, Robbie Oalzell, on (OS) 386 1647 or 
write; 

CoCo-Link 

31 Nedland Crescent, 
Pt. Near lung a South, 
South Australia 5167 



ooooooooooOOOOOOOOOOoooooooooo 



Page 12 July 1990