[comp.sys.m6809] RSDOS <=-> OS9

kato@potpourri.UUCP (Carlos Santiago) (07/15/87)

-> 
-> There are a number of ways to facilitate copying files between RSDOS
-> and OS9. The best way (in the level I era) was Rich Hogg's Xcopy (sold
-> by uncle Frank). For those that didn't have Xcopy, Sandy Trevor (a
-> color computer enthusiast, who coincidentally is a CompuServe V.P.)
-> wrote a little RS BASIC program that makes an RS-DOS disk readable to
-> either RS-DOS or OS9. It's called DOSOR9.BAS. If there is a suitable
-> amount of interest, I will post it to the net (with Sandy's
-> permission).
-> 

I have been unable to transfer files from 0s9 to rsdos. I would
like to see the source for thes programs posted on the net.

-> The best I have seen in the overall is a package called Xcom9. It's
-> written in asm (lots of source) and is small (<6k), fast, and
-> reliable. It has xmodem protocol, as well as straigh ascii file
-> capture, etc. I use it all the time (and I do mean *all*). If you're
-> interested in transferring files to/from CompuServe, they have a
-> semi-proprietary protocol called the 'B' protocol. There's a package
-> called Smod8 (also PD) that uses 'B', which is far superior to Xmodem
-> when tossing stuff back and forth over Telenet or Tymnet. Oh... the
-> ASM source is for 6809/os9. The B protocol package is all in C.
-> 
-> 
Where can I get the source other than compuserve? Can it be posted
on the net?
-- 
                  Gould, CSD, Home of the Firebreathers 
                    The opinions expressed are my own.
                   ...siesmo!gould!csantiago
                   ...mcnc!rti-sel!gould!potpourri!kato

jonh@tekgen.TEK.COM (Jon Howell) (07/16/87)

In article <464@potpourri.UUCP> kato@potpourri.UUCP (Carlos Santiago) writes:
>-> wrote a little RS BASIC program that makes an RS-DOS disk readable to
>-> either RS-DOS or OS9.

This program does the same.  I don't know it's original name (I got it as
RS-OS9.BAS) or who wrote it.

>I have been unable to transfer files from 0s9 to rsdos. I would
>like to see the source for thes programs posted on the net.

wish granted.  (Tho--I don't KNOW that this goes os-9 ==> rsdos.. never tried
it going that direction.  Unfortunately, I kinda doubt it.)

>-> The best I have seen in the overall is a package called Xcom9. It's
>-> written in asm (lots of source) and is small (<6k), fast, and
>-> reliable. It has xmodem protocol, as well as straigh ascii file
>-> capture, etc. I use it all the time (and I do mean *all*). If you're
>-> interested in transferring files to/from CompuServe, they have a
>-> semi-proprietary protocol called the 'B' protocol. There's a package
>-> called Smod8 (also PD) that uses 'B', which is far superior to Xmodem
>-> when tossing stuff back and forth over Telenet or Tymnet. Oh... the
>-> ASM source is for 6809/os9. The B protocol package is all in C.
>Where can I get the source other than compuserve? Can it be posted
>on the net?
Yea, me too, please...


