[Coco] Assembly help: Corrupted bin file ?

William Astle lost at l-w.ca
Thu Dec 18 17:28:07 EST 2008


Art Flexser wrote:

> You use multiple ORG statements, but there can be only one exec address for the

> binary file. You've specified two of them in your example. (I'd assume most

> assemblers would replace the first exec address ($2000) when the second ($7000)

> is encountered.) Use just a single END specifier to let the assembler know the

> exec address for the binary.


Actually, a lot of assemblers will stop assembly completely at the first
END statement encountered. Hence the name "END".


>

> Art

>

> On Thu, 18 Dec 2008, Fedor Steeman wrote:

>

>> Thanks Roger.

>>

>> So, how do I code a multi-segment source file in assembly? Do I just use

>> multiple origin statements? Like:

>>

>> ORG $2000

>> START NOP

>> NOP

>> END START

>> ORG $7000

>> STRT2 NOP

>> NOP

>> END STRT2

>>

>> Cheers,

>> Fedor

>>

>> 2008/12/18 Roger Taylor <operator at coco3.com>

>>

>>> At 01:30 AM 12/17/2008, you wrote:

>>>

>>>> Hello everyone,

>>>>

>>>> I am still trying to learn assembly language but keep on running into

>>>> problems.

>>>>

>>>> I have been trying to have the following source code assembled:

>>>>

>>>> VIDRAM EQU $0400 *Start of Video Display location

>>>> V0CLR EQU $FFC0 *Clear bit for Sam Chip (Graphics mode)

>>>> V1SET EQU $FFC3 *Set V1 bit in Sam Chip (Graphics mode)

>>>> V2SET EQU $FFC5 *set V2 bit in Sam Chip (Graphics mode)

>>>> VOFSET EQU $FFC6 *Display Offset Binary, This is the CLR Bit

>>>> (Video page offset)

>>>> VDGSET EQU $FF22 *PIA1 data port B: VDG Control output

>>>> POLCAT EQU $A000 *Color Basic rom poll keyboard routine

>>>>

>>>> ORG $21FD

>>>> LDX #VIDRAM *331D: 8E 04 00

>>>> LDD $AAAA *3320: CC AA AA

>>>> Z3323 STD ,X++ *3323: ED 81

>>>> CMPX #$1C00 *3325: 8C 1C 00

>>>> BCS Z3323 *3328: 25 F9

>>>> NOP *332A: 12

>>>> PMODE4 STA V0CLR *2787: B7 FF C0

>>>> STA V1SET *278A: B7 FF C3

>>>> STA V2SET *278D: B7 FF C5

>>>> LDA #$F8 *2790: 86 F8

>>>> STA VDGSET *2792: B7 FF 22

>>>> STA VOFSET *2795: B7 FF C6

>>>> JSR [POLCAT] *332E: AD 9F A0 00

>>>> RTS *3332:

>>>>

>>>

>>> The source code above is missing two things:

>>> the label of the starting line/address

>>>

>>> try:

>>> EXEC LDX #VIDRAM

>>>

>>> and the LOADM/EXEC finalizer is missing

>>> the last line of the source code should be:

>>>

>>> END EXEC

>>>

>>> Now when you LOADM the program from BASIC, all you have to do is type EXEC

>>> No address is needed as in EXEC #####.

>>> If you just used END without an address, you'd have to type EXEC $21FD from

>>> BASIC to run the program.

>>>

>>>

>>>

>>> --

>>> Roger Taylor

>>>

>>> http://www.wordofthedayonline.com

>>>

>>>

>>> --

>>> Coco mailing list

>>> Coco at maltedmedia.com

>>> http://five.pairlist.net/mailman/listinfo/coco

>>>

>> --

>> Coco mailing list

>> Coco at maltedmedia.com

>> http://five.pairlist.net/mailman/listinfo/coco

>>

>

>

> --

> Coco mailing list

> Coco at maltedmedia.com

> http://five.pairlist.net/mailman/listinfo/coco

>





More information about the Coco mailing list