Jump to content
IGNORED

ACTION! Reference Manual


remowilliams

Recommended Posts

Sorry, my fault. I will look for the missing file in my disk collection and upload it. Wait for a message here ...

 

Carsten

 

I've now added WINDOW.OBJ to the atariwiki page (attachment).

 

I remember using these ASM routines first from Turbo-Basic, them later I wrote the ACTION! interface, but never really used it in any applicaitons. The WINDOW.OBJ has not been written by me, I don't remember the origins.

 

-- CS

  • Like 3
Link to comment
Share on other sites

Very happy at your making an appearance Carsten,

 

Before the complete move, and at times thru abbuc, Carsten almost always had darn near everything and knew of or about it. If he didn't know, he new who did. If that wasn't the case they'd all get together and find out..... I think sometimes it's there somewhere, but not linked or posted. Glad to here from you and see you are still at it!

 

Are you still holding your regional group together?

 

I missed your blog as well...

 

http://strotmann.de/roller/cas/category/Personal last personal 2011 last overall 2013.

 

I still muck about with the usb stuff from time to time.

 

the current blog system is too heavy-weight, I plan to move to a lightweight static page blog system. I do not have much free time, so it is moving slowly. But there will be a new content and a new blog at some point of time.

 

The regional group in Frankfurt is still doing strong, but I now live 300 KM away and have a small kid, so I'm not able to attend their meetings. But I meet with Beetle (Stefan) from time to time and do Atari stuff.

 

Greetings

 

Carsten

  • Like 1
Link to comment
Share on other sites

 

Hi there Carsten!
Thank you very much for this. icon_smile.gif
Now I'm working on new libraries for PL65 and the fact is that ACTION! and PL65 are very similar.
PL65 is very interesting language. IMHO it's some kind of mixture of programming concepts.
For example this code shows us something like FORTH.
PROC POS(INT col=$55 BYTE row=$54)
BEGIN END
I mean that STACK data obtained from arguments goes directly to defined memory cells.
From the other way this code is something like LISP LAMBDA where LAMBDA is the FN definition
and it can exist separately from FN declaration and even be the argument of another function.
PROC WRTSTR(INT addr,len) FORWARD ! Its declaration
...
...
...
BODY WRTSTR ! No needs arguments earlier declared
BEGIN PCHAR(0,addr,len) END ! Its definition
And this is the example when FN is the argument
I mean that argiments of POS from stack directly goes to PLOT without preparing stack for PLOT FN
PROC PLOT(PROC POS) ! Earlier defined...
BEGIN PUT(6,color) END
And this is internal assembly PRIMATIVE(whith star sign) routine.
It means that PL65 take it's hands away from assembly.
It's just standard CIO routine
Differences are that PL65 uses it's own stack with internal STACK operator
and that X-reg MUST be saved in XSAVE variable before using (It serves for PL65 program stack only!)
and after using must be restored
PROC CIO*(BYTE iocb BYTE com INT addr,len)
BEGIN
 LDA STACK+6,X
 ASLA ASLA ASLA ASLA
 TAY 
 LDA STACK+4,X STA ICCOM,Y
 LDA STACK+2,X STA ICBAL,Y
 LDA STACK+3,X STA ICBAH,Y
 LDA STACK,X   STA ICBLL,Y
 LDA STACK+1,X STA ICBLH,Y
 TXA CLC
 ADC #8 STA XSAVE
 TYA TAX 
 LDA OCHAR
 JSR $E456 BMI ioerr
 LDX XSAVE RETURN
:ioerr LDX XSAVE
 DEX DEX TYA
 STA STACK,X
 LDA #0 STA STACK+1,X
 ERROR*()
 WRTSTR("Error ")
 WRITE(ERRNUM)
END
My personal disappointment is that PL65 lacks of TYPE and RECORDS abilities which are exist in ACTION!
Please, don't consider my post as simply offtopic. It's written just for emphasize differences while langs are very similar.
Best wishes, friends!
ez

 

Thanks for giving this information, I'm always interested in programming language concepts.

 

I need to find some time to work with PL65 it seems ;)

  • Like 1
Link to comment
Share on other sites

Many thanks, Carsten!

At first, for your adding WINDOW.OBJ and at second for your kind words. :)

As far as it's concerned PL65, there are another problem there.

PL65 has an ability to work with POINTERS, but due to it's ancient nature we can NOT use address arythmetic like in C.

Really we can but it's very cumbersome and unconvenient.
The nature is in the fact that pointers are only the addresses on Z-page

We can declare pointer and assign it a name like

POINTER AdrP

and values under the pointer must be declared as

BYTE AdrBV BASED AdrP
INT  AdrWV BASED AdrP

Thus, wrighting something like

AdrP+1

means that we just moved its Z-Page address along Z-Page.
It kills all programming of course. No more.

This trick works:
(Here DOT operator means taking address of named earlier entity.)

! PTR.PRG
INCLUDE TERMINAL.LIB

MAIN()
  INT A[5],I
  POINTER P INT B BASED P
BEGIN
  P=.A   B=1
  P=.A+2 B=2
  P=.A+4 B=3

  FOR I=0 TO 2 DO
    WRITE(A[I]) CR()
  NEXT
END

You can see here that I must stay Z-page pointer P intact and need to increment address '.A' (or additional variable holding this address) by two (because of INT) every step.

Thank you again and best wishes from Moscow!
ez

 

 

Link to comment
Share on other sites

Sorry,Sorry,Sorry,Sorry!!!

 

I found now that addressing arythmetics works in PL65. :)

 

This code works!

! PTR.PRG
INCLUDE TERMINAL.LIB

MAIN()
  INT A[6],I
  POINTER P INT B BASED P
BEGIN
  P=.A   B=1
  P=P+2  B=2
  P=P+2  B=3

  FOR I=0 TO 2 DO
    WRITE(A[I]) CR()
  NEXT
END
  • Like 1
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...