NOTE: Make sure you strip linefeeds on the save!  Otherwise, BASIC might
choke.  I guess the doc's are pretty much the REM statements.
save as--->RS-OS9.BAS.  (You should load and resave in compressed format)
------------Snip,------Snip,---------Snip.-------------------------
1 '**************************
2 '      RS2OS9/BAS         *
3 '  Makes CoCo DOS disks   *
4 '  readable by OS9!       *
5 '**************************
6 '
7 ' Important restrictions:
8 '
9 ' Track 0 must be unused.
10 ' Only the first 12 files
11 ' will appear in OS9 Dir.
12 ' Subsequent disk writes by
13 ' either OS will obsolete
14 ' the other directory!
15 '
16 GOTO109
17 PRINT:PRINT"Put CoCo DOS disk in any drive.":PRINT
18 INPUT"Enter drive # when ready";DV
19 DSKI$ DV,17,1,F1$,F2$
20 IF LEFT$(F1$,32)<>STRING$(32,255)THEN PRINT"Not a CoCo DOS disk!":GOTO17
21 DSKI$ DV,17,2,F1$,F2$
22 IF LEFT$(F1$,2)<>STRING$(2,255)THEN PRINT"Track 0 is already allocated!":GOTO17
23 'Write ID sector (LSN=0)
24 N=19:GOSUB90
25 DATA 0,2,76,12,0,4F,0,1
26 'Inhibit OS9 writes
27 DATA 0,0,2,0,0,ED,44,97
28 DATA 2,0,12
29 S1$=A$+STRING$(13,0)+"DOS OR "+CHR$(&HB9)+STRING$(88,0)
30 DSKO$ DV,0,1,S1$,STRING$(128,0)
31 PRINT"ID Sector written."
32 'Write allocation map (LSN=1)
33 DSKO$ DV,0,2,STRING$(128,255),STRING$(128,255)
34 PRINT"Allocation Map written."
35 'ROOT directory file descriptor
36 N=21:GOSUB90
37 ' Read only
38 DATA 89,0,0,53,A,16,17,21
39 DATA 2,0,0,1,C0,53,A,16
40 DATA 0,0,3,0,2
41 S1$=A$+STRING$(107,0)
42 DSKO$ DV,0,3,S1$,STRING$(128,0)
43 '16 Dir entries in LSN=3-4
44 'File descriptors go in LSN 5-17
45 DE=0:S1$="."+CHR$(&HAE)+STRING$(29,0)+CHR$(2)+CHR$(&HAE)+STRING$(30,0)+CHR$(2):S2$="":' Init Dir entry #
46 FOR DZ=0TO1
47 FOR D9=0TO7
48 IF(DZ=0)AND(D9<2)THEN57
49 GOSUB92:' Get a Dir entry
50 IF DE=-1 THEN 58
51 P=INSTR(1,D$," "):IF(P<2)OR(P>8)THEN P=9
52 A$=LEFT$(D$,P-1)+".":P=INSTR(9,D$," "):IF(P<9)OR(P>11)THEN P=12
53 A$=A$+MID$(D$,9,P-9)
54 MID$(A$,LEN(A$),1)=CHR$(ASC(RIGHT$(A$,1))+128)
55 A$=A$+STRING$(31-LEN(A$),0)+CHR$(D9+3+DZ*8)
56 IF D9<4 THEN S1$=S1$+A$ ELSE S2$=S2$+A$
57 NEXT D9
58 S1$=S1$+STRING$(128-LEN(S1$),0):S2$=S2$+STRING$(128-LEN(S2$),0)
59 DSKO$ DV,0,DZ+4,S1$,S2$:S1$="":S2$="":NEXT DZ
60 'Write file descriptors LSN 5-17
61 DE=0:S1$="":S2$="":PRINT"Files included:"
62 N=16:GOSUB90:' Init file des header
63 DATA 9,0,0,0,0,0,0,0
64 DATA 1,0,0,0,0,0,0,0
65 FH$=A$
66 FOR L=5TO17
67 GOSUB92:IF DE=-1THEN 87
68 PRINT LEFT$(D$,11)
69 LN=0:' File length
70 S1$=FH$:' Set file hdr
71 NG=ASC(MID$(F1$,SG+1,1)):' Read FAT entry
72 'Calc LSN from gran
73 TR=INT(SG/2):IF TR>16 THEN TR=TR+1
74 SC=9*(SG AND 1)+1
75 LSN=TR*18+SC-1
76 NUM=LSN:NS=3:GOSUB103
77 S1$=S1$+N$+CHR$(0)+CHR$(9)
78 IF LEN(S1$)>250 THEN PRINT"Too fragmented!":STOP
79 SG=NG:IF NG<68THEN LN=LN+2304:GOTO 71
80 'Found last gran
81 LN=LN+256*((NG AND 15)-1)+256*ASC(MID$(D$,15,1))+ASC(MID$(D$,16,1))
82 NUM=LN:NS=4:GOSUB103
83 MID$(S1$,10,4)=N$:' Update file length
84 S1$=S1$+STRING$(128-LEN(S1$),0)
85 DSKO$ DV,0,L+1,S1$,STRING$(128,0)
86 NEXT L
87 'Directory done
88 PRINT:PRINT"Disk ready for OS9!":PRINT
89 END
90 'Read N bytes of hex data into A$
91 A$="":FOR I=1TON:READ R$:A$=A$+CHR$(VAL("&H"+R$)):NEXT:RETURN
92 'Read dir entry into D$
93 ' DE is Dir entry index outputs starting gran in SG
94 ' SG = starting gran
95 IF DE<0 THEN RETURN
96 DS=INT(DE/8):DR=DE-DS*8
97 IF DR=0 THEN DSKI$ DV,17,DS+3,T1$,T2$
98 IF DR<4 THEN D$=MID$(T1$,DR*32+1,32) ELSE D$=MID$(T2$,DR*32-127,32)
99 IF DE<72 THEN DE=DE+1 ELSE DE=-1
100 IF ASC(D$)=255 THEN DE=-1
101 IF ASC(D$)=0 THEN 95
102 SG=ASC(MID$(D$,14,1)):RETURN
103 'Binary string output
104 'Output binary value of NUM in NS bytes in string N$
105 N$="":FOR I=1TO NS
106 N$=CHR$(NUM AND 255)+N$
107 NUM=INT(NUM/256)
108 NEXT I:RETURN
109 PCLEAR 1:CLS:CLEAR 2000:GOTO17
-- 
___ __ ,  __  __   _   ,   , __  ,   , ___ __
 |  |_ |  |_ /    / \  |\ /| |_\ |   |  |  |_  |  -- It's good for your
 |  |_ |_ |_ \__  \_/  | V | |    \_/   |  |_  *     health!

