Jump to content
matthew180

Assembly on the 99/4A

Recommended Posts

Lots of good advice above. More generically:

 

- you now know that the bug is caused by something that is initialized by loading via editor assembler that is NOT initialized from your program directly

- you have verified that the VDP registers do not appear to be that something

 

The most likely other cause remains the EA Utilities not existing in low RAM, but we can see that your program counter (PC) is still up in high memory. Look at the running disassembly - does it look like your program is running or is it off in hyperspace? ;) Breakpoint (F1) and make sure that the code you see looks familiar.

 

If your program is running, then you can assume the screen corruption is not caused by a software crash - that leaves only video memory not being initialized as expected. So as noted above - check that your VDP tables contain the expected data.

 

Don't overlook Home Automation's comment about the first instruction of your program. When you use EA#3, you start at a label which can be anywhere in the program. When you use EA#5, the first byte loaded is the first executed statement (SFIRST and SLOAD are the same), so if you have any BSS or DATA at the beginning, just insert a "B @start" (or whatever label) before them.

 

  • Like 3

Share this post


Link to post
Share on other sites
6 hours ago, Asmusr said:

You need to check if the name table at >0000 and the pattern table at >2000 contain the expected data.

The name table is fine on EA5 without a system reset.

 

EA5_Running_Before_Reset.png

 

 

After the reset it seems blank?

 

 

EA5_Running_After_Reset.png

 

 

 

Here's the pattern table at >2000 after system reset...

 

EA5_VDP2000_After_Reset.png

 

This part seems alright.

Share this post


Link to post
Share on other sites
2 hours ago, Tursi said:

does it look like your program is running or is it off in hyperspace? ;) Breakpoint (F1) and make sure that the code you see looks familiar.

 

If your program is running, then you can assume the screen corruption is not caused by a software crash - that leaves only video memory not being initialized as expected. So as noted above - check that your VDP tables contain the expected data.

 

 

After using (F1) I took this snapshot of the code running which appears to be familiar as this code involves moving one my enemy vehicles:

1370473752_EA5_Code_Running_After_Reset.thumb.png.9756f5192fe473eac04b9f61d7cbaabb.png

 

@Tursi, the program appears to be running yet I cannot see the playfield due to the (screen) name table being all blanks?

Share this post


Link to post
Share on other sites
3 hours ago, Tursi said:

Don't overlook Home Automation's comment about the first instruction of your program. When you use EA#3, you start at a label which can be anywhere in the program. When you use EA#5, the first byte loaded is the first executed statement (SFIRST and SLOAD are the same), so if you have any BSS or DATA at the beginning, just insert a "B @start" (or whatever label) before them.

@HOME AUTOMATION has been very helpful so no, I will not overlook his comments. Welcoming any and all comments at this point! 

 

As you say, I do indeed have code starting at the (newly renamed) label SFIRST. As mentioned earlier this label name works with the EA SAVE routine, E/A manual, 24.5, p.420.

 

Before SFIRST I have multiple EQU, DATA, and BYTE's in order to set things up. I'll try inserting "B @SFIRST" as the very first line like so:

 

 

 

EA5_Homeauto_Tip.thumb.png.064d45707ce2b7cd155ea72b85102c28.png

 

EDIT: Adding this first line of code did not change the situation with the (screen) name table at >0000 reading all blank character >20s, after a system reset and EA5 option selected.

  • Like 1

Share this post


Link to post
Share on other sites

EQUates and other directives can occur in your source code before SLOAD and SFIRST. It is the first assembled word that must be labeled SLOAD (and usually also, SFIRST). In your scenario, whatever word has the address >A000 after assembly should be labelled SLOAD and SFIRST—oh—and, of course, be executable:

       AORG >A000
       DEF SFIRST,SLOAD,SLAST
       VDPRD EQU >8800
*      ...
SFIRST
SLOAD  B    @START
       DATA ...
       BSS  ...
*      ...
START  LIMI 0
*      ...
SLAST  END
       

 

...lee

Edited by Lee Stewart
further explanation...
  • Like 1

Share this post


Link to post
Share on other sites
1 hour ago, Lee Stewart said:

In your scenario, whatever word has the address >A000 after assembly should be labelled SLOAD and SFIRST:

       AORG >A000
       DEF SFIRST,SLOAD,SLAST
       VDPRD EQU >8800
*      ...
SFIRST
SLOAD  B    @START
       DATA ...
       BSS  ...
*      ...
START  LIMI 0
*      ...
SLAST  END

That worked! After a system reset that file works under EA5! Onward to see if I can get Fred Kaal's  utility Module Creator 2.0 to make me a .bin for the FlashGROM99.

 

Edit:  YES! The resulting EA3-to-EA5 conversion resulted in three files (ENKA,ENKB,ENKC) which fed into Fred Kaal's Module Creator 2.0 properly!

 

I have a working cartridge binary!!! Yes!

 

Who knew seeing your own title appear as option #2 on the TI Boot/Menu screen would be so exciting?  

 

Grateful for: @HOME AUTOMATION, @Lee Stewart, @Tursi, @apersson850, @senior_falcon, @PeteE, @Asmusr, @mizapf, @GDMike. Great team effort guys! THANK YOU!!

  • Like 6

Share this post


Link to post
Share on other sites

There you go! And yeah, that first cartridge is always fun. ;)

 

  • Like 4

Share this post


Link to post
Share on other sites

This game has been a dream of mine for a couple of years now, and I've been fortunate enough to see it progress as it's been developed.  I'll tick another item off my Bucket List when I finally put the final version on my FG99.  ENK! 👍

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...