Jump to content

Photo

OSS-D-Day part 3-Integer Basic & source code now in PD

OSS Integer Basic source code

50 replies to this topic

#1 luckybuck OFFLINE  

luckybuck

    Stargunner

  • 1,011 posts

Posted Mon Sep 12, 2016 1:49 PM

Hello together,

Today is a very special day, because a long, long search and work around the world with many users is now over with a final good end after decades.

The community now has a never seen before Integer BASIC from OSS and this time with the source code together!

We are very happy about that, because now, just the source code of TurboBasic XL is missing (we are working on that, too), so we can make a final BASIC for the Atari, let's call it: Ultimate BASIC, else Final BASIC?

Further, we can interbreed with other source codes, for example ACTION! for an enhanced editor (scrolling) or the EXTEND command from the source code of BASIC XE to get used of the additional RAM with now up to 4 MB! All this is now possible and to your feet.

Further, please take into account the source code for the Atari Calculator, wich is now in PD, too for the floating point routines plus the ones from Altirra BASIC and BASIC++.

All links to the software can be found here:

https://atariwiki.or...S Integer Basic
https://atariwiki.or...ION source code
https://atariwiki.or...p?page=Basic XE
https://archive.org/...lleenCalculator
https://archive.org/...ngPointRoutines
http://www.virtualdub.org/altirra.html
http://www.xl-projec.../downloads.html

Enjoy and have fun. :-)))

This service was brought to you by Kevin, a good soul (who would like to stay anonymously), JAC!, Tomasz 'KrOtki' Krasuski, a still unknown donator of the hex codes, which enabled us to restore the code, the files and later from that, finally, the cart itself.

For those of you, who may ask about the unknown donator: in the very last picture of the microfilm there was a slide with the following sentence:

After digitizing, destroy everything send to you and there will be more!

I did exactly as ordered, and now we are waiting for more… ;-)

 

 

Call for help: who can create a cart out of the source code? ;-) Thank you very much in advance. :-)

Attached Files


Edited by luckybuck, Thu Sep 15, 2016 4:50 AM.


#2 Savetz OFFLINE  

Savetz

    Stargunner

  • 1,034 posts
  • Location:Portland OR

Posted Mon Sep 12, 2016 2:19 PM

To clarify: this is the OSS Integer BASIC, which was never released. 

 

Kevin



#3 Kr0tki OFFLINE  

Kr0tki

    Stargunner

  • 1,133 posts
  • Location:Warszawa, Poland

Posted Mon Sep 19, 2016 8:34 PM

I've used MAC/65 1.02 to assemble it to cartridge. It requires changing lines 130 and 150 in D1:MASTER, to change both PROM and _CART to 0. Then assemble from disk, which results in a binary file that loads to $3000-$6fff, bank order "3M04". Retrieve this data in an appropriate order to create a ROM image.

So, Integer BASIC appears to contain the same features as BASIC XE, but with integer arithmetic. And it's blazing fast.

Attached Files



#4 luckybuck OFFLINE  

luckybuck

    Stargunner

  • Topic Starter
  • 1,011 posts

Posted Tue Sep 20, 2016 1:47 AM

KrOtki you are wonderful! So great. So many thanky you, the community owe you so much. You really finished the OSS-D-Day, thank you so much.

-> Credits in the Wiki will be made soon. :-)))



#5 luckybuck OFFLINE  

luckybuck

    Stargunner

  • Topic Starter
  • 1,011 posts

Posted Tue Sep 20, 2016 8:34 AM

Hi KrOtki, have uploaded to the Wiki, with all credits to you. This time with the correct name. Sorry again. ;)



#6 Larry OFFLINE  

Larry

    River Patroller

  • 4,089 posts
  • Location:U.S. -- Midwest

Posted Tue Sep 20, 2016 9:49 AM

Visited the site.  And sorry to be dense, but I don't understand the "Master" and "Slave" descriptions.  Can someone provide a brief explanation?

 

Thanks,

Larry

 