tds@ojibwa.UUCP (07/21/87)

/* Written 11:13 pm  Jul 15, 1987 by tekgen.UUCP!jonh in ojibwa:comp.sys.m6809 */
In article <464@potpourri.UUCP> kato@potpourri.UUCP (Carlos Santiago) writes:
>-> wrote a little RS BASIC program that makes an RS-DOS disk readable to
>-> either RS-DOS or OS9.

This program does the same.  I don't know it's original name (I got it as
RS-OS9.BAS) or who wrote it.

>I have been unable to transfer files from 0s9 to rsdos. I would
>like to see the source for thes programs posted on the net.

wish granted.  (Tho--I don't KNOW that this goes os-9 ==> rsdos.. never tried
it going that direction.  Unfortunately, I kinda doubt it.)

>-> The best I have seen in the overall is a package called Xcom9. It's
>-> written in asm (lots of source) and is small (<6k), fast, and
>-> reliable. It has xmodem protocol, as well as straigh ascii file
>-> capture, etc. I use it all the time (and I do mean *all*). If you're
>-> interested in transferring files to/from CompuServe, they have a
>-> semi-proprietary protocol called the 'B' protocol. There's a package
>-> called Smod8 (also PD) that uses 'B', which is far superior to Xmodem
>-> when tossing stuff back and forth over Telenet or Tymnet. Oh... the
>-> ASM source is for 6809/os9. The B protocol package is all in C.
>Where can I get the source other than compuserve? Can it be posted
>on the net?
Yea, me too, please...


