Jump to content
IGNORED

Action! interrupts


slx

Recommended Posts

Some time ago I wrote a machine-language VBI routine implementing a more accurate clock which my son has been using as an alarm clock with his own BASIC or Action! frontends ever since. As he has now asked me to make the OBJ file "loadable" from Action! I remembered some articles on interrupts in Action! and re-wrote the whole VBI clock in Action!

 

The various articles on interrupts I found on Atari Wiki have left me with some questions.

  • Peter Finzel shows an example of a VBI where he saves the 6502 registers which IMHO is not required for VBIs as the OS VBI handler takes care of it.
  • David Plotkin emphasizes the need to save the Action! internal math registers so they don't get overwritten during the interrupt but his program only does that for the VBI but not for the DLI (where there'd precious little time for it anyway)
  • This article states that you can't use division, multiplication and subroutines in interrupts.

Am I right in assuming that multiplication and division as well as subroutines are safe if you use David Plotkin's save/restore routines for the math registers?

 

I used a subroutine call (without parameters) and a MOD within the VBI and don't see any negative effects on the main program (which only adds and subtracts so far). Just luck?

 

Why would I save 6502 registers for a VBI (unless not using system VBI routines at all which might be a bit steep for Action!)?

 

Same project, but not interrupt related:

 

I tried to use

IF YEAR & $03 = 0 AND CEN & $03 = 0 THEN

but get an Error 23 - illegal conditional expression. I assumed this to be caused by Action! not differentiating between & as a bit-wise and logical operator and tried to use a single condition for the IF:

IF YEAR & $03 = 0

That results in the same error.

 

Is there any workaround or do I need to use something like

TEMP = YEAR & $03
IF TEMP=0 THEN 

Thanks!

P.S.: I seem to enjoy Action! a lot more these days than I did in the 1980s.Those FUNCs, PROCs and POINTERs overtaxed my BASIC-coddled teenage mind....
Edited by slx
  • Like 1
Link to comment
Share on other sites

I know myself in action! not so good.

 

IF YEAR & $03 = 0 AND CEN & $03 = 0 THEN

IF ((YEAR & $03) = 0) AND ((CEN & $03) = 0) THEN ???

 

IF YEAR & $03 = 0

IF (YEAR & $03) = 0 ???

 

TEMP = YEAR & $03

TEMP = (YEAR & $03) ???

 

 

gruss.

 

I thought I had tried that but obviously it was something different as this worked:

IF (YEAR & $03) = 0 AND (CEN & $03) = 0 THEN

Thanks!

Link to comment
Share on other sites

I only play with the Fastbasic on the ATARI 800 (MISTFPGA).



The action is too opaque to the program flow of the XEX.

One can only guess where variables etc are stored and have no precise overview in the program how and where to put the ACTIONS program to play synonymous with the times the COMPY-RAM, which indeed uses the memory of & 4000- & 7000.

It also hooks up with the PM, if I have the GRModus 23.

In text mode, they work.


That's why I've looked at the Fastbasic and am fully satisfied with my experiments.

Since I master the basic commands well, it's my "compiler"

It is almost as fast as the ACTION and can also be inline code

put in there.

It's worth taking a look and testing this time.



Thank you.

Greeting

Edited by funkheld
Link to comment
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.
Note: Your post will require moderator approval before it will be visible.

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...