[Coco] variable sized GETlike operation in basic 09?

Wayne Campbell asa.rand at gmail.com
Tue Jan 5 21:57:55 EST 2010


SHELL "DISPLAY " <shudder>. I have always used gfx2 for display and cursor 
positioning. I avoid the SHELL command unless I have to use it.

Wayne

----- Original Message ----- 
From: "L. Curtis Boyle" <curtisboyle at sasktel.net>
To: "CoCoList for Color Computer Enthusiasts" <coco at maltedmedia.com>
Sent: Tuesday, January 05, 2010 6:03 PM
Subject: Re: [Coco] variable sized GETlike operation in basic 09?


> Syscall doesn't add a lot of overhead as long as it is loaded in  memory 
> (it should actually be a command in BASIC09/RUNB itself, in my 
> opinion.... it is far too useful to make a separate module). If you  look 
> at the disassembly  of syscall, there isn't much to it except  mapping the 
> passing registers on the stack and calling the system  call. Make sure it 
> is merged in with RUNB to save an 8K block, giving  that for your BASIC09 
> program or data area.
> Syscall is very useful for a lot of things, with a few exceptions 
> (usually calls that are duplicated in BASIC09 itself). Using I$Write  to 
> do windowing commands is another example, rather than making  strings of 
> specific lengths to handle commands, or worse yet, the  SHELL "DISPLAY XX 
> XX..." that I used to see a lot in BASIC09 source  code PRINT somewhat 
> worked, but some control characters get mangled,  so I always used either 
> PUT, if I only had 2 or 2 string lengths of  display commands to worry 
> about, or syscall/I$Write if I had more than  2.
>
> Sent from my iPhone
> L. Curtis Boyle
>
>
> On Jan 5, 2010, at 7:33 PM, Aaron Wolfe <aawolfe at gmail.com> wrote:
>
>> On Tue, Jan 5, 2010 at 8:23 PM, L. Curtis Boyle <curtisboyle at sasktel.net
>> > wrote:
>>> Best is to use the I$Read or I$ReadLn SYSCALL functions... Just set  the 
>>> Y
>>> register to the # of bytes you want to read for each call. You can  vary 
>>> it
>>> for every read, if you want.
>>
>> Thanks.  This is how I've been doing it in asm, just wondered if I was
>> missing some easy way to do it in basic09.  As a general rule, is it
>> pretty efficient to use SYSCALL?
>>
>> I have it loaded in memory and use one SYSCALL in HTTPD now (to
>> display memory used by the HTTPD process in the web page footer).
>> This didn't add any measurable time to the speed of serving pages, but
>> I wondered about efficiency when using it many times repeatedly.  The
>> improvements in speed over single byte reads almost certainly outweigh
>> any lost cycles in using SYSCALL over a native OS9 command (if there
>> are any).
>>
>>
>>
>>>
>>> Sent from my iPhone
>>> L. Curtis Boyle
>>>
>>>
>>> On Jan 5, 2010, at 6:17 PM, Aaron Wolfe <aawolfe at gmail.com> wrote:
>>>
>>>> Does anyone know if its possible to do a GET for changing amounts of
>>>> data? Or another fast way to read changing sized 'records'?  GETting
>>>> one byte at a time is very slow compared to getting several in the
>>>> HTTPD program.  Right now I GET a 32 byte array at a time out of  files
>>>> and just try to make sure files are sized a multiple of 32, but  thats
>>>> no good.  I also pad out all the headers coming in from the client  to
>>>> a standard length so GET can work there, also not great.
>>>>
>>>> I think I could use SYSCALL and I$Read, but this seems wasteful,  maybe
>>>> not?  Maybe I'm missing something in B09?  It seems GET only reads  the
>>>> size of the variable(s) specified, and you cannot reDIM or change  the
>>>> size of the variables in any way.
>>>>
>>>> Thanks for any clues
>>>> -Aaron
>>>>
>>>> --
>>>> Coco mailing list
>>>> Coco at maltedmedia.com
>>>> http://five.pairlist.net/mailman/listinfo/coco
>>>
>>> --
>>> Coco mailing list
>>> Coco at maltedmedia.com
>>> http://five.pairlist.net/mailman/listinfo/coco
>>>
>>
>> --
>> Coco mailing list
>> Coco at maltedmedia.com
>> http://five.pairlist.net/mailman/listinfo/coco
>
> --
> Coco mailing list
> Coco at maltedmedia.com
> http://five.pairlist.net/mailman/listinfo/coco 




More information about the Coco mailing list