[Coco] Newbie help: Barden Bubble w/ Portal-9
jimcox at miba51.com
jimcox at miba51.com
Mon Jan 26 17:22:16 EST 2004
I think I better explain how I attempted to create this
program, so you all can better understand how I screwed
up:
1) Entered code from Bardens book directly into new file
on Postal-9 (This is where I think the problem is)
2) After saving the file as bubble.asm, I followed Rogers
directions (the problem is not her)
My mistake is that I thought I could just enter the code
into Portal-9 and run it. Do I need to use CASM? I am
not yet using EDTASM+, so I am not that familiar with it.
I need to read through the "Color Computer Disk System
Owners Manual & Programming Guide" and the EDTASM+ manual,
and reread the Portal-9 Help files. Plus I need to be
less impatient, it's just I am eager to learn assembly.
Jim
On Mon, 26 Jan 2004 15:57:57 -0600
Roger Taylor <rtaylor at bayou.com> wrote:
>Yep, the source below has no ORG, but it needs one. Use
>something between 8192 and 28000 or so, but don't have a
>BASIC program loaded at the same time. It gets more
>technical but you can usually load a ML program at 3584
>and not have any problems at all. This gives you plenty
>of space. Also, the line numbers are not required in
>your source code. In fact, they can be quite bothersome.
> That is the ancient/prehistoric way of doing things and
>has since become an unpopular practice.
>
>
>
>
>
>At 07:13 AM 1/26/2004 -0500, you wrote:
>>jimcox at miba51.com wrote:
>>>Hi all:
>>>I entered the code below into a new file in Portal-9, set
>>>the file to be assembled as a single file, and the type
>>>of system to CoCo2 and MESS came up, but nothing runs.
>>> Any pointers?
>>>00100 * BUBBLE SORT
>>>00110 BUBSRT CLR PASSNO SET PASS # TO 0
>>>00120 BUB010 LDX #$400 POINT TO SCREEN
>>>00130 LDY #0 SET CHANGEFLAG TO 0
>>>00140 BUB020 LDA ,X+ GET FIRST ENTRY
>>>00150 CMPA ,X TEST NEXT
>>>00160 BLS BUB030 GO IF A<=B
>>>00170 LDB ,X GET SECOND ENTRY
>>>00180 STB -1,X SWAP B TO A
>>>00190 STA ,X SWAP A TO B
>>>00200 LDY #1 SET "CHANGE"
>>>00210 BUB030 CMPX #$400+511 TEST FOR SCREEN END
>>>00220 BNE BUB020 GO IF NOT ONE PASS
>>>00230 INC PASSNO INCREMENT PASS #
>>>00240 CMPY #0 TEST CHANGE FLAG
>>>00250 BNE BUB010 GO IF CHANGE OCCURRED
>>>00260 LOOP JMP LOOP LOOP HERE
>>>00270 PASSNO FCB 0 PASS #
>>>00280 END
>>>I think it's something really stupid on my part.
>>>Jim
>>
>>Jim, this is something that I mentioned when this example
>>was first posted. You need to know what a Coco will do
>>when it sees an ml program and is told to execute it.
>>
>>Basic programs load to a default address in memory from
>>which they can safely be run. ML programs do not have a
>>default load address and they can't be safely run
>>anywhere in memory.
>>
>>Basic has a command that reserves memory for ml programs,
>>CLEAR. The syntax is CLEAR n,h where n is the string
>>workspace size and h is the start of memory reserved for
>>machine language programs up to $7FFF.
>>
>>Once you learn more about the Coco's memory usage, you
>>will see that CLEAR is just a starting point. There are
>>several areas of memory that are usually safe for ml
>>program use without explicitly reserving them.
>>
>>Back to your sort program. Since the source code contains
>>no ORG (origin) address, the program will load at $0000.
>>This will crash Basic every time. You MUST either do an
>>offset load to a safe (ie. free ) block of memory or
>>include an ORG statement in the source.
>>
>>Since the source code does not contain an explicit
>>starting address, even if you did an offset load Basic
>>would execute address $0000 and crash. Either the source
>>code or the loading procedure must indicate where
>>execution should start.
>>
>>You can use the EDTASM+ (and I think CCASM) syntax by
>>adding as the first statement
>> ORG $7000
>>which is typically a good spot for a program. Then change
>>the END
>>statement to read
>> END BUBSRT
>>which will tell EDTASM+ to attach a header and trailer to
>>the program that
>>tells Basic to load the program at $7000 and execute
>>starting at $7000. Then the program will run with
>>LOADM"SORT":EXEC
>>
>>If you don't want to change the program or your
>>editor/compiler does not attach the header/trailer, the
>>syntax for running such a program must be
>>LOADM "SORT",&H7000:EXEC&H7000; pick your own address.
>>
>>Once the program has been compiled, it is possible to add
>>the headers if you know the length of the program. The
>>syntax would be
>>LOADM "SORT",&H7000:SAVEM "SORT",&H7000,&Hnnmm,&H7000
>>where nnmm is known to be the end of the program.
>>
>>All of this information and more is contained within the
>>"Color Computer Disk System Owners Manual & Programming
>>Guide" by Tandy.
>>
>>
>>
>>--
>>Coco mailing list
>>Coco at maltedmedia.com
>>http://five.pairlist.net/mailman/listinfo/coco
>
>
>----------
>Roger Taylor
>
>
>
>
>--
>Coco mailing list
>Coco at maltedmedia.com
>http://five.pairlist.net/mailman/listinfo/coco
More information about the Coco
mailing list