NOTE: Make sure you strip linefeeds on the save!  Otherwise, BASIC might
choke.  I guess the doc's are pretty much the REM statements.
save as--->RS-OS9.BAS.  (You should load and resave in compressed format)
------------Snip,------Snip,---------Snip.-------------------------
1 '**************************
2 '      RS2OS9/BAS         *
3 '  Makes CoCo DOS disks   *
4 '  readable by OS9!       *
5 '**************************
6 '
7 ' Important restrictions:
8 '
9 ' Track 0 must be unused.
10 ' Only the first 12 files
11 ' will appear in OS9 Dir.
12 ' Subsequent disk writes by
13 ' either OS will obsolete
14 ' the other directory!
15 '
16 GOTO109
17 PRINT:PRINT"Put CoCo DOS disk in any drive.":PRINT
18 INPUT"Enter drive # when ready";DV
19 DSKI$ DV,17,1,F1$,F2$
20 IF LEFT$(F1$,32)<>STRING$(32,255)THEN PRINT"Not a CoCo DOS disk!":GOTO17
21 DSKI$ DV,17,2,F1$,F2$
22 IF LEFT$(F1$,2)<>STRING$(2,255)THEN PRINT"Track 0 is already allocated!":GOTO17
23 'Write ID sector (LSN=0)
24 N=19:GOSUB90
25 DATA 0,2,76,12,0,4F,0,1
26 'Inhibit OS9 writes
27 DATA 0,0,2,0,0,ED,44,97
28 DATA 2,0,12
29 S1$=A$+STRING$(13,0)+"DOS OR "+CHR$(&HB9)+STRING$(88,0)
30 DSKO$ DV,0,1,S1$,STRING$(128,0)
31 PRINT"ID Sector written."
32 'Write allocation map (LSN=1)
33 DSKO$ DV,0,2,STRING$(128,255),STRING$(128,255)
34 PRINT"Allocation Map written."
35 'ROOT directory file descriptor
36 N=21:GOSUB90
37 ' Read only
38 DATA 89,0,0,53,A,16,17,21
39 DATA 2,0,0,1,C0,53,A,16
40 DATA 0,0,3,0,2
41 S1$=A$+STRING$(107,0)
42 DSKO$ DV,0,3,S1$,STRING$(128,0)
43 '16 Dir entries in LSN=3-4
44 'File descriptors go in LSN 5-17
45 DE=0:S1$="."+CHR$(&HAE)+STRING$(29,0)+CHR$(2)+CHR$(&HAE)+STRING$(30,0)+CHR$(2):S2$="":' Init Dir entry #
46 FOR DZ=0TO1
47 FOR D9=0TO7
48 IF(DZ=0)AND(D9<2)THEN57
49 GOSUB92:' Get a Dir entry
50 IF DE=-1 THEN 58
51 P=INSTR(1,D$," "):IF(P<2)OR(P>8)THEN P=9
52 A$=LEFT$(D$,P-1)+".":P=INSTR(9,D$," "):IF(P<9)OR(P>11)THEN P=12
53 A$=A$+MID$(D$,9,P-9)
54 MID$(A$,LEN(A$),1)=CHR$(ASC(RIGHT$(A$,1))+128)
55 A$=A$+STRING$(31-LEN(A$),0)+CHR$(D9+3+DZ*8)
56 IF D9<4 THEN S1$=S1$+A$ ELSE S2$=S2$+A$
57 NEXT D9
58 S1$=S1$+STRING$(128-LEN(S1$),0):S2$=S2$+STRING$(128-LEN(S2$),0)
59 DSKO$ DV,0,DZ+4,S1$,S2$:S1$="":S2$="":NEXT DZ
60 'Write file descriptors LSN 5-17
61 DE=0:S1$="":S2$="":PRINT"Files included:"
62 N=16:GOSUB90:' Init file des header
63 DATA 9,0,0,0,0,0,0,0
64 DATA 1,0,0,0,0,0,0,0
65 FH$=A$
66 FOR L=5TO17
67 GOSUB92:IF DE=-1THEN 87
68 PRINT LEFT$(D$,11)
69 LN=0:' File length
70 S1$=FH$:' Set file hdr
71 NG=ASC(MID$(F1$,SG+1,1)):' Read FAT entry
72 'Calc LSN from gran
73 TR=INT(SG/2):IF TR>16 THEN TR=TR+1
74 SC=9*(SG AND 1)+1
75 LSN=TR*18+SC-1
76 NUM=LSN:NS=3:GOSUB103
77 S1$=S1$+N$+CHR$(0)+CHR$(9)
78 IF LEN(S1$)>250 THEN PRINT"Too fragmented!":STOP
79 SG=NG:IF NG<68THEN LN=LN+2304:GOTO 71
80 'Found last gran
81 LN=LN+256*((NG AND 15)-1)+256*ASC(MID$(D$,15,1))+ASC(MID$(D$,16,1))
82 NUM=LN:NS=4:GOSUB103
83 MID$(S1$,10,4)=N$:' Update file length
84 S1$=S1$+STRING$(128-LEN(S1$),0)
85 DSKO$ DV,0,L+1,S1$,STRING$(128,0)
86 NEXT L
87 'Directory done
88 PRINT:PRINT"Disk ready for OS9!":PRINT
89 END
90 'Read N bytes of hex data into A$
91 A$="":FOR I=1TON:READ R$:A$=A$+CHR$(VAL("&H"+R$)):NEXT:RETURN
92 'Read dir entry into D$
93 ' DE is Dir entry index outputs starting gran in SG
94 ' SG = starting gran
95 IF DE<0 THEN RETURN
96 DS=INT(DE/8):DR=DE-DS*8
97 IF DR=0 THEN DSKI$ DV,17,DS+3,T1$,T2$
98 IF DR<4 THEN D$=MID$(T1$,DR*32+1,32) ELSE D$=MID$(T2$,DR*32-127,32)
99 IF DE<72 THEN DE=DE+1 ELSE DE=-1
100 IF ASC(D$)=255 THEN DE=-1
101 IF ASC(D$)=0 THEN 95
102 SG=ASC(MID$(D$,14,1)):RETURN
103 'Binary string output
104 'Output binary value of NUM in NS bytes in string N$
105 N$="":FOR I=1TO NS
106 N$=CHR$(NUM AND 255)+N$
107 NUM=INT(NUM/256)
108 NEXT I:RETURN
109 PCLEAR 1:CLS:CLEAR 2000:GOTO17
-- 
___ __ ,  __  __   _   ,   , __  ,   , ___ __
 |  |_ |  |_ /    / \  |\ /| |_\ |   |  |  |_  |  -- It's good for your
 |  |_ |_ |_ \__  \_/  | V | |    \_/   |  |_  *     health!
/* End of text from ojibwa:comp.sys.m6809 */