[Coco] OS9 HEX to DECIMAL conversion - Fixed Mail Glitch
coco at jechar.ca
coco at jechar.ca
Mon May 28 08:55:20 EDT 2018
Thanks for the code improvements, I will look them over in a few days,
very busy with gardening now, and try out your version.
P.S. Yes it's shell plus I am using.
Sorry Previous Thanks email ended up in the middle of your code. Fixed
in this message.
On 2018-05-28 08:46, coco at jechar.ca wrote:
> On 2018-05-27 12:05, L. Curtis Boyle wrote:
>> On May 26, 2018, at 6:46 PM, coco at jechar.ca wrote:
>>>
>>> Well I have a version that solves my original problem although
>>> I would like to add a few more features yet.
>>>
>>> […]
>>>
>>> I put this in the file ih_drv.b09 and when I load
>>> it I get an error.
>>>
>>> .b09
>>> ^
>>> Ih_drv
>>> ERROR #110
>>> Ready
>>
>> If you are trying to run it by typing 'BASIC09 lh_drv.b09’, you will
>> get errors like that. You need to pack it (which you mentioned that
>> you have already done), and then run it with either ‘runb lh_drv’ (if
>> you are using the stock SHELL), or just ‘lh_drv’ (if you are running
>> Shellplus). It’s easier to pass parameters with Shellplus as well, as
>> has been mentioned before; you don’t need to surround the parameters
>> in quotes.
>> (If you want to avoid that error when loading BASIC09 source, just
>> launch BASIC09 by itself ‘basic09’, and then LOAD ih_drv.b09 at the B:
>> prompt).
>>
>> I mucked with your code for a bit, and for some strange reason, if I
>> did ON ERROR to trap a parameter error (#56) to check if no parameters
>> were sent, it would go to the routine properly, but when I tried to
>> shut ON ERROR off and then GOTO where you were printing the help
>> message, it would then exit with the error anyways. I changed the help
>> message to be a subroutine instead (both from the error 56 ON ERROR,
>> and from passing it ‘-?’, and now that works (using shellplus). I did
>> try moving PARAM to after the DIM statements (the examples in the
>> BASIC09 manual show this), but that made no difference (and I tried a
>> couple of other things that are still in this listing that follow, but
>> you can clean those up if you wish). I had to change your creating of
>> /dd/sys/cihxofs to use CREATE instead of SHELL “ECHO”; otherwise, you
>> didn’t have a path to the file to write to. I also have it write a
>> default value so it has something to read (you may need to change that
>> value).
>>
>> PROCEDURE Ih_drv
>> DIM hs:STRING
>> DIM drv:INTEGER
>> DIM dno:REAL
>> DIM yh:REAL
>> DIM yl:REAL
>> DIM y:REAL
>> DIM yhi:INTEGER
>> DIM yhp:REAL
>> DIM ylr:REAL
>> DIM yli:INTEGER
>> DIM bfile:STRING[16]
>> DIM cfile:STRING[16]
>> DIM current:STRING[10]
>> DIM fp1:BYTE
>> DIM fp2:BYTE
>> DIM er:INTEGER
>> DIM wpc:STRING
>> DIM ofs:STRING
>> PARAM a:STRING[4];b:STRING[4]
>>
>> 10 ON ERROR GOTO 1000
>> 20 IF a="-?" THEN
>> GOSUB 5000
>> END
>> ENDIF
>> bfile="/dd/SYS/ihbase"
>> ON ERROR GOTO 139
>> OPEN #fp1,bfile:READ
>> PRINT "Alternate Base Extended Offsets"
>> PRINT "To be Supported in Future Versions"
>> GOTO 139
>> REM Untill we suport alternate base offsets.
>> GOTO 200
>> REM If a alternate offset base is loaded skip the standard base.
>> 139 er:=ERR
>> REM Standard Cloud9 CF card offset to HBD Drive 0.
>> yh=VAL("$52")
>> yl=VAL("$DDC")
>> 200 REM
>> PRINT
>> drv=VAL(a)
>> dno=FLOAT(drv)
>> y=yh*4096.0+yl+(dno*630.0)
>> yhi=FIX(((y/4096)-0.5))
>> yhir=FLOAT(yhi)
>> yhp=yhir*4096.0
>> ylr=y-yhp
>> yli=FIX(ylr)
>>
>> cfile="/dd/SYS/cihxofs"
>> ON ERROR GOTO 300
>> OPEN #fp2, cfile:UPDATE
>> GOTO 400
>> 300 er:=ERR
>> REM If it does not exist create it.
>> CREATE #fp2,cfile:UPDATE
>> REM Write a default value if the file is empty.
>> REM Change this if needed.
>> current="0000"
>> WRITE #fp2,current
>> SEEK #fp2,0
>> 400 REM
>> PRINT
>> PRINT USING "S,H3,H3",hs,yhi,yli
>> PRINT #fp2 USING "S,H3,H3",hs,yhi,yli
>> PRINT
>> SEEK #fp2,0
>> READ #fp2,current
>> wpc=MID$(current,2,2)
>> ofs=MID$(current,4,4)
>> PRINT "WPC = ",wpc
>> PRINT "OFS = ",ofs
>> SHELL "dmode /ih wpc="+wpc+" ofs="+ofs
>> PRINT
>> PRINT "/ih setup for drive #",a
>> REM - Future enhancement b= -d SHELL "dir /ih"
>> END
>>
>> 1000 er=ERR
>> ON ERROR
>> PRINT "Error #";er;" trapped"
>> IF er=56 THEN
>> PRINT "At least 1 parameter is required"
>> PRINT " use 'ih_drv -?' for help"
>> GOSUB 5000
>> END
>> ENDIF
>>
>> 5000 PRINT "Ih WPC & Ofs Prameter Calculator"
>> PRINT
>> PRINT "Assumes Drive Zero Offset=$52DDC"
>> PRINT
>> PRINT "SYNTAX:"
>> PRINT "ih_drv -? This help message."
>> PRINT "ih_drv n Where n is a number sets the dmode"
>> PRINT " of /ih for drive number n."
>> PRINT
>> PRINT "(c) CC - GNU"
>> RETURN
>>
>>
>>
>>
>>
>>>
>>> Ignored the error and Packed it anyway and the program
>>> works fine.
>>>
>>> To all who have helped so far Wayne,Curtis,James ect. Thank You
>>> the program is very useful to me.
>>>
>>> However I would like to add 3 features yet more for general benefit
>>> then my own.
>>>
>>> 1. I would like just typing ih_drv to give help just like
>>> ih_drv -?
>>>
>>> 2. I would like ih_drv n -d
>>> to display the directory of drive n by spawning dir or
>>> rsdos as appropriate.
>>>
>>> 3. For me the Hard coded address of drive zero is ok but people
>>> with other IDE systems may not have there drive zero at address
>>> $052DDC as I do. I would like to have the program read it's
>>> drive base address from a file called /dd/SYS/ihbase
>>>
>>> Any suggestions would be appreciated, I have attemped 1. and 2. and
>>> ran into problems.
>>>
>>> Coco mailing list
>>> Coco at maltedmedia.com
>>> https://pairlist5.pair.net/mailman/listinfo/coco
>>>
More information about the Coco
mailing list