[Coco] BASIC09 - unsigned INTEGERs?

K. Pruitt pruittk at roadrunner.com
Sun Feb 1 09:39:17 EST 2015


----- Original Message ----- 
From: "Robert Gault" <robert.gault at att.net>
To: "CoCoList for Color Computer Enthusiasts" <coco at maltedmedia.com>
Sent: Sunday, February 01, 2015 6:20 AM
Subject: Re: [Coco] BASIC09 - unsigned INTEGERs?


> Allen Huffman wrote:
>>> On Feb 1, 2015, at 7:45 AM, K. Pruitt <pruittk at roadrunner.com> wrote:
>>>
>>> This is from the rainbow mag and it does print the correct value:
>>>
>>> PROCEDURE filesize
>>> TYPE Registers=CC,A,B,DP:BYTE; X,Y,U:INTEGER
>>> DIM regs:Registers
>>> DIM path,callcode:BYTE
>>> OPEN #path,"test":READ
>>> callcode=$8D
>>> regs.A:=path
>>> regs.B=$02
>>> RUN SysCall(callcode,regs)
>>> CLOSE #path
>>> PRINT USING "'Filesize = $',2(h4)",regs.X; regs.U
>>>
>>> I created a file with a size of 92324 bytes and it prints out the 
>>> correct value of 000168A4.
>>>
>>> I guess the real question now is how do we get this result in to a 
>>> variable.
>>
>> Right. That code there is the example from the SYSCALL source code, 
>> apparently, from the OS-9 Level 1 days.
>>
>> http://www.cocopedia.com/wiki/index.php/SysCall.asm_Level_1 
>> <http://www.cocopedia.com/wiki/index.php/SysCall.asm_Level_1>
>>
>> — A
>>
>>
>>
>
> Well that might work given typical file sizes but for general math, there 
> are still problems. After some testing, it looks like a big problem 
> resides in PRINT USING.
>
> DIM a:INTEGER; b:REAL
> a=$FE
> b=a*16777216.
> PRINT b
> PRINT USING "h8",b
>
> 4.261141286E+09
> 20FE0000
>
> The real product is correct but PRINT USING can't convert to the correct 
> hexadecimal notation. The hex answer is $FE000000.
>
> Robert
>
>


Yeah, you're right regarding general math use.  But as far as sizing files, 
what would you consider as a reasonable maximum to shoot for?



More information about the Coco mailing list