senior_falcon Posted July 28, 2017 Author Share Posted July 28, 2017 No different from any other CALL LINK. You can speed it up using the methods discussed in post #1. This should actually have been under a different thread - something like "Assembly subprograms and SAMS" Quote Link to comment Share on other sites More sharing options...
+Lee Stewart Posted July 28, 2017 Share Posted July 28, 2017 What about my suggestion in post #9. (Perhaps you were waiting for me to locate the thread—so far an unsuccessful quest.) ...lee Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted July 28, 2017 Author Share Posted July 28, 2017 I remember a discussion about passing arrays but cannot remember about it. Quote Link to comment Share on other sites More sharing options...
+Lee Stewart Posted July 28, 2017 Share Posted July 28, 2017 Right now, I cannot find the thread where we discussed passing long lists of numbers in various ways. I wrote a variation on the theme where I passed an array, which allowed pretty much as long a list as we desired. I think I even avoided NUMASG in the process. That would make CALL LINK faster, no? What about my suggestion in post #9. (Perhaps you were waiting for me to locate the thread—so far an unsuccessful quest.) | I remember a discussion about passing arrays but cannot remember about it. I found it. It is in the last two posts of TI MiniMemory programs. I passed a number and an array to an ALC routine and processed the array without using the helper functions NUMASG, NUMREF, etc. I don't know how useful it would be in the present circumstance, but there it is. ...lee Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted July 29, 2017 Author Share Posted July 29, 2017 It will take some thought before this sinks in. I will print it out and study it for a while. Quote Link to comment Share on other sites More sharing options...
RXB Posted July 29, 2017 Share Posted July 29, 2017 As a GPL programmer for XB and I know the CALL PEEK, CALL LOAD and CALL LINK GPL code inside out I can tell you the major problem is passing values. Look you have a number in XB that is in the XB program stored in Upper 24K RAM, but it is pushed into VDP RAM, then pushed onto VDP STACK, then converted from Floating Point to Integer all in VDP RAM and FAC/ARG Fast RAM. This happens for every single number passed to Assembly using PEEK, LINK or LOAD. I have on numerous occasions posted the code on CALL PEEK, CALL LOAD and CALL LINK that all share same code and procedures to pass values to or from Assembly. When I wrote and released my game IN THE DARK I saw that the big issue was CALL LOAD was the major slow down, not RXB routine CALL EXECUTE(address) I can see a new version of CALL PEEK and CALL LOAD is needed, and that would open up a better version of CALL LINK, CALL LOAD and CALL PEEK. I guess IPEEK (Integer PEEK), ILOAD(Integer LOAD), and ILINK(Integer LINK) would benefit XB as they would like RXB CALL EXECUTE all be integer only. Quote Link to comment Share on other sites More sharing options...
+InsaneMultitasker Posted July 29, 2017 Share Posted July 29, 2017 I guess IPEEK (Integer PEEK), ILOAD(Integer LOAD), and ILINK(Integer LINK) would benefit XB as they would like RXB CALL EXECUTE all be integer only. Your integer call idea rouses my curiosity regarding Advanced BASIC - I wonder if floating point is still used or if those calls were converted to integer only. I will have to take a look. How would you implement integers since the variables and numeric constants are stored as floats? Quote Link to comment Share on other sites More sharing options...
RXB Posted July 29, 2017 Share Posted July 29, 2017 Your integer call idea rouses my curiosity regarding Advanced BASIC - I wonder if floating point is still used or if those calls were converted to integer only. I will have to take a look. How would you implement integers since the variables and numeric constants are stored as floats? Every single number is stored in Floating Point in Basic and XB, a major sticking point to both is TI used nothing but Floating point. I have pointed out the stupidity of this many times as you only need a random number for screen like 24 or 32 for row and column at max, or even sprites 265 or 192 for row and column. XB should only use Integers unless Floating Point is needed, but instead everything is Floating Point and thus slows all actions using numbers to a crawl. A better approach is using only Integers words hex >8000 = -32768 to hex >7FFF = 32767 This would speed up XB or Basic considerably as a word beats the hell out of conversion of a Floating Point 8 bytes to represent ONE (1) i.e. >0001 vs >10000000 (16 bits) Quote Link to comment Share on other sites More sharing options...
+InsaneMultitasker Posted July 29, 2017 Share Posted July 29, 2017 Every single number is stored in Floating Point in Basic and XB, a major sticking point to both is TI used nothing but Floating point. I have pointed out the stupidity of this many times as you only need a random number for screen like 24 or 32 for row and column at max, or even sprites 265 or 192 for row and column. XB should only use Integers unless Floating Point is needed, but instead everything is Floating Point and thus slows all actions using numbers to a crawl. A better approach is using only Integers words hex >8000 = -32768 to hex >7FFF = 32767 This would speed up XB or Basic considerably as a word beats the hell out of conversion of a Floating Point 8 bytes to represent ONE (1) i.e. >0001 vs >10000000 (16 bits) Yep, I think most would agree floating point sucks for all the integer operations. What I was getting at is in post #31 you mentioned IPEEK, ILOAD, etc. and I thought you were adding those new calls to RXB, I guess I misread that? If you are adding these new calls, then my question is how would you add integer support to make this happen? Quote Link to comment Share on other sites More sharing options...
RXB Posted July 30, 2017 Share Posted July 30, 2017 Yep, I think most would agree floating point sucks for all the integer operations. What I was getting at is in post #31 you mentioned IPEEK, ILOAD, etc. and I thought you were adding those new calls to RXB, I guess I misread that? If you are adding these new calls, then my question is how would you add integer support to make this happen? Sorry I was not clear. Yes I can add these to RXB but this requires a major rewrite of XB to pull it off. I mean every single number is stored in Floating Point so I would have to add Assembly in ROMs along with GPL changes to repair this issue. See IPEEK, ILOAD and ILINK would be slightly faster but that is not the problem, all numbers are Floating Point and that is a huge issue in all XB programs not just those using PEEK, LOAD and LINK. So in summary I need to rewrite RXB from scratch including the XB ROMs, and asking for assistance at Fest West got me no offers at all. I am getting a real attitude of screw it as no one seems to care. Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted July 30, 2017 Author Share Posted July 30, 2017 @ Rich: Do subs such as HCHAR(1,1,42,768) take the numbers 1,1,42,768 and convert them to floating point, then to integer? If so, this seems like a place where some speed could be gained simply by going directly to integer. Quote Link to comment Share on other sites More sharing options...
RXB Posted July 30, 2017 Share Posted July 30, 2017 (edited) @ Rich: Do subs such as HCHAR(1,1,42,768) take the numbers 1,1,42,768 and convert them to floating point, then to integer? If so, this seems like a place where some speed could be gained simply by going directly to integer. Well here is the XB GPL code from RXB 2001 the least modified code I have presently to show for HCHAR and VCHAR: <0252> *********************************************************** <0253> * SUBPROGRAM FOR 'HCHAR' <0254> *********************************************************** <0255> AB03 06,AC,D6 HCHAR CALL HVCHR Get X, Y values character, # <0256> AB06 8F,4A DCZ @FAC If 0 characters <0257> AB08 6B,12 BS HCHAR2 <0258> AB0A 08,E0,00 HCHAR1 BYTE >08,>E0,>00,>FB * FMT '@VAR0' Display horizo AB0D FB <0259> AB0E 93,4A DDEC @FAC Done yet? <0260> AB10 4B,0A BR HCHAR1 No, finish it <0261> * RXB PATCH CODE <0262> AB12 D6,42,B3 HCHAR2 CEQ COMMAZ,@CHAT <0263> AB15 6B,03 BS HCHAR <0264> AB17 BC,7F,02 XPTRTN ST @MNUM,@XPT Restore X-pointer 99/4 GPL-ASSEMBLER (Pass 3) correct PAGE 0036 EQUATES EXEC-359 <0265> AB1A 0F,7E LNKRTN XML SPEED Must be at <0266> AB1C 00 BYTE SYNCHK * a right <0267> AB1D B6 BYTE RPARZ * parenthesis <0268> AB1E 06,6A,78 LNKRT2 CALL CHKEND Check end of statement <0269> AB21 4D,BA BR ERRSYN If not end-of-stmt , error <0270> AB23 06,00,12 CALL RETURN Return to caller <0271> *********************************************************** <0272> * SUBPROGRAM FOR 'VCHAR' <0273> *********************************************************** <0274> AB26 06,AC,D6 VCHAR CALL HVCHR Get X, Y values character, # <0275> AB29 8F,4A DCZ @FAC If 0 characters <0276> AB2B 6B,3F BS VCHAR2 <0277> AB2D 08,E0,00 VCHAR1 BYTE >08,>E0,>00,>9E,>FB * FMT '@VAR0',>31 Display v AB30 9E,FB <0278> AB32 93,4A DDEC @FAC Done yet? <0279> AB34 6B,3F BS VCHAR2 Yes, return <0280> AB36 8E,7E CZ @YPT If not at start of colunm <0281> AB38 4B,2D BR VCHAR1 <0282> AB3A 90,7F INC @XPT Move X-ptr to right one colun <0283> AB3C 05,AB,2D B VCHAR1 <0284> * RXB PATCH CODE <0285> AB3F D6,42,B3 VCHAR2 CEQ COMMAZ,@CHAT <0286> AB42 6B,26 BS VCHAR <0287> AB44 4B,17 BR XPTRTN <0288> *********************************************************** Now to include some of the subprograms it calls: <0120> ACD6 06,AC,A9 HVCHR CALL GPHV Get X, Y VALUES <0121> ACD9 0F,74 XML PARSE <0122> ACDB B6 BYTE RPARZ <0123> ACDC 06,A9,95 CALL INTARG <0124> ACDF A2,4B,60 ADD OFFSET,@FAC1 <0125> ACE2 BC,00,4B ST @FAC1,@VAR0 SAVE THE CHARACTER <0126> ACE5 BF,4A,00 DST 1,@FAC ASSUME 1 CHARACTER ACE8 01 <0127> ACE9 D6,42,B6 CEQ RPARZ,@CHAT If not right parenthesis <0128> ACEC 6C,F8 BS GAC95 <0129> ACEE 0F,7E XML SPEED Must be <0130> ACF0 00 BYTE SYNCHK * at a <0131> ACF1 B3 BYTE COMMAZ * comma <0132> ACF2 0F,74 XML PARSE # OF CHARACTERS <0133> ACF4 B6 BYTE RPARZ <0134> ACF5 06,A9,95 CALL INTARG FLOATING TO INTEGER <0135> ACF8 00 GAC95 RTN Edited July 30, 2017 by RXB Quote Link to comment Share on other sites More sharing options...
RXB Posted July 30, 2017 Share Posted July 30, 2017 (edited) And more subroutines: <0090> *********************************************************** <0091> * SUBROUTINE TO GET ROW, COLUMN VALUES <0092> *********************************************************** <0093> * RXB PATCH CODE <0094> ACA9 06,AC,89 GPHV CALL LPAR Insure '(', parse, insure ',' <0095> * RXB PATCH CODE <0096> ACAC 0F,7E GPHVRC XML SPEED Insure in range <0097> ACAE 02 BYTE RANGE * of 1 - 24 <0098> ACAF 01 BYTE 1 <0099> ACB0 00,18 DATA 24 <0100> ACB2 92,4B DEC @FAC1 Adjust to internal range <0101> ACB4 BC,02,7F ST @XPT,@MNUM <0102> ACB7 BC,7E,4B ST @FAC1,@YPT Set row pointer <0103> ACBA 0F,7E XML SPEED Get column value <0104> ACBC 01 BYTE PARCOM * and insure a comma <0105> ACBD 0F,7E XML SPEED Insure in range <0106> ACBF 02 BYTE RANGE * of 1 to 32 <0107> ACC0 01 BYTE 1 <0108> ACC1 00,20 DATA 32 <0109> ACC3 92,4B DEC @FAC1 Internal range: 0 - 31 <0110> ACC5 BC,7F,4B ST @FAC1,@XPT Set column pointer <0111> ACC8 00 RTN And it goes on: <0058> *********************************************************** <0059> * EXTENDED STRING PACKAGE <0060> * THE ROUTINES ARE: <0061> * LITS05 - Move a string literal from the program to the <0062> * string space <0063> * INTARG - Checks that an argument is a numeric and 99/4 GPL-ASSEMBLER (Pass 3) correct PAGE 0019 EQUATES EXEC-359 <0064> * converts it from floating point to an integer <0065> * PUSSTR - Checks that an argument is a string and pushes <0066> * it on the stack <0067> * CONCAT - Concatenates 2 strings together <0068> * SEG$ - Segments a string <0069> * LEN - Puts the length of a string in the FAC <0070> * CHR$ - Converts an integer into its ASCII character <0071> * STR$ - Converts a number into its string equivalent <0072> * VAL - Converts a string into its numeric equivalent <0073> * POS - Gives the position of one string within another <0074> * RPT$ - Generates a single string with multiple copies <0075> * of the original string <0076> * <0077> * AN ENTRY IN THE FAC LOOKS LIKE: <0078> * +------------+-----+----+-------------+-----------------+ <0079> * |addr of ptr | >65 | xx | addr of str | length of str | <0080> * +------------+-----+----+-------------+-----------------+ <0081> * FAC FAC2 FAC3 FAC4 FAC6 <0082> *********************************************************** And on: <0060> *********************************************************** <0061> * INTARG - Insures that the value in FAC is a numeric, <0062> * converts it to integer, issues error message if <0063> * necessary or returns. <0064> *********************************************************** <0065> A995 C6,4C,63 INTARG CH >63,@FAC2 If string - error <0066> A998 6D,BE BS ERRSNM <0067> A99A 86,54 CLR @FAC10 ASSUME NO ERROR OR WARNING <0068> A99C 87,6C DCLR @FPERAD <0069> A99E 0F,12 XML FLTINT <0070> A9A0 8E,54 CZ @FAC10 If error <0071> A9A2 4D,EE BR ERRBV <0072> A9A4 D2,4A,00 CGE 0,@FAC Can't be < zero <0073> A9A7 4D,EE BR ERRBV <0074> A9A9 00 RTN And yea XB used Floating Point even when it started with a simple number like 12 and 29...insane huh? Edited July 30, 2017 by RXB Quote Link to comment Share on other sites More sharing options...
apersson850 Posted July 30, 2017 Share Posted July 30, 2017 That's one of many reasons for why I used Pascal almost always, instead of Extended BASIC. Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted July 31, 2017 Author Share Posted July 31, 2017 I found it. It is in the last two posts of TI MiniMemory programs. I passed a number and an array to an ALC routine and processed the array without using the helper functions NUMASG, NUMREF, etc. I don't know how useful it would be in the present circumstance, but there it is. So far I have been unable to understand what is happening in your program. I will study some more... One interesting thing that I have found is this: NUMREF and CFI don't take that much time in the grand scheme of things: A loop with CALL LINK("HCHAR",1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16) that does nothing but return to XB takes .1376 seconds per loop. Subtracting the time for one loop and CALL LINK and then dividing by 16 gives .0072 seconds per number for CALL LINK to set it up ready for reading but not to actually read it. It takes .0086 seconds to read the number with NUMREF and then do a CFI. So the actual NUMREF and CFI only takes about .0014 seconds per number. I found this out when I tried bypassing NUMREF by having the assembly program directly read the numbers following HCHAR. When I found the speed increase to be very small, I wondered why and then hit upon the idea of reading them from a following REM statement. 1 Quote Link to comment Share on other sites More sharing options...
RXB Posted July 31, 2017 Share Posted July 31, 2017 That's one of many reasons for why I used Pascal almost always, instead of Extended BASIC. Texas Instruments is a CALCULATOR manufacture company and this 100% explains the goofy reason why Floating Point is used for everything despite it being horrid for integer only applications. Quote Link to comment Share on other sites More sharing options...
RXB Posted July 31, 2017 Share Posted July 31, 2017 (edited) So far I have been unable to understand what is happening in your program. I will study some more... One interesting thing that I have found is this: NUMREF and CFI don't take that much time in the grand scheme of things: A loop with CALL LINK("HCHAR",1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16) that does nothing but return to XB takes .1376 seconds per loop. Subtracting the time for one loop and CALL LINK and then dividing by 16 gives .0072 seconds per number for CALL LINK to set it up ready for reading but not to actually read it. It takes .0086 seconds to read the number with NUMREF and then do a CFI. So the actual NUMREF and CFI only takes about .0014 seconds per number. I found this out when I tried bypassing NUMREF by having the assembly program directly read the numbers following HCHAR. When I found the speed increase to be very small, I wondered why and then hit upon the idea of reading them from a following REM statement. Yea good idea as why the hell convert to FP when the number is in integer in the REM statement. The solution may be in RXB to just scan for . (Period) or Exponent or size limits in the Editor when program is entered. IF number has period THEN FP IF number has Exponent THEN FP IF number is larger then 32767 OR LESS THAN -32768 THAN FP The solution is the TOKEN flag for all numbers: <0296> *********************************************************** <0297> * BASIC TOKEN TABLE <0298> * EQU >80 spare token <0299> 0081 ELSEZ EQU >81 ELSE <0300> 0082 SSEPZ EQU >82 :: <0301> 0083 TREMZ EQU >83 $ <0302> 0084 IFZ EQU >84 IF <0303> 0085 GOZ EQU >85 GO <0304> 0086 GOTOZ EQU >86 GOTO <0305> 0087 GOSUBZ EQU >87 GOSUB <0306> 0088 RETURZ EQU >88 RETURN <0307> 0089 DEFZ EQU >89 DEF <0308> 008A DIMZ EQU >8A DIM <0309> 008B ENDZ EQU >8B END <0310> 008C FORZ EQU >8C FOR <0311> 008D LETZ EQU >8D LET <0312> 008E BREAKZ EQU >8E BREAK <0313> 008F UNBREZ EQU >8F UNBREAK <0314> 0090 TRACEZ EQU >90 TRACE <0315> 0091 UNTRAZ EQU >91 UNTRACE <0316> 0092 INPUTZ EQU >92 INPUT <0317> 0093 DATAZ EQU >93 DATA <0318> 0094 RESTOZ EQU >94 RESTORE 99/4 GPL-ASSEMBLER (Pass 3) correct PAGE 0006 EQUATES EDIT-359 <0319> 0095 RANDOZ EQU >95 RANDOMIZE <0320> 0096 NEXTZ EQU >96 NEXT <0321> 0097 READZ EQU >97 READ <0322> 0098 STOPZ EQU >98 STOP <0323> 0099 DELETZ EQU >99 DELETE <0324> 009A REMZ EQU >9A REM <0325> 009B ONZ EQU >9B ON <0326> 009C PRINTZ EQU >9C PRINT <0327> 009D CALLZ EQU >9D CALL <0328> 009E OPTIOZ EQU >9E OPTION <0329> 009F OPENZ EQU >9F OPEN <0330> 00A0 CLOSEZ EQU >A0 CLOSE <0331> 00A1 SUBZ EQU >A1 SUB <0332> 00A2 DISPLZ EQU >A2 DISPLAY <0333> 00A3 IMAGEZ EQU >A3 IMAGE <0334> 00A4 ACCEPZ EQU >A4 ACCEPT <0335> 00A5 ERRORZ EQU >A5 ERROR <0336> 00A6 WARNZ EQU >A6 WARNING <0337> 00A7 SUBXTZ EQU >A7 SUBEXIT <0338> 00A8 SUBNDZ EQU >A8 SUBEND <0339> 00A9 RUNZ EQU >A9 RUN <0340> 00AA LINPUZ EQU >AA LINPUT <0341> * EQU >AB Zpare token (LIBRARY) <0342> * EQU >AC Zpare token (REAL) <0343> * EQU >AD Zpare token (INTEGER) <0344> * EQU >AE Zpare token (SCRATCH) <0345> * EQU >AF Zpare token <0346> 00B0 THENZ EQU >B0 THEN <0347> 00B1 TOZ EQU >B1 TO <0348> 00B2 STEPZ EQU >B2 STEP <0349> 00B3 COMMAZ EQU >B3 , <0350> 00B4 SEMICZ EQU >B4 ; <0351> 00B5 COLONZ EQU >B5 : <0352> 00B6 RPARZ EQU >B6 ) <0353> 00B7 LPARZ EQU >B7 ( <0354> 00B8 CONCZ EQU >B8 & (CONCATENATE) <0355> * EQU >B9 spare token <0356> 00BA ORZ EQU >BA OR <0357> 00BB ANDZ EQU >BB AND <0358> 00BC XORZ EQU >BC XOR <0359> 00BD NOTZ EQU >BD NOT <0360> 00BE EQUALZ EQU >BE = <0361> 00BF LESSZ EQU >BF < <0362> 00C0 GREATZ EQU >C0 > <0363> 00C1 PLUSZ EQU >C1 + <0364> 00C2 MINUSZ EQU >C2 - <0365> 00C3 MULTZ EQU >C3 * <0366> 00C4 DIVIZ EQU >C4 / <0367> 00C5 CIRCUZ EQU >C5 ^ <0368> * EQU >C6 spare token <0369> 00C7 STRINZ EQU >C7 QUOTED STRING <0370> 00C8 UNQSTZ EQU >C8 UNQUOTED STRING <0371> 00C8 NUMZ EQU >C8 ALSO NUMERICAL STRING <0372> 00C8 NUMCOZ EQU >C8 ALSO UNQUOTED STRING <0373> 00C9 LNZ EQU >C9 LINE NUMBER CONSTANT <0374> * EQU >CA spare token <0375> 00CB ABSZ EQU >CB ABS <0376> 00CC ATNZ EQU >CC ATN <0377> 00CD COSZ EQU >CD COS <0378> 00CE EXPZZ EQU >CE EXP <0379> 00CF INTZ EQU >CF INT <0380> 00D0 LOGZ EQU >D0 LOG <0381> 00D1 SGNZZ EQU >D1 SGN <0382> 00D2 SINZ EQU >D2 SIN 99/4 GPL-ASSEMBLER (Pass 3) correct PAGE 0007 EQUATES EDIT-359 <0383> 00D3 SQRZ EQU >D3 SQR <0384> 00D4 TANZ EQU >D4 TAN <0385> 00D5 LENZ EQU >D5 LEN <0386> 00D6 CHRZZ EQU >D6 CHR$ <0387> 00D7 RNDZ EQU >D7 RND <0388> 00D8 SEGZZ EQU >D8 SEG$ <0389> 00D9 POSZ EQU >D9 POS <0390> 00DA VAL EQU >DA VAL <0391> 00DB STRZZ EQU >DB STR$ <0392> 00DC ASCZ EQU >DC ASC <0393> 00DD PIZ EQU >DD PI <0394> 00DE RECZ EQU >DE REC <0395> 00DF MAXZ EQU >DF MAX <0396> 00E0 MINZ EQU >E0 MIN <0397> 00E1 RPTZZ EQU >E1 RPT$ <0398> <0399> * EQU >E2 to >E7 <0400> <0401> 00E8 NUMERZ EQU >E8 NUMERIC <0402> 00E9 DIGITZ EQU >E9 DIGIT <0403> 00EA UALPHZ EQU >EA UALPHA <0404> 00EB SIZEZ EQU >EB SIZE <0405> 00EC ALLZ EQU >EC ALL <0406> 00ED USINGZ EQU >ED USING <0407> 00EE BEEPZ EQU >EE BEEP <0408> 00EF ERASEZ EQU >EF ERASE <0409> 00F0 ATZ EQU >F0 AT <0410> 00F1 BASEZ EQU >F1 BASE <0411> * EQU >F2 spare token (TEMPORARY) <0412> * EQU >F3 spare token (VARIABLE) <0413> * EQU >F4 spare token (RELATIVE) <0414> * EQU >F5 spare token (INTERNAL) <0415> 00F6 SEQUEZ EQU >F6 SEQUENTIAL <0416> 00F7 OUTPUZ EQU >F7 OUTPUT <0417> 00F8 UPDATZ EQU >F8 UPDATE <0418> 00F9 APPENZ EQU >F9 APPEND <0419> 00FA FIXEDZ EQU >FA FIXED <0420> 00FB PERMAZ EQU >FB PERMANENT <0421> 00FC TABZ EQU >FC TAB <0422> 00FD NUMBEZ EQU >FD # <0423> 00FE VALIDZ EQU >FE VALIDATE <0424> * EQU >FF ILLEGAL VALUE [0004] *********************************************************** TOKEN LNZ >C9 is for LINE NUMBER CONSTANT values range from 1 to 32767 RXB could modify a unused TOKEN >CA and be called TOKEN INTEGEZ See XB uses >C8 for UNQUOTED STRING and >C8 for NUMERIC STRING (Floating Point) thus easy to see why strings and floating point are the same thing. >CA INTEGEZ as a token could be defined as -32768 to 32767 and would fit PEEK, POKE, LOAD and LINK perfectly, but also speed up all of XB. P.S. Just for context >C8 in XB also always has a LENGTH BYTE so if string or floating point thus again slowing XB down. A INTEGEZ token is just a word >0000 to >FFFF thus much quicker to work with. Edited July 31, 2017 by RXB Quote Link to comment Share on other sites More sharing options...
apersson850 Posted July 31, 2017 Share Posted July 31, 2017 Texas Instruments is a CALCULATOR manufacture company and this 100% explains the goofy reason why Floating Point is used for everything despite it being horrid for integer only applications. Well, it's not really a calculator company only, but the fact that the calculator division got the responsibility for the 99/4 and 99/4A gives the same result. And we have to admit that the calculation accuracy and capability of the TI 99/4A, using floating point, is significantly better than almost every other competing design. But why they didn't also provide integers, when they have a 16-bit CPU handling 16-bit values naturally, that's a mystery. But looking at the whole VDP RAM only, GPL powered thing, it's obvious that speed wasn't the first thing they were thinking about. 2 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.