[Coco] Shell+ - SYS/shell.parameters
Bob Devries
devries.bob at gmail.com
Tue Feb 3 22:55:43 EST 2015
Hi all,
A similar discussion came up here a short time ago with regards to the
L3 disks which I put together. On that disk, there was a version of
Cc3Go which was put together by Don Berrie and myself, which used a file
/dd/sys/config.os9.
Here's the source:
nam CC3go
ttl modified to use /dd/SYS/config.sys for shell parameters
* use /dd/defs/os9defs
* Mod 900526 to remove hard coded paths DAB
ifp1
use /dd/defs/os9defs
endc
vers equ $02
mod endmod,name,prgrm+objct,vers,start,endmem
buffer rmb $0200
stack rmb $0100
cfgdat rmb $0050
cfglen rmb 1
endmem equ .
name fcs "CC3go"
edit fcb 6
fcc "Copyright Bob Devries & Don Berrie"
banner fcc " OS-9 LEVEL TWO VR. 02.00.01 COPYRIGHT 1986"
fcb $0D
fcb $0A
fcc " MICROWARE SYSTEMS CORPORATION"
fcb $0D
fcb $0A
fcc " ALL RIGHTS RESERVED"
fcb $0D
fcb $0A
fcb $0A
banend equ *
hddir fcc "/H0"
fcb $0D
hxdir fcc "/H0/"
cmddir fcc "Cmds"
fcb $0D
fcc ",,,,,"
shell fcc "Shell"
fcb $0D
fcc ",,,,,"
autoex fcc "AutoEx"
fcb $0D
fcc ",,,,,"
stadat fcc "STARTUP -P"
fcb $0D
fcc ",,,,,"
shedat fcc "i=/1"
fcb $20
noparm fcb $0D
fcc ",,,,,"
pthend equ *
config fcc "/dd/sys/config.sys"
fcb $0D,$0A
deftim fcb $5A,$01,$01,$00,$00,$00
start leax rti,pcr * point x to interupt vector
os9 f$icpt * set interupt vector
os9 f$id * get proces ID
ldb #$80
os9 f$sprior * set priority to 128
leax banner,pcr * point to copyright banner
ldy #banend-banner * get message length
lda #$01
os9 i$write * and write to stdout
leax deftim,pcr * get default date and time
os9 f$stime * and start the clock with it
leax cmddir,pcr * point x to CMDS dir name
lda #EXEC. * set execute mode
os9 i$chgdir * change directory to it (if possible)
leax hddir,pcr * point to hard drive root dir
lda #UPDAT. * use update mode
os9 i$chgdir * and attempt to chd to it
bcs nohard
leax hxdir,pcr * point to hard drive CMDS dir
lda #EXEC. * use execute mode
os9 i$chgdir * and do a chx to it
nohard pshs u,y * save regs
lda #READ. * setup to read file
leax config,pcr * point x to file name
os9 I$Open * open file
bcs nofile
leax cfgdat,u * point x to single line buffer
ldy #$50 * number of characters to read
os9 I$ReadLn * read file
bcs nofile
sty cfglen,u * store parameter length
os9 I$Close * and then close it
nofile os9 f$id * get process ID (again)
bcs quit * quit if error
leax buffer,u * point x to 512 byte buffer
os9 f$gprdsc * copy process descriptor into it
bcs quit * quit if error
leay buffer,u * point y to buffer
ldx #$0000 * set for block #0
ldb #$01 * only 1 block
os9 f$mapblk * map block into workspace
bcs quit * quit if error
lda #$55 * set warm-start flag byte
sta D.CBStrt,u * store it at warm-start flag
ldd D.SysPrc,u * get system process descriptor address
leau d,u
leau P$DIO,u * point to default IO area
leay $20,y
ldb #$0F * move 15 bytes to local storage
loop lda b,y
sta b,u
decb
bpl loop
leax shell,pcr * point x to 'shell' name
leau stadat,pcr * point u to parameter data
ldd #$0100 * a=typ/lan,b=size of data area
ldy #$0010 * y=size of parameter area
os9 f$fork * fork the shell to run startup file
bcs quit * quit if error
os9 f$wait * wait for startup to finish
leax autoex,pcr * point to 'AutoEx' name
leau noparm,pcr * point to parameter area
ldd #$0100 * a=typ/lan,b=size of data area
ldy #$0001 * y=size of parameter area
os9 f$fork * fork 'AutoEx' if possible
bcs nofork * if AutoEx not found
os9 f$wait * wait for 'AutoEx' to finish
nofork puls u,y * restore regs
leax cfgdat,u * point x to shell parameter area
leay buffer,u * point y to buffer area
ldb cfglen,u * b=length of parameter area
loop2 lda ,x+ * move b bytes from x to y
sta ,y+
decb
bne loop2
leax shell,pcr * point x to 'shell' name
leau cfgdat,u * point to parameter area
ldb cfglen,u * get param area in B
clra * clear msb
tfr d,y * y=size of parameter area
ldd #$0100 * a=typ/lan,b=size of data area
os9 f$chain * chain 'shell' and never return
quit clr $FFA8 * here on some errors set block #0 in task 1
jmp D.Crash * jump to CC warmstart routine
rti rti * interupt routine (does nothing)
emod
endmod equ *
end
It could do with some tweaking, and modifying for /DD instead of /H0.
Regards, Bob Devries
Dalby, QLD, Australia
On 4/02/2015 1:29 PM, Bill Pierce via Coco wrote:
>
> Willard, I just checked, the cc3go mod on RTSI is a patch.
>
>
>
> Bill Pierce
> "Today is a good day... I woke up" - Ritchie Havens
>
>
> My Music from the Tandy/Radio Shack Color Computer 2 & 3
> https://sites.google.com/site/dabarnstudio/
> Co-Contributor, Co-Editor for CocoPedia
> http://www.cocopedia.com/wiki/index.php/Main_Page
> E-Mail: ooogalapasooo at aol.com
>
>
>
>
> -----Original Message-----
> From: Willard Goosey <goosey at virgo.sdc.org>
> To: Allen Huffman <alsplace at pobox.com>; Bill Pierce <ooogalapasooo at aol.com>; CoCoList for Color Computer Enthusiasts <coco at maltedmedia.com>
> Sent: Tue, Feb 3, 2015 10:14 pm
> Subject: Re: [Coco] Shell+ - SYS/shell.parameters
>
>
>
> This cc3go should be on rtsi. I don't remember if source was included.
>
>
> Layer I'll look through my disks and see if I can find the archive.
>
>
>
>
>
>
> Willard
>
> Sent from Samsung tablet
>
>
>
> -------- Original message --------
> From Allen Huffman <alsplace at pobox.com>
> Date: 02/03/2015 7:43 PM (GMT-07:00)
> To Bill Pierce <ooogalapasooo at aol.com>,CoCoList for Color Computer Enthusiasts <coco at maltedmedia.com>
> Subject Re: [Coco] Shell+ - SYS/shell.parameters
>
>
>> On Feb 3, 2015, at 8:23 PM, Bill Pierce via Coco <coco at maltedmedia.com> wrote:
>>
>> I think the only thing that changed from cc3go to sysgo is the "crash" routine addition where it goes to "crash" if something happens. Most of the rest looks about the same though arranged a little diffrent.
>> It might just work.
>
>
> Well, from inspecting the binary of my old cc3go, there is a 0D between the “i=/1” and “SYS/shell.parameters” and “/dd” etc. It was a separate entry, and I do not know how it was used by the binary. “i=/1” is already the command line parameter, I thought.
>
> Curtis, what do you recall? Was SYS/shell.parameters something you guys did? I have my original 1.15 disks, but not 1.16 to see what was on it.
> --
> Allen Huffman - PO Box 22031 - Clive IA 50325 - 515-999-0227 (vmail/TXT only)
> Sub-Etha Software - http://www.subethasoftware.com - Established 1990!
> Sent from my MacBook.
>
> P.S. Since 4/15/14, I have earned OVER $600 in Amazon gift cards via Swagbucks! Use my link and I get credit:
> http://swagbucks.com/refer/allenhuffman
>
>
>
>
>
>
More information about the Coco
mailing list