[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