Jump to content
IGNORED

XMAS 10 lines XBASIC Games


rocky007

Recommended Posts

some tries of Extended Basic games in only 10 lines ?

 

decro-050.gif

 

10 A$="D2FE9EFBFFBF5B4FF":: B$="66283A7E7E3A2866"&RPT$("0",48) ::  CALL MAGNIFY(4) ::CALL CLEAR::CALL COLOR(4,13,3,2,5,6,12,16,15) :: L=3:: X=16:: Y=1
11 D$=RPT$("3F",5)&RPT$("7F",3)::E$=RPT$("FE",4)&RPT$("FC",4) :: CALL SCREEN(15) ::CALL VCHAR(1,32,132,L+1)::INPUT "LEVEL ( 1 - 10 ) ":T::S=15+T
12 F$="0061637E6467070707070767647E63610086C67E26E6E0E0E0E0E0E6267EC686" ::  CALL CHAR(63,A$,132,B$,128,D$&D$&E$&E$,112,F$)
20 FOR I=2 TO 25:: DISPLAY AT(I-1,1) :RPT$(".",12)&"??"&RPT$("  | ",3)&"??":: IF I<14 THEN CALL SPRITE(#I,128,11,1,1) ELSE IF I<23 THEN CALL SPRITE(#I,112,INT(I-12),1,1,S/2,0)
21 CALL LOCATE(#I,Y,X) :: Y=Y+64:: IF X<128 AND Y<>97 AND Y<>193 THEN Y=Y-32 ELSE IF Y=193 THEN Y=1:: X=X+32:: IF X=112 THEN X=X+17
22 NEXT I:: FOR I=2 TO 13 STEP 8:: CALL MOTION(#I+1,S,0,#I,S,0,#I+3,S,0,#I+2,S,0)::NEXT I:: CALL MOTION(#17,-S,0,#18,-S,0,#19,-S,0,#6,-S,0,#7,-S,0)
23 SC=SC+PT::PT=100::CALL MOTION(#8,-S,0,#9,-S,0):: XX=1::YY=1::CALL SPRITE(#1,132,2,XX,YY) :: D=0:: IF L=0 THEN PRINT "BYE, YOUR SCORE:";SC ::END
81 IF JX<>0 OR JY<>0 THEN CALL POSITION(#1,YY,XX) ::XX=XX+(JX*4) :: YY=YY-(JY*4) :: IF XX>0 AND YY<192 AND YY>0 THEN CALL LOCATE(#1,YY,XX)::CALL SOUND(1,910,0) :: IF XX=225 THEN D=2
84 CALL COINC(ALL,A)  :: PT=PT-1 :: IF A=0 AND (XX=113 OR XX=1) THEN CALL MOTION(#1,0,0) ELSE IF (A=0 AND XX<113) THEN D=D+1
85 P=INT((XX-8)/32)+1 :: IF A=-1 AND P>3 THEN D=D+1 ELSE IF A=-1 AND P>0 AND P<4 THEN IF P=2 THEN MY=-S :: CALL MOTION(#1,MY,0)ELSE MY=S :: CALL MOTION(#1,MY,0)
90 CALL JOYST(1,JX,JY) :: IF D=0 THEN 81 ELSE IF D>0 AND D<3 THEN CALL HCHAR(L,32,32)::L=L-1::CALL SOUND(10,110,0)::GOTO 23 ELSE CALL SOUND(10,2000,0)::GOTO 23 

 

decro-045.gif

1 CALL CHAR(128,"5FDFDFDFDFDFC0FFFFE0E0E0E0E0E07FFAFBFBFBFBFB03FFFF07E7E7E7E707FE"):: CALL MAGNIFY(4):: CALL CLEAR:: CALL SCREEN(2):: FOR I=1 TO 10::CALL COLOR(I,8,2)::NEXT I
2 FOR I=1 to 28 :: CALL SPRITE(#I,128,INT(RND*13)+2,50,50,INT(RND*100)-100,INT(RND*100)-100):: NEXT I :: DISPLAY AT(11,9) : "AMIGA  FORMAT "::DISPLAY AT(12,10) : "PRESS ENTER"
10 ACCEPT AT(1,1):A$::CALL DELSPRITE(ALL) ::DIM NB(24),NP(24), PX(24),PY(24):: FOR X=0 TO 3 :: FOR Y=0 TO 5 :: PX(A)=1+(X*8) :: PY(A)=2+(Y*4) :: A=A+1 :: NEXT Y :: NEXT X :: I=-1
11 CALL CHAR(128,"3F40C0C0C0C0C0C0403F6AD5AAD57F00FC0203030303030302FCAA55AB55FE00")::CALL CHAR(65,"103070FFFF703010FFFFFFFFFFFFFFFF")::CALL CLEAR
30 FOR X=16 TO 246 STEP 64 :: FOR Y=4 TO 192 STEP 32 :: NB(S)=INT(RND*50)::  NP(S)=INT(RND*10)+1 ::S=S+1 ::  CALL SPRITE(#S,128,4,Y,X):: NEXT Y :: NEXT X:: CALL COLOR(5,7,2)
33 IF I=23 THEN I=0 ELSE I=I+1 ::IF NB(I)<>99 THEN IF NB(I)>90 THEN DISPLAY AT( PY(I),PX(I)) SIZE(4) :" BB":: NB(I)=99 :: G=G+1 ELSE DISPLAY AT( PY(I),PX(I)) SIZE(3) :NB(I)  :: NB(I)=NB(I)+NP(I)   
35 CALL HCHAR(CY+4,CX+7,32) :: CALL JOYST(1,XX,YY) :: CX=CX+XX*2::CY=CY-YY :: IF CX<0 OR CX>24 THEN IF CX<0 THEN CX=24 ELSE CX=0 ELSE IF CY<0 OR CY>20 THEN IF CY<0 THEN CY=20 ELSE CY=0
36 CALL KEY(0,K,S):: IF K=32 THEN T=(CY/4)+((CX/8)*6) :: IF NB(T)<79 THEN NB(T)=99::G=G+1::DISPLAY AT( PY(T),PX(T)) SIZE(3) :" BB" ELSE IF NB(T)<99 THEN NB(T)=0::  DISPLAY AT( PY(T),PX(T)) SIZE(3) :NB(T)
38 IF K=32 AND NB(T)=99 THEN CALL SOUND(100,110,0) :: S=S-1 ELSE IF K=32 AND NB(T)=0 THEN CALL SOUND(100,800,0):: S=S+1
40 CALL HCHAR(INT(CY)+4,INT(CX)+7,65) ::  IF G=24 THEN CALL CLEAR :: PRINT "LOOSER ! BUY AN ATARI !!!  YOUR SCORE IS ":: PRINT S;" FORMATTED DISK"  :: END  ELSE 33

decro-042.gif

 

1 DIM Y(48),YY(8):: FOR I=0 TO 10:: Y(I)=(I*16)+1:: Y(20-I)=Y(I)::NEXT I :: CALL MAGNIFY(4) :: CALL CLEAR ::CALL SPRITE(#8,136,5,176,1):: CALL SCREEN(2)
2 CALL CHAR(65,"00000000000000FF1818181818181818FF81FF81FF81FF81"):: FOR I=1 TO 32:: READ A:: CALL VCHAR(3,I,A+60,22)::  NEXT I :: T=0 ::  CALL COLOR(5,10,2)
3 CALL CHAR(132,"1F3E7C7E7F7F7F55555555555555557FF0F87CFCFCFCFC5454545454545454FC"):: FOR I=1 TO 7 :: YY(I)=INT(RND*19):: CALL SPRITE(#I,132,8,Y(YY(I)),I*32-18) :: NEXT I
4 CALL CHAR(136,"1C3E2A367F3E3E22000000000000000000000000000000000000000000000000") :: A=1:: BX=1::BY=176::BK=241::BXBUF=0
5 CALL JOYST(1,JX,JY) :: Z=BX+JX*2 :: IF (JY>0) AND (BX=BK) THEN BY=BY-16 :: BK=242-BK :: CALL SOUND(1,560,10) ELSE IF Z>0 AND Z<242 THEN BX=Z
6 C=INT((BX+23)/32):: TP=Y(YY(C)) ::IF C>0 AND C<8 AND BY>TP-7 AND BY<TP+31 THEN CALL COLOR(5,10,5)::CALL COLOR(5,10,2)::CALL SOUND(1,220,5)::T=T+100
7 IF BX=241 AND BY=16 THEN CALL CLEAR ::PRINT "YOU WIN !!! YOUR TIME :";T ::END  ELSE YY(A)=YY(A)+1  :: IF YY(A)>19 THEN YY(A)=0
8 CALL LOCATE(#A,Y(YY(A)),(A*32)-18) ::  A=A+1 :: IF A>7 THEN A=1 
9 CALL LOCATE(#8,BY,BX):: T=T+1 :: IF BX<>BXBUF THEN CALL SOUND(1,1950,1):: BXBUF=BX ::GOTO 5 ELSE 5
10 DATA 7,7,5,6,5,5,5,6,5,5,5,6,5,5,5,6,5,5,5,6,5,5,5,6,5,5,5,6,5,5,7,7

 

Edited by rocky007
  • Like 12
Link to comment
Share on other sites

4 hours ago, Vorticon said:

Perhaps it's time for another contest?

Question: What is the purpose of the 10 line limit?

Is it to see how much code can be packed into just 10 lines?

Or is it to keep the program small and manageable, thus attracting programmers who don't have the time or inclination to get bogged down in a large project?

If it is the second, I would suggest having a program size limit of 1640 bytes. This is the maximum number of bytes you can fit into 10 lines. Without the 10 line limit programs are easier to write and the code is less convoluted.

 

  • Like 1
  • Haha 1
Link to comment
Share on other sites

having a constraint of 10 lines allows you to optimize your code to the extreme. the logic deployed will be different than with a limitation in byte size
for example it will be necessary to rethink the loops, the routines, the conditional test
but I grant you, the result is often illegible and sometime force you to do a dirty code

 

example, how to do in 1 line  :

 

10 FOR I=1 TO 10

20 IF I=1 THEN PRINT "HELLO"

30 NEXT I

Edited by rocky007
  • Haha 1
Link to comment
Share on other sites

29 minutes ago, senior_falcon said:

Question: What is the purpose of the 10 line limit?

Is it to see how much code can be packed into just 10 lines?

Or is it to keep the program small and manageable, thus attracting programmers who don't have the time or inclination to get bogged down in a large project?

If it is the second, I would suggest having a program size limit of 1640 bytes. This is the maximum number of bytes you can fit into 10 lines. Without the 10 line limit programs are easier to write and the code is less convoluted.

 

It's really a combination of the two. I like that concept of memory size though!

I think I'll launch another competition after everybody has recovered from the Holidays, likely in February. 

  • Like 2
Link to comment
Share on other sites

Reminds me of the competitions we had among students in my programming courses. We would see who could complete an assignment with the least amount of code. I was hanging out in a different class lab one day and the TA saw one of my programs and flipped her lid. I had to explain to her what was happening, show her my actual assignment that I was turning in, then once she calmed down tell her she was not my TA to begin with.

  • Like 1
  • Haha 4
Link to comment
Share on other sites

5 hours ago, rocky007 said:

example, how to do in 1 line  :

 

10 FOR I=1 TO 10

20 IF I=1 THEN PRINT "HELLO"

30 NEXT I

Although technically "illegal", disabling prescan enables XB to execute some naughty programming  ;)

 

100 X=0 :: !@P-
110 FOR X=1 TO 10 :: IF X<>1 THEN NEXT X ELSE PRINT "HELLO" :: NEXT X

 

  • Like 2
Link to comment
Share on other sites

I think if you use RXB2020E you could really make some great 10 line code that does not need 32K to work.

Like using CALL JOYLOCATE

 

Format         CALL JOYLOCATE(key-unit,x-return,y-return,row-index,column-index,#sprite,dot-row,dot-column)

 

                   CALL JOYLOCATE(key-unit,x-return,y-return,row-index,column-index,#sprite,dot-row,dot-column),key-return-variable)

 

                   CALL JOYLOCATE(key-unit,x-return,y-return,row-index,column-index,#sprite,dot-row,dot-column),key-return-variable) GOTO line-number

 

          Description

          JOYLOCATE combines commands JOYST, KEY, LOCATE and a built in IF fire-button GOTO line-number. Keyboard key or fire button
          is in key-return-variable, but only joystick fire or key Q is used for GOTO line-number. As seen above line number 
          option can be left out or furter key-return-variable can be left out too. Index is number of dots for row and column.

 

OR CALL JOYMOTION

 

Format         CALL JOYMOTION(key-unit,x-return,y-return,#sprite,row-index,column-index)

 

                   CALL JOYMOTION(key-unit,x-return,y-return,#sprite,row-index,column-index,key-return-variable)


                   CALL JOYMOTION(key-unit,x-return,y-return,#sprite,row-index,column-index,key-return-variable) GOTO line-number

 

          Description

          JOYMOTION combines commands JOYST, KEY, MOTION and a built in IF fire-button GOTO line-number. Keyboard key or fire button
          is in key-return-variable, but only joystick fire or key Q is used for GOTO line-number. As seen above line number 
          option can be left out or furter key-return-variable can be left out too. Index is number of dots for row and column.

 

OR CALL KEY

 

                 CALL KEY(string,key-unit,return-variable,status-variable) where string could be X$="EeSsDdXx" would be the arrow keys 

                 and would ignore any other keys pressed.

 

These alone would eliminate numerous lines of XB code and no other XB could pull this off or be that fast.

JOYMOTION for example is a CALL JOYST, CALL MOTION, CALL KEY and GOTO all in a single command.

  • Like 2
Link to comment
Share on other sites

1 hour ago, rocky007 said:

yes i know, your RXB is very powerful and perfect for this type of project.

but i wanted to code them on a 1981 stock configuration.    but in case of a new contest, with RXB accepted in rules, i should try !

 

Agreed. It is best to keep it simple. If you allow RXB then you should also allow XB 2.8 G.E.M., XB 2.7, XB 3 and any other flavor of XB that is out there.

Edited by senior_falcon
  • Like 1
Link to comment
Share on other sites

15 hours ago, InsaneMultitasker said:

Although technically "illegal", disabling prescan enables XB to execute some naughty programming  ;)

 

100 X=0 :: !@P-
110 FOR X=1 TO 10 :: IF X<>1 THEN NEXT X ELSE PRINT "HELLO" :: NEXT X

 

Did not know that! What other tricks does disabling prescan allow?

Link to comment
Share on other sites

2 hours ago, rocky007 said:

yes i know, your RXB is very powerful and perfect for this type of project.

but i wanted to code them on a 1981 stock configuration.    but in case of a new contest, with RXB accepted in rules, i should try !

 

With the last contest we allowed all flavors of XB. This time around, I think we'll have 2 categories: TI XB and a separate category for all other flavors of advanced XB. This should keep the playing field level. While we also had TI BASIC in the mix as well, 10 lines is simply too limiting in that environment to allow for very interesting projects and we had few entries, so I'm thinking no to include this category this time around.

  • Like 2
Link to comment
Share on other sites

22 hours ago, rocky007 said:

having a constraint of 10 lines allows you to optimize your code to the extreme. the logic deployed will be different than with a limitation in byte size
for example it will be necessary to rethink the loops, the routines, the conditional test
but I grant you, the result is often illegible and sometime force you to do a dirty code

 

example, how to do in 1 line  :

 

10 FOR I=1 TO 10

20 IF I=1 THEN PRINT "HELLO"

30 NEXT I

This does it in one line, but I would hardly say the code is "optimized".


1 FOR I=1 TO 10 :: PRINT SEG$("HELLO",1,-5*(I=1));:: NEXT I

 

  • Like 2
Link to comment
Share on other sites

1 hour ago, senior_falcon said:

This does it in one line, but I would hardly say the code is "optimized".


1 FOR I=1 TO 10 :: PRINT SEG$("HELLO",1,-5*(I=1));:: NEXT I

 

 

pretty clever..but unfortunaly it doesnt give the same result on your code, you don't have the line return after "HELLO"..?

Link to comment
Share on other sites

5 hours ago, senior_falcon said:

Agreed. It is best to keep it simple. If you allow RXB then you should also allow XB 2.8 G.E.M., XB 2.7, XB 3 and any other flavor of XB that is out there.

Sure, but those are not designed to use Assembly from Console ONLY, but they do have cool features.

You need a command like RXB CALL EXECUTE(RAM-address) in order to do that, as far as I know they all have CALL LINK which requires 32K Lower 8K.

Of course, very little Scratch Pad can be used for Assembly like only first 24 bytes of Scratch Pad along with FAC and ARG area 32 bytes.

Thus 32 bytes from FAC & ARG are new set of Registers are set up with CALL LOADs while 24 bytes are the Assembly program.

My IN THE DARK game used this feature of Assembly support using Scratch Pad and RAM, but using Scratch Pad alone is fine.

Link to comment
Share on other sites

3 hours ago, RXB said:

Of course, very little Scratch Pad can be used for Assembly like only first 24 bytes of Scratch Pad along with FAC and ARG area 32 bytes.

Thus 32 bytes from FAC & ARG are new set of Registers are set up with CALL LOADs while 24 bytes are the Assembly program.

I had my doubts, so I ran this program using RXB2020 in Classic99. This pokes the values 1 to 24 to >8300


10 CALL LOAD(-32000,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24)
20 GOTO 20

Using the debugger I could see that only the first 5 bytes were as expected; the others were different values.Not even Rasmus can write a useful assembly program on the TI using only 5 bytes.

Poking to the FAC at >834A yielded similar results - a couple of bytes were correct, but most were not.

So I cannot see how this would be useful on a TI99 without the memory expansion.

 

Link to comment
Share on other sites

22 minutes ago, senior_falcon said:

I had my doubts, so I ran this program using RXB2020 in Classic99. This pokes the values 1 to 24 to >8300



10 CALL LOAD(-32000,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24)
20 GOTO 20

Using the debugger I could see that only the first 5 bytes were as expected; the others were different values.Not even Rasmus can write a useful assembly program on the TI using only 5 bytes.

Poking to the FAC at >834A yielded similar results - a couple of bytes were correct, but most were not.

So I cannot see how this would be useful on a TI99 without the memory expansion.

 

You have a point as a I have made modification since then from 2020E, 

this is how GPL does CALL EXECUTE(adddress) it does a BLWP @address

***********************************************************
* CPU PROGRAM FOR >8300 SCATCH PAD SUBROUTINE EXECUTE         *
***********************************************************
*              AORG >8300                                                                      *
CPUPGM   DATA >8302 * CPUPGM  DATA  >8302             First address.  *
               DATA >0420 *               BLWP  @>834A         Switch contex  *
               DATA >834A *                                              FAC not used   *
               DATA >04E0 *               CLR  @>837C          Clear for GPL    *
               DATA >837C *                                             Status Reg       *

              DATA >045B *               RT                           Return to GPL.  *
*             END             *              END                                                *
**********************************************************

The new RXB 2021 CALL EXE(address) instead of a BLWP @address does a BL @address

the entire point is to load assembly, and run it, any other line that is executed next will

of course, not be dependable as different commands and tokens trigger different values

in Scratch Pad. This new approach allows for use of XB ROM routines to be used directly

thus, routines like XB SCROLL can be directly called which would be faster than PRINT.

 So yes you are correct if you load Scratch Pad you have to be very careful as to where.

But soon it should be easier to do in RXB 2021.

 

Here is GROM 3 Scratch Pad use:

***********************************************************
*    Temporary workspaces in EDIT
PAD   EQU  >8300            TEMPORARY
PAD1   EQU  >8301            TEMPORARY
PAD2   EQU  >8302            TEMPORARY
ACCUM  EQU  >8302            # OF BYTES ACCUMULATOR (4 BYTE
STPT   EQU  >8302            TWO BYTES
PAD3   EQU  >8303            TEMPORARY
PAD4   EQU  >8304            TEMPORARY
PABPTR EQU  >8304
PAD5   EQU  >8305            TEMPORARY
PAD6   EQU  >8306            TEMPORARY
DFLTLM EQU  >8306            Default array limit (10)
CCPPTR EQU  >8306            OFFSET WITHIN RECORED (1)
RECLEN EQU  >8307            LENGTH OF CURRENT RECORD (1)
PAD7   EQU  >8307            TEMPORARY
CCPADR EQU  >8308            RAM address of current refs
PAD8   EQU  >8308
CCPADD EQU  >8308            RAM address of current color
CALIST EQU  >830A            Call list for resolving refs
RAMPTR EQU  >830A            Pointer for crunching
BYTES  EQU  >830C            BYTE COUNTER
NMPTR  EQU  >830C            Pointer save for pscan
CHSAV  EQU  >830E
CURINC EQU  >830E            Increment for auto-num mode
TOPSTK EQU  >8310            Top of data stack pointer
LINUM  EQU  >8312            Used to determine end of scan
NMLEN  EQU  >8314            Current line for auto-num
CURLIN EQU  >8314            Current line for auto-num
VAR9   EQU  >8316
XFLAG  EQU  >8316            SCAN FLAG-BITS USED AS BELOW
DSRFLG EQU  >8317            INTERNAL =60, EXTERNAL =0 (1)
FORNET EQU  >8317            Nesting level of for/next
AAA1   EQU  >8302
BBB1   EQU  >830C
CCC1   EQU  >8308
***********************************************************
*    Permanent workspace variables
STRSP  EQU  >8318            String space begining
STREND EQU  >831A            String space ending
SREF   EQU  >831C            Temporary string pointer
SMTSRT EQU  >831E            Start of current statement
VARW   EQU  >8320            Screen address
ERRCOD EQU  >8322            Return error code from ALC
STVSPT EQU  >8324            Value-stack base
VARA   EQU  >832A            Ending display location
PGMPTR EQU  >832C            Program text pointer
EXTRAM EQU  >832E            Line number table pointer
STLN   EQU  >8330            Start of line number table
ENLN   EQU  >8332            End of line number table
DATA   EQU  >8334            Data pointer for READ
LNBUF  EQU  >8336            Line table pointer for READ
INTRIN EQU  >8338            Add of intrinsic poly constant
SUBTAB EQU  >833A            Subprogram symbol table
IOSTRT EQU  >833C            PAB list/Start of I/O chain
SYMTAB EQU  >833E            Symbol table pointer
FREPTR EQU  >8340            Free space pointer
CHAT   EQU  >8342            Current charater/token
BASE   EQU  >8343            OPTION BASE value
PRGFLG EQU  >8344            Program/imperative flag
FLAG   EQU  >8345            General 8-bit flag
BUFLEV EQU  >8346            Crunch-buffer destruction leve
LSUBP  EQU  >8348            Last subprogram block on stack
* FAC  EQU  >834A            Floating-point ACcurmulator
FAC1   EQU  FAC+1
FAC2   EQU  FAC+2
FAC3   EQU  FAC+3
FAC4   EQU  FAC+4
FAC5   EQU  FAC+5
FAC6   EQU  FAC+6
FAC7   EQU  FAC+7
FAC8   EQU  FAC+8
FAC9   EQU  FAC+9
FAC10  EQU  FAC+10
FAC11  EQU  FAC+11
FAC12  EQU  FAC+12
FAC13  EQU  FAC+13
FAC14  EQU  FAC+14
FAC15  EQU  FAC+15
FAC16  EQU  FAC+16
FAC17  EQU  FAC+17
AAA    EQU  FAC+2
CCC    EQU  FAC+4
BBB    EQU  FAC+6
DDD    EQU  FAC+2
FFF    EQU  FAC+4
EEE    EQU  FAC+6
DDD1   EQU  FAC+10
FFF1   EQU  FAC+12
EEE1   EQU  FAC+14
* ARG  EQU  >835C             Floating-point ARGument
ARG1   EQU  ARG+1
ARG2   EQU  ARG+2
ARG3   EQU  ARG+3
ARG4   EQU  ARG+4
ARG5   EQU  ARG+5
ARG6   EQU  ARG+6
ARG7   EQU  ARG+7
ARG8   EQU  ARG+8
XSTLN  EQU  >8364            GKXB variable
XENLN  EQU  >8366            GKXB variable
ARG11  EQU  ARG+11
XCURLI EQU  >8368            GKXB variable
XCURIN EQU  >836A            GKXB variable
ARG15  EQU  ARG+15
ARG16  EQU  ARG+16
* VSPTR  EQU  >836E          Value stack pointer
HIVDP  EQU  >8370            Highest VDP Avaliable
EXPZ   EQU  >8376            Exponent in floating-point
RAMTOP EQU  >8384            Highest address in ERAM
RAMFRE EQU  >8386            Free pointer in the ERAM
RSTK   EQU  >8388            Subroutine stack base
RAMFLG EQU  >8389            ERAM flag
STKMIN EQU  >83AF            Base of data stack
STKMAX EQU  >83BD            Top of data stack
PRTNFN EQU  >83CE
***********************************************************

 

 

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