A small anecdote.  In the (Analog) Atari 8-bit Extra, there is a program called "Integer Basic" for XL (and XE) computers.  It definitely was faster than regular 8K Basic.  I tried to apply this for Basic XL, but it did not work -- just locked up as I recall.  So I asked Bill Wilkinson if he might be interested in seeing why it would not work with BXL.  He said he was interested, and I sent him the Analog disk, but never did hear anything back from him.  Looks like they had made their own version.



#7 Kr0tki OFFLINE  

Kr0tki

    Stargunner

  • 1,133 posts
  • Location:Warszawa, Poland

Posted Tue Sep 20, 2016 11:29 AM

It requires changing lines 130 and 150 in D1:MASTER, to change both PROM and _CART to 0.

Was I unconscious or what? Of course I meant change PROM to 0 and _CART to 1. Roland, please fix the wiki description as well.

Visited the site.  And sorry to be dense, but I don't understand the "Master" and "Slave" descriptions.  Can someone provide a brief explanation?

The "master" disk contains the file MASTER, ie. the main source file that loads all the other source files during assembly. So you put the master disk in D1:, the slave in D2:, and do assembly of D1:MASTER, which then assembles the whole program.

Master and slave also refer to the two ROM chips in the OSS cartridge, as used in comments to the MAC/65 sources. Very roughly speaking, the master and slave disks contain sources of the master and slave ROM chips, respectively.

#8 luckybuck OFFLINE  

luckybuck

    Stargunner

  • Topic Starter
  • 1,011 posts

Posted Tue Sep 20, 2016 3:08 PM

@KrOtki: Don't worry, have changed it. ;-)

 

@Larry: Bill has left us in November, but I assume, you mean a time in the golden age. ;-) Just try it out, KrOtki has finished the job, so we can find out on ourselfes. :-)))



#9 Larry OFFLINE  

Larry

    River Patroller

  • 4,089 posts
  • Location:U.S. -- Midwest

Posted Wed Sep 21, 2016 2:22 AM

Yes, about 1987.
Larry

#10 MrFish OFFLINE  

MrFish

  • 5,421 posts

Posted Wed Sep 21, 2016 9:37 AM

Free memory isn't reported correctly when no DOS is present. The number does decrease as code is added.

 

It seems to be working when a DOS is present, though.

 

free mem.png


Edited by MrFish, Wed Sep 21, 2016 9:38 AM.


#11 luckybuck OFFLINE  

luckybuck

    Stargunner

  • Topic Starter
  • 1,011 posts

Posted Wed Sep 21, 2016 9:40 AM

Yes, have seen this, too. Well, we really have to investigate all the 4 new carts from OSS. Good start is a look into the source code. Maybe someone can build a new manual with all the advantages?



#12 flashjazzcat OFFLINE  

flashjazzcat

    Quadrunner

  • 14,427 posts
  • Location:United Kingdom

Posted Wed Sep 21, 2016 10:12 AM

Perhaps it has code or data at a fixed address in low RAM, as does TBXL.

#13 Kr0tki OFFLINE  

Kr0tki

    Stargunner

  • 1,133 posts
  • Location:Warszawa, Poland

Posted Wed Sep 21, 2016 11:32 AM

Free memory isn't reported correctly when no DOS is present. The number does decrease as code is added.

Everything is perfectly fine. Integer BASIC is built on 16-bit modulo arithmetic with two's complement representation of negatives. The number you're seeing is negative, because all numbers larger than 32767 are displayed as negative. Add 65536 to get the proper result.

I haven't yet studied the available keywords, but I suppose there should be a keyword built in that switches the display mode of numbers, between non-negative and two's complement. Gotta check that out.

#14 MrFish OFFLINE  

MrFish

  • 5,421 posts

Posted Wed Sep 21, 2016 12:07 PM

Everything is perfectly fine. Integer BASIC is built on 16-bit modulo arithmetic with two's complement representation of negatives. The number you're seeing is negative, because all numbers larger than 32767 are displayed as negative. Add 65536 to get the proper result.

I haven't yet studied the available keywords, but I suppose there should be a keyword built in that switches the display mode of numbers, between non-negative and two's complement. Gotta check that out.

 

Makes sense. Thanks for the info.



#15 MrFish OFFLINE  

MrFish

  • 5,421 posts

Posted Wed Sep 21, 2016 1:25 PM

