[Coco] More Color Forth
Arthur Flexser
flexser at fiu.edu
Sun Jan 25 15:23:28 EST 2015
Also, I'd suggest determining the start, end, and exec addresses of the
files you are currently saving. That may offer a hint as to where things
are going wrong.
If you have no handy means of doing this, you might try downloading ADOS,
which has a SCAN "filename" command that will return the addresses. (It
can be run from disk, no need to burn an EPROM.)
Art
On Sun, Jan 25, 2015 at 3:08 PM, Stephen Pereira <spereira1952 at comcast.net>
wrote:
> Hi Art,
>
> Thanks very much for your response.
>
> Yes, I know what you are saying. This is probably something that I am not
> understanding as I read the disassembly of the Disk Basic code.
>
> Here is the code I am looking at (I truncated the comments):
>
> 2124 CF7E CC 02 00 LDD #$0200 * FILE TYPE=2, ASCI
> 2125 CF81 FD 09 57 STD DFLTYP *
> 2126 CF84 BD CA 04 JSR LCA04 GET NEXT UNOPEN FIL
> 2127 CF87 4F CLRA *ZERO FLAG - FIRST
> 2128 CF88 8D 2B BSR LCFB5 *WRITE A BYTE TO BU
> 2129 CF8A EC 62 LDD $02,S GET END ADDRESS
> 2130 CF8C A3 64 SUBD $04,S SUBTRACT THE START
> 2131 CF8E C3 00 01 ADDD #$0001 THE SAVED DATA BLOC
> 2132 CF91 1F 02 TFR D,Y SAVE LENGTH IN Y
> 2133 CF93 8D 1E BSR LCFB3 WRITE FILE LENGTH T
> 2134 CF95 EC 64 LDD $04,S GET THE START ADDRE
> 2135 CF97 8D 1A BSR LCFB3 WRITE OUT THE START
> 2136 CF99 AE 64 LDX $04,S GET START ADDRESS
> 2137 CF9B A6 80 LCF9B LDA ,X+ GRAB A BYTE
> 2138 CF9D BD CC 24 JSR LCC24 WRITE IT OUT
> 2139 CFA0 31 3F LEAY -1,Y DECREMENT BYTE COUN
> 2140 CFA2 26 F7 BNE LCF9B BRANCH IF ALL BYTES
> 2141 CFA4 86 FF LDA #$FF FIRST BYTE OF POSTA
> 2142 CFA6 8D 0D BSR LCFB5 WRITE IT OUT - EOF
> 2143 CFA8 4F CLRA * FIRST ARGUMENT OF
> 2144 CFA9 5F CLRB * A DUMMY - ZERO VA
> 2145 CFAA 8D 07 BSR LCFB3 WRITE OUT POSTAMBLE
> 2146 CFAC 35 36 PULS A,B,X,Y GET CONTROL ADDRESS
> 2147 CFAE 8D 03 BSR LCFB3 WRITE OUT THE TRANS
> 2148 CFB0 7E A4 2D JMP LA42D GO CLOSE ALL FILES
>
> Because of my prior experience with the 8080, I am probably not reading
> the code correctly.
>
> In line 2129 when it says LDD $02,S doesn’t that mean to get the address
> 2 bytes down from the top of stack and put them into registers A and B?
>
> In line 2130 when it says SUBD $04,S doesn’t that mean to subtract the
> address 4 bytes down from the top of stack from registers A and B?
>
> In line 2134 when it says LDD $04,S doesn’t that mean to get the address
> 4 bytes down from the top of stack and put them into registers A and B?
>
> In line 2132 I see TFR D,X and in line 2136 I see LDX $04,S, so I thought
> that the code loads the X register on its own.
>
> That is how I am interpreting what I see. If that is not correct, there
> is my problem! This is why I thought that I only have to have the
> addresses on the stack, and I cannot see where I have to have them in other
> registers.
>
> I am not trying to be argumentative - I am only trying to learn by saying
> what I thought I was reading. I greatly appreciate any advice and counsel
> that you may offer.
>
> smp
> --
> Stephen M. Pereira
> Bedford, NH 03110
> KB1SXE
>
> > On Jan 25, 2015, at 2:30 PM, Arthur Flexser <flexser at fiu.edu> wrote:
> >
> > If the description I gave you earlier, based on some old code of mine
> that
> > I unearthed, is right, then what you did isn't quite in accord with it.
> > You need to push all the registers, after loading them with the start,
> end,
> > exec, and address for resuming execution, in a SINGLE pshs operation,
> which
> > will ensure the correct order of what is pushed. Then JMP (not JSR) to
> the
> > savem routine. I'm not sure your final PULS is reached, unless you set
> the
> > resume address to that.
> >
> > Art
> >
> > On Sun, Jan 25, 2015 at 2:01 PM, Stephen Pereira <
> spereira1952 at comcast.net>
> > wrote:
> >
> >> Hello again, all,
> >>
> >> In my continuing Color Forth project, I am attempting to install a brute
> >> force save of the Color Forth code screens to disk. When I am
> eventually
> >> successful, I hope to at least be able to save and load the entire set
> of
> >> Color Forth screens 1-8 to and from disk, so we can be free from
> >> pre-loading only one set of screens 1-8 as it is now.
> >>
> >> I am hoping to use the SAVEM (and LOADM) command from DECB.
> >>
> >> I am a pretty good programmer in 8080 machine language, but I am an
> >> outright beginner on the 6809. Please forgive my non-optimal code for
> >> now. I am only hoping to get something going and then look for doing it
> >> well after I understand it all.
> >>
> >> From my reading of “Disk Basic Unravelled,” I see that one can load the
> >> filename at $094C and the file extension at $0954, then put the start
> >> address, end address and execute address on the stack, and finally call
> >> SAVEM at $CF7E. Yes, I know that is not the official entry point, I am
> >> bypassing the initial code to get the file name and addresses from the
> >> Basic input buffer.
> >>
> >> Here is the snippet of (brute force) code that I wrote:
> >>
> >> PSHS CC,A,B,DP,X,Y,U SAVE ALL JUST IN CASE
> >> LDX #$094C
> >> LDA #$53 S
> >> STA ,X+
> >> LDA #$43 C
> >> STA ,X+
> >> LDA #$52 R
> >> STA ,X+
> >> LDA #$4E N
> >> STA ,X+
> >> LDA #$31 1
> >> STA ,X+
> >> LDA #$54 T
> >> STA ,X+
> >> LDA #$4F O
> >> STA ,X+
> >> LDA #$38 8
> >> STA ,X
> >> LDX #$0954
> >> LDA #$42 B
> >> STA ,X+
> >> LDA #$49 I
> >> STA ,X+
> >> LDA #$4E N
> >> STA ,X
> >> LDD #$2382 START SCR 1
> >> PSHS A,B
> >> LDD #$439F END SCR 8
> >> PSHS A,B
> >> LDD #$0000 EXEC
> >> PSHS A,B
> >> JSR $CF7E SAVEM
> >> PULS U,Y,X,DP,B,A,CC RESTORE ALL
> >>
> >> What I am concerned about is whether or not I am getting the addresses
> >> onto the stack in the right order, and with the correct byte order.
> >>
> >> The reason I’m asking is that this code “kind of works” in my Color
> >> Forth. I do get a file onto disk called SCRN1TO8.BIN, but it is 21
> blocks
> >> long, instead of 4 blocks, like I expected.
> >>
> >> Finally, while my Drivewire UI shows the disk activity start and end, my
> >> code does not return to the command line in Color Forth, so I am also
> >> concerned about that. I see in the “Disk Basic Unravelled” that the
> SAVEM
> >> command dose end with an RTS, so I did expect my code to return.
> >>
> >> Thanks very much, in advance, for any comments or advice you may offer!
> >>
> >> smp
> >> --
> >> Stephen M. Pereira
> >> Bedford, NH 03110
> >> KB1SXE
> >>
> >>
> >>
> >> --
> >> Coco mailing list
> >> Coco at maltedmedia.com
> >> https://pairlist5.pair.net/mailman/listinfo/coco
> >>
> >
> > --
> > Coco mailing list
> > Coco at maltedmedia.com
> > https://pairlist5.pair.net/mailman/listinfo/coco
>
>
> --
> Coco mailing list
> Coco at maltedmedia.com
> https://pairlist5.pair.net/mailman/listinfo/coco
>
More information about the Coco
mailing list