I haven't yet studied the available keywords, but I suppose there should be a keyword built in that switches the display mode of numbers, between non-negative and two's complement. Gotta check that out.

 

Here's the Statement Name Table. I don't see anything for doing that -- unless there's another part to the statement table. This looks to be complete, at first glance, though.

.

10       .PAGE "STATEMENT NAME TABLE"
20 ;
30 ;STATEMENT NAME TABLE
40 ;
50 SNTAB =   *
60       .WORD :SREM-1
70       .CBYTE "REM"
80 ;
90       .WORD :SDATA-1
0100     .CBYTE "DATA"
0110 ;
0120     .WORD :SINPUT-1
0130     .CBYTE "INPUT"
0140 ;
0150     .WORD :SCOLOR-1
0160     .CBYTE "COLOR"
0170 ;
0180     .WORD :SLIST-1
0190     .CBYTE "LIST"
0200 ;
0210     .WORD :SENTER-1
0220     .CBYTE "ENTER"
0230 ;
0240     .WORD :SLET-1
0250     .CBYTE "LET"
0260 ;
0270     .WORD :SIF-1
0280     .CBYTE "IF"
0290 ;
0300     .WORD :SFOR-1
0310     .CBYTE "FOR"
0320 ;
0330     .WORD :SNEXT-1
0340     .CBYTE "NEXT"
0350 ;
0360     .WORD :SGOTO-1
0370     .CBYTE "GOTO"
0380 ;
0390     .WORD :SGOTO-1
0400     .CBYTE "GO TO"
0410 ;
0420     .WORD :SGOSUB-1
0430     .CBYTE "GOSUB"
0440 ;
0450     .WORD :STRAP-1
0460     .CBYTE "TRAP"
0470 ;
0480     .WORD :SBYE-1
0490     .CBYTE "BYE"
0500 ;
0510     .WORD :SCONT-1
0520     .CBYTE "CONT"
0530 ;
0540     .WORD :SDIM-1
0550     .CBYTE "COM"
0560 ;
0570     .WORD :SCLOSE-1
0580     .CBYTE "CLOSE"
0590 ;
0600     .WORD :SCLR-1
0610     .CBYTE "CLR"
0620 ;
0630     .WORD :SBYE-1
0640     .CBYTE "VBLANKWAIT"
0650 ;
0660     .WORD :SBYE-1
0670     .CBYTE "HITCLR"
0680 ;
0690     .WORD :SBYE-1
0700     .CBYTE "       "
0710 ;
0720     .WORD :SDIM-1
0730     .CBYTE "DIM"
0740 ;
0750     .WORD :SERROR-1
0760     .BYTE $80   ; ATARI END
0770 ;
0780     .WORD :SNEW-1
0790     .CBYTE "NEW"
0800 ;
0810     .WORD :SOPEN-1
0820     .CBYTE "OPEN"
0830 ;
0840     .WORD :SLOAD-1
0850     .CBYTE "LOAD"
0860 ;
0870     .WORD :SSAVE-1
0880     .CBYTE "SAVE"
0890 ;
0900     .WORD :SSTATUS-1
0910     .CBYTE "STATUS"
0920 ;
0930     .WORD :SNOTE-1
0940     .CBYTE "NOTE"
0950 ;
0960     .WORD :SPOINT-1
0970     .CBYTE "POINT"
0980 ;
0990     .WORD :SXIO-1
1000     .CBYTE "XIO"
1010 ;
1020     .WORD :SON-1
1030     .CBYTE "ON"
1040 ;
1050     .WORD :SPOKE-1
1060     .CBYTE "POKE"
1070 ;
1080     .WORD :SPRINT-1
1090     .CBYTE "PRINT"
1100 ;
1110     .WORD :SREAD-1
1120     .CBYTE "READ"
1130 ;
1140     .WORD :SREST-1
1150     .CBYTE "RESTORE"
1160 ;
1170     .WORD :SRET-1
1180     .CBYTE "RETURN"
1190 ;
1200     .WORD :SRUN-1
1210     .CBYTE "RUN"
1220 ;
1230     .WORD :SSTOP-1
1240     .CBYTE "STOP"
1250 ;
1260     .WORD :SPOP-1
1270     .CBYTE "POP"
1280 ;
1290     .WORD :SPRINT-1
1300     .CBYTE "?"
1310 ;
1320     .WORD :SGET-1
1330     .CBYTE "GET"
1340 ;
1350     .WORD :SPUT-1
1360     .CBYTE "PUT"
1370 ;
1380     .WORD :SGR-1
1390     .CBYTE "GRAPHICS"
1400 ;
1410     .WORD :SPLOT-1
1420     .CBYTE "PLOT"
1430 ;
1440     .WORD :SPOS-1
1450     .CBYTE "POSITION"
1460 ;
1470     .WORD :SDOS-1
1480     .CBYTE "DOS"
1490 ;
1500     .WORD :SDRAWTO-1
1510     .CBYTE "DRAWTO"
1520 ;
1530     .WORD :SSETCOLOR-1
1540     .CBYTE "SETCOLOR"
1550 ;
1560     .WORD :SLOCATE-1
1570     .CBYTE "LOCATE"
1580 ;
1590     .WORD :SSOUND-1
1600     .CBYTE "SOUND"
1610 ;
1620     .WORD :SLPRINT-1
1630     .CBYTE "LPRINT"
1640 ;
1650     .WORD :SCSAVE-1
1660     .CBYTE "CSAVE"
1670 ;
1680     .WORD :SCLOAD-1
1690     .CBYTE "CLOAD"
1700 ;
1710 QALET .WORD :SILET-1
1720     .BYTE $80
1730 ;
1740     .WORD :SERROR-1
1750     .CBYTE "ERROR- "
1760 ;
1770     .WORD :SWHILE-1
1780     .CBYTE "WHILE"
1790 ;
1800     .WORD :SENDWHILE-1
1810     .CBYTE "ENDWHILE"
1820 ;
1830     .WORD :SNTRACE-1
1840     .CBYTE "TRACEOFF"
1850 ;
1860     .WORD :STRACE-1
1870     .CBYTE "TRACE"
1880 ;
1890     .WORD :SELSE-1
1900     .CBYTE "ELSE"
1910 ;
1920     .WORD :SENDIF-1
1930     .CBYTE "ENDIF"
1940 ;
1950     .WORD :SPOKE-1
1960     .CBYTE "DPOKE"
1970 ;
1980     .WORD :SLOMEM-1
1990     .CBYTE "LOMEM"
2000 ;
2010     .WORD :SDEL-1
2020     .CBYTE "DEL"
2030 ;
2040     .WORD :SVINC-1
2050     .CBYTE "VINC"
2060 ;
2070     .WORD :SVDEC-1
2080     .CBYTE "VDEC"
2090 ;
2100     .WORD :SVCONST-1
2110     .CBYTE "VCONST"
2120 ;
2130     .WORD :SBPUT-1
2140     .CBYTE "BPUT"
2150 ;
2160     .WORD :SBGET-1
2170     .CBYTE "BGET"
2180 ;
2190     .WORD :STAB-1
2200     .CBYTE "TAB"
2210 ;
2220     .WORD :SDOS-1
2230     .CBYTE "CP"
2240 ;
2250     .WORD :SERASE-1
2260     .CBYTE "ERASE"
2270 ;
2280     .WORD :SLOCK-1
2290     .CBYTE "PROTECT"
2300 ;
2310     .WORD :SUNLOCK-1
2320     .CBYTE "UNPROTECT"
2330 ;
2340     .WORD :SDIR-1
2350     .CBYTE "DIR"
2360 ;
2370     .WORD :SRENAME-1
2380     .CBYTE "RENAME"
2390 ;
2400     .WORD :SMOVE-1
2410     .CBYTE "MOVE"
2420 ;
2430     .WORD :SMISSILE-1
2440     .CBYTE "MISSILE"
2450 ;
2460     .WORD :SPMCLR-1
2470     .CBYTE "PMCLR"
2480 ;
2490     .WORD :SPMCOLOR-1
2500     .CBYTE "PMCOLOR"
2510 ;
2520     .WORD :SPMGR-1
2530     .CBYTE "PMGRAPHICS"
2540 ;
2550     .WORD :SPMMOVE-1
2560     .CBYTE "PMMOVE"
2570 ;
2580     .WORD :SPMWIDTH-1
2590     .CBYTE "PMWIDTH"
2600 ;
2610     .WORD :SPOKE-1
2620     .CBYTE "SET"
2630 ;
2640     .WORD :SLVAR-1
2650     .CBYTE "LVAR"
2660 ;
2670     .WORD :RENS-1
2680     .CBYTE "RENUM"
2690 ;
2700     .WORD :SDOS-1
2710     .CBYTE "FAST"
2720 ;
2730     .WORD :SAUTO-1
2740     .CBYTE "NUM"
2750 ;
2760     .WORD :SEND-1
2770     .CBYTE "END" ; XL END
2780 ;
2790     .WORD :SILET-1
2800     .BYTE 0
2810     ;           END OF TABLE



#16 luckybuck OFFLINE  

luckybuck

    Stargunner

  • Topic Starter
  • 1,011 posts

Posted Wed Sep 21, 2016 1:30 PM

You are on the right track. Did an assembly listing for MAC/65 with all new(!) commands e. g. PHX, PHY... and had printed into a text file and uploaded it on the Wiki. All commands are inside...

So, who is making the new and final manual? :-)))



#17 MrFish OFFLINE  

MrFish

  • 5,421 posts

Posted Wed Sep 21, 2016 1:45 PM

Did an assembly listing for MAC/65 with all new(!) commands e. g. PHX, PHY... and had printed into a text file and uploaded it on the Wiki.

 

I didn't see that on the wiki. Where is it located?



#18 luckybuck OFFLINE  

luckybuck

    Stargunner

  • Topic Starter
  • 1,011 posts

Posted Wed Sep 21, 2016 1:49 PM

https://atariwiki.or....jsp?page=Mac65

 

Manuals

 

MAC_XL_CARTRIDGE_©_1985_Stephen_D._Lawrow.txtattachment_small.png ; size: 660 KB ; text file from a printout of the assembling of the MAC XL...



#19 MrFish OFFLINE  

MrFish

  • 5,421 posts

Posted Wed Sep 21, 2016 1:51 PM

https://atariwiki.or....jsp?page=Mac65

 

Manuals

 

MAC_XL_CARTRIDGE_©_1985_Stephen_D._Lawrow.txtattachment_small.png ; size: 660 KB ; text file from a printout of the assembling of the MAC XL...

 

I misunderstood you. I thought you were saying you did a Mac/65 assembly listing for Integer BASIC already.

 

I get you now. Never mind. :)


Edited by MrFish, Wed Sep 21, 2016 1:55 PM.


#20 MrFish OFFLINE  

MrFish

  • 5,421 posts

Posted Wed Sep 21, 2016 1:53 PM

Here are the Operator and Function tables:

.

10       .PAGE "OPERATOR TABLE"
20 CFPN  =   $0E
30 CSLIT =   $0F
40 ;
50 OPNTAB
60 ?     .= CSLIT+1  ; FIRST ENTRY = 1
70       ;           PAST STRING CONST
80 CCOM  =   ?
90 JCOM  =   ?
0100     .CBYTE ","
0110 ;
0120 ?   .= ?+1
0130 CEOS =  ?
0140 JEOS =  ?
0150     .CBYTE ":"
0160 ;
0170 ?   .= ?+1
0180 CSC =   ?
0190 JSC =   ?
0200     .CBYTE ";"
0210 ;
0220 ?   .= ?+1
0230 CCR =   ?       ; CARRIAGE RETURN
0240 JCR =   ?
0250     .BYTE CR!$80
0260 ;
0270 ?   .= ?+1
0280 CGTO =  ?
0290 JGTO =  ?
0300     .CBYTE "GOTO"
0310 ;
0320 ?   .= ?+1
0330 CGS =   ?
0340 JGS =   ?
0350     .CBYTE "GOSUB"
0360 ;
0370 ?   .= ?+1
0380 CTO =   ?
0390     .CBYTE "TO"
0400 ;
0410 ?   .= ?+1
0420 CSTEP = ?
0430     .CBYTE "STEP"
0440 ;
0450 ?   .= ?+1
0460 CSOE =  ?
0470 JSOE =  ?
0480 CEQ =   ?
0490 CAASN = ?
0500     .CBYTE "="
0510 ;
0520 ?   .= ?+1
0530 CSASN = ?
0540     .CBYTE "="
0550 ;
0560 ?   .= ?+1
0570 CTHEN = ?
0580 JTHEN = ?
0590     .CBYTE "THEN"
0600 ;
0610 ?   .= ?+1
0620 CPND =  ?
0630 JPND =  ?
0640     .CBYTE "#"
0650     .PAGE 
0660     ; 
0670 JSROP = ?+1     START OF REAL OPS
0680 ;
0690 ?   .= ?+1
0700 CBNAND = ?
0710     .CBYTE "^&"
0720 ;
0730 ?   .= ?+1
0740 CBNOR = ?
0750     .CBYTE "^!"
0760 ;
0770 ?   .= ?+1
0780 CBNEOR = ?
0790     .CBYTE "^%"
0800 ;
0810 ?   .= ?+1
0820 CLSR =  ?
0830     .CBYTE ">>"
0840 ;
0850 ?   .= ?+1
0860 CLSL =  ?
0870     .CBYTE "<<"
0880 ;
0890 ?   .= ?+1
0900 CLE =   ?
0910     .CBYTE "<="
0920 ;
0930 ?   .= ?+1
0940 CNE =   ?
0950     .CBYTE "<>"
0960 ;
0970 ?   .= ?+1
0980 CGE =   ?
0990     .CBYTE ">="
1000 ;
1010 ?   .= ?+1
1020 CLT =   ?
1030     .CBYTE "<"
1040 ;
1050 ?   .= ?+1
1060 CGT =   ?
1070     .CBYTE ">"
1080 ;
1090 ?   .= ?+1
1100 CAEQ =  ?
1110     .CBYTE "="
1120 ;
1130 ?   .= ?+1
1140 CMOD =  ?
1150     .CBYTE "\"
1160 ;
1170 ?   .= ?+1
1180 CMUL =  ?
1190     .CBYTE "*"
1200 ;
1210 ?   .= ?+1
1220 CPLUS = ?
1230     .CBYTE "+"
1240 ;
1250 ?   .= ?+1
1260 CMINUS = ?
1270     .CBYTE "-"
1280 ;
1290 ?   .= ?+1
1300 CDIV =  ?
1310     .CBYTE "/"
1320 ;
1330 ?   .= ?+1
1340 CBEOR = ?
1350 JBEOR = ?
1360     .CBYTE "%"
1370 ;
1380 ?   .= ?+1
1390 CNOT =  ?
1400     .CBYTE "NOT"
1410 ;
1420 ?   .= ?+1
1430 COR =   ?
1440 JOR =   ?
1450     .CBYTE "OR"
1460 ;
1470 ?   .= ?+1
1480 CAND =  ?
1490 JAND =  ?
1500     .CBYTE "AND"
1510 ?   .= ?+1
1520 CBOR =  ?
1530 JBOR =  ?
1540     .CBYTE "!"
1550 ?   .= ?+1
1560 CBAND = ?
1570 JBAND = ?
1580     .CBYTE "&"
1590 ;
1600 ?   .= ?+1
1610 CLPRN = ?
1620 JLPRN = ?
1630     .CBYTE "("
1640 ;
1650 ?   .= ?+1
1660 CRPRN = ?
1670 JRPRN = ?
1680     .CBYTE ")"
1690     .PAGE
1700 ;
1710 ;FOLLOWING ENTRIES ARE COMPRISED
1720 ;OF CHARACTERS SIMILAR TO SOME OF
1730 ;THOSE ABOVE BUT HAVE DIFFERENT
1740 ;SYNTACTICAL OR SEMANTIC MEANING.
1750 ;
1760 ?   .= ?+1
1770 CSLE =  ?
1780     .CBYTE "<="
1790 ;
1800 ?   .= ?+1
1810 CSNE =  ?
1820     .CBYTE "<>"
1830 ;
1840 ?   .= ?+1
1850 CSGE =  ?
1860     .CBYTE ">="
1870 ;
1880 ?   .= ?+1
1890 CSLT =  ?
1900     .CBYTE "<"
1910 ;
1920 ?   .= ?+1
1930 CSGT =  ?
1940     .CBYTE ">"
1950 ;
1960 ?   .= ?+1
1970 CSEQ =  ?
1980     .CBYTE "="
1990 ;
2000 ?   .= ?+1
2010 CUPLUS = ?      UNARY +
2020     .CBYTE "+"
2030 ;
2040 ?   .= ?+1
2050 CUMINUS = ?     UNARY -
2060     .CBYTE "-"
2070 ;
2080 ?   .= ?+1
2090 CSLPRN = ?      STRING (
2100 JSLPRN = ?
2110     .CBYTE "("
2120 ;
2130 ?   .= ?+1
2140 CALPRN = ?      ARRARY (
2150 JALPRN = ?
2160     .BYTE $80   DOES NOT PRINT
2170 ?   .= ?+1
2180 CDLPRN = ?      DIM (
2190 JDLPRN = ?
2200     .BYTE $80   DOES NOT PRINT
2210 ;
2220 ?   .= ?+1
2230 CFLPRN = ?      FUNCTION (
2240 JFLPRN = ?
2250     .CBYTE "("
2260 ;
2270 ?   .= ?+1
2280 CDSLPR = ?      STRING DIM (
2290 JDSLPR = ?
2300     .CBYTE "("
2310 ;
2320 ?   .= ?+1
2330 CACOM = ?       ARRAY COMMA
2340 JACOM = ?
2350     .CBYTE ","
2360 ;
2370 ?   .= ?+1
2380 CACSC = ?       ARRAY SEMI-COLON
2390 JACSC = ?
2400     .CBYTE ";"
2410 ;
2420 ;FNTAB - FUNCTION NAME TABLE
2430 ; PART OF ONTAB
2440 ;
2450 ?   .= ?+1
2460 CFFUN = ?       ; 1ST FUNCTION CODE
2470 ;
2480 CLEFT = ?
2490     .CBYTE "LEFT$("
2500 ?   .= ?+1
2510 CRIGHT = ?
2520     .CBYTE "RIGHT$("
2530 ?   .= ?+1
2540 CMID =  ?
2550     .CBYTE "MID$("
2560 ?   .= ?+1
2570 CSTR =  ?
2580     .CBYTE "STR$("
2590 ?   .= ?+1
2600 CCHR =  ?
2610     .CBYTE "CHR$("
2620 ?   .= ?+1
2630 CUSR =  ?       ;USR FUNCTION CODE
2640     .CBYTE "USR("
2650 ?   .= ?+1
2660 CASC =  ?
2670     .CBYTE "ASC("
2680 ?   .= ?+1
2690 CVAL =  ?
2700     .CBYTE "VAL("
2710 ?   .= ?+1
2720 CLEN =  ?
2730     .CBYTE "LEN("
2740 ?   .= ?+1
2750 CADR =  ?
2760     .CBYTE "ADR("
2770 ?   .= ?+1
2780 CBUMP = ?
2790     .CBYTE "BUMP("
2800 ?   .= ?+1
2810 CFIND = ?
2820     .CBYTE "FIND("
2830 ?   .= ?+1
2840 CHEX =  ?
2850     .CBYTE "HEX$("
2860 ?   .= ?+1
2870 CRANDOM = ?
2880     .CBYTE "RANDOM("
2890 ?   .= ?+1
2900 CNFNP = ?
2910     ;           ***
2920 CDPEEK = ?
2930 ?   .= ?+1
2940 CRUN =  ?
2950     .CBYTE "DPEEK(","RUN("
2960 ?   .= ?+1
2970 CCOS =  ?
2980 ?   .= ?+1
2990 CPEEK = ?
3000     .CBYTE "    ","PEEK("
3010 ?   .= ?+1
3020 CSIN =  ?
3030 ?   .= ?+1
3040 CRND =  ?
3050     .CBYTE "    ","RND("
3060 ?   .= ?+1
3070 CFRE =  ?
3080     .CBYTE "FRE("
3090 ?   .= ?+1
3100 CSQR =  ?
3110 ?   .= ?+1
3120 CSGN =  ?
3130     .CBYTE "SQR(","SGN("
3140 ?   .= ?+1
3150 CABS =  ?
3160 ?   .= ?+1
3170 CINT =  ?
3180     .CBYTE "ABS(","INT("
3190 ?   .= ?+1
3200 CSYS =  ?
3210 ?   .= ?+1
3220 CPADDLE = ?
3230     .CBYTE "SYS(","PADDLE("
3240 ?   .= ?+1
3250 CSTICK = ?
3260 ?   .= ?+1
3270 CPTRIG = ?
3280     .CBYTE "STICK(","PTRIG("
3290 ?   .= ?+1
3300 CSTRIG = ?
3310 ?   .= ?+1
3320 CVSTICK = ?
3330     .CBYTE "STRIG(","VSTICK("
3340 ?   .= ?+1
3350 CHSTICK = ?
3360 ?   .= ?+1
3370 CPMADR = ?
3380     .CBYTE "HSTICK(","PMADR("
3390 ?   .= ?+1
3400 CRR =   ?
3410 ?   .= ?+1
3420 CTAB =  ?
3430 ?   .= ?+1
3440 CPEN =  ?
3450     .CBYTE "ERR(","TAB(","PEN(",0
3460 ;



#21 luckybuck OFFLINE  

luckybuck

    Stargunner

  • Topic Starter
  • 1,011 posts

Posted Wed Sep 21, 2016 1:58 PM

Sorry, I understood you wrong, my fault.

 

Cool, if you don't mind, I put both lists on the wiki.

 

Then, just BASIC XE 4.2 is missing :-)

 

Thanks.



#22 MrFish OFFLINE  

MrFish

  • 5,421 posts

Posted Wed Sep 21, 2016 2:49 PM

Cool, if you don't mind, I put both lists on the wiki.

 

I wouldn't put anything on the Wiki just yet. I've already found another file with operator and function tables that contain items not listed in the above (for instance "USING", "CLOG", and "LOG").

 

The above are just the first two files I came across. It'll take a closer inspection to be sure everything's covered properly.


Edited by MrFish, Wed Sep 21, 2016 2:52 PM.


#23 Kr0tki OFFLINE  

Kr0tki

    Stargunner

  • 1,133 posts
  • Location:Warszawa, Poland

Posted Thu Sep 22, 2016 12:33 AM

Here's the Statement Name Table. I don't see anything for doing that -- unless there's another part to the statement table.

I see. Still possible that it's controlled by a particular SET or PRINT USING command.

Here are the Operator and Function tables:

Hmm, makes me wonder, what can the INT() function possibly do? :-)

I wouldn't put anything on the Wiki just yet. I've already found another file with operator and function tables that contain items not listed in the above (for instance "USING", "CLOG", and "LOG").

The above are just the first two files I came across. It'll take a closer inspection to be sure everything's covered properly.

Try building the cartridge with listing enabled, you'll get full source code in one file, without unused parts that may still be left on the disk.

#24 Alfred OFFLINE  

Alfred

    Moonsweeper

  • 499 posts
  • Location:Elmwood, Ontario

Posted Thu Sep 22, 2016 5:02 AM

I've been looking at this to see what size of int is used, and the use of the fp conversion routines all over bothers me. A basic where the largest value is 32767 or even 65535 really isn't very useful.



#25 luckybuck OFFLINE  

luckybuck

    Stargunner

  • Topic Starter
  • 1,011 posts

Posted Thu Sep 22, 2016 9:23 AM

Alfred, I am sorry, but you are wrong here. Take for example the success of Action! Games just have integer lives, normally from 3 to 0 and then game over. There is no need for fp values. But the speed increases very much. If you want to use BASIC scientificly, well then BASIC XE would be best choice with new fp routines, else BASIC++ or Altirra Basic. As I wrote, let's do an Ultimate Basic, where the user can choose: game, science, business mode etc..

 

If you take a look at Pascal, there was something with 32767, too. ;-)







Also tagged with one or more of these keywords: OSS, Integer Basic, source code

0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users