Source
...
Target
Commits (4)
  • Jeffrey Lee's avatar
    Fix objasm 4 warnings. Enable use of CLZ in math code. · 43b69cf4
    Jeffrey Lee authored
    Detail:
      s/Array, s/Funct, s/Stmt - Use LDR/STR instead of LDM/STM when only one register is to be transferred
      s/fp - Use Hdr:CPU.Arch to determine whether CLZ can be used in the IFLT routine
    Admin:
      Tested on rev A2 BB-xM
    
    
    Version 1.45. Tagged as 'BASIC-1_45'
    43b69cf4
  • Robert Sprowson's avatar
    Remove post increment. · 5ffab2e0
    Robert Sprowson authored
    In s/Array line 956 revision 1.5 the LDMFD was swapped for an LDR but the original didn't have writeback so the LDR shouldn't post increment.
    
    Version 1.46. Tagged as 'BASIC-1_46'
    5ffab2e0
  • Jeffrey Lee's avatar
    Use correct CLZ check · 8091e51b
    Jeffrey Lee authored
    Detail:
      s/fp - Only look for ARMv5 support when deciding if CLZ is available, not ARMv5T
    Admin:
      Tested in OMAP3 ROM
    
    
    Version 1.47. Tagged as 'BASIC-1_47'
    8091e51b
  • Robert Sprowson's avatar
    Make TEXTLOAD do RENUMBER 10,1 when renumbering is needed. · 5c3ac913
    Robert Sprowson authored
    Effectively raises the longest text program you can load to ~64k lines.
    
    Version 1.48. Tagged as 'BASIC-1_48'
    5c3ac913
......@@ -11,13 +11,13 @@
GBLS Module_HelpVersion
GBLS Module_ComponentName
GBLS Module_ComponentPath
Module_MajorVersion SETS "1.44"
Module_Version SETA 144
Module_MajorVersion SETS "1.48"
Module_Version SETA 148
Module_MinorVersion SETS ""
Module_Date SETS "16 Jun 2009"
Module_ApplicationDate SETS "16-Jun-09"
Module_Date SETS "11 Dec 2011"
Module_ApplicationDate SETS "11-Dec-11"
Module_ComponentName SETS "BASIC"
Module_ComponentPath SETS "castle/RiscOS/Sources/Programmer/BASIC"
Module_FullVersion SETS "1.44"
Module_HelpVersion SETS "1.44 (16 Jun 2009)"
Module_FullVersion SETS "1.48"
Module_HelpVersion SETS "1.48 (11 Dec 2011)"
END
/* (1.44)
/* (1.48)
*
* This file is automatically maintained by srccommit, do not edit manually.
* Last processed by srccommit version: 1.1.
*
*/
#define Module_MajorVersion_CMHG 1.44
#define Module_MajorVersion_CMHG 1.48
#define Module_MinorVersion_CMHG
#define Module_Date_CMHG 16 Jun 2009
#define Module_Date_CMHG 11 Dec 2011
#define Module_MajorVersion "1.44"
#define Module_Version 144
#define Module_MajorVersion "1.48"
#define Module_Version 148
#define Module_MinorVersion ""
#define Module_Date "16 Jun 2009"
#define Module_Date "11 Dec 2011"
#define Module_ApplicationDate "16-Jun-09"
#define Module_ApplicationDate "11-Dec-11"
#define Module_ComponentName "BASIC"
#define Module_ComponentPath "castle/RiscOS/Sources/Programmer/BASIC"
#define Module_FullVersion "1.44"
#define Module_HelpVersion "1.44 (16 Jun 2009)"
#define Module_LibraryVersionInfo "1:44"
#define Module_FullVersion "1.48"
#define Module_HelpVersion "1.48 (11 Dec 2011)"
#define Module_LibraryVersionInfo "1:48"
......@@ -72,8 +72,8 @@ ARRAYARRAYASSIGNCOPY
BHI ARRAYARRAYASSIGNCOPY
BEQ NXT
CMN AELINE,#8
LDMLOIA R6!,{R0}
STMLOIA R4!,{R0}
LDRLO R0,[R6],#4
STRLO R0,[R4],#4
LDMEQIA R6!,{R0,R1}
STMEQIA R4!,{R0,R1}
LDMHIIA R6!,{R0,R2,R3}
......@@ -949,11 +949,11 @@ MATRIXMULTIPLYMAIN
;r4=base of dest; r1=base of left source; r0=base of right source
;r2=LIMI; r5=LIMJ; r6=LIMK
BEQ MATRIXMULTIPLYFP
STR R0,[SP,#-4]! ;matrix multiply for integers: save r source base
STR R0,[SP,#-4]! ;matrix multiply for integers: save r source base
MOV R6,R6,LSL #2 ;LIMK=LIMK*4
;main loop over i
MATRIXMULTIPLYINT1
LDMFD SP,{R0} ;reload r source base
LDR R0,[SP] ;reload r source base
MOV R11,R6 ;loop count: LIMK*4
;outer loop over k
MATRIXMULTIPLYINT2
......
......@@ -1992,7 +1992,7 @@ CHKREGSPCCONT
TEQ R10,#" "
BEQ CHKREGSPC
;check for R0-R15,LR or PC otherwise call ASMEXPR
;check for R0-R15,SP or LR or PC otherwise call ASMEXPR
CHKREG STR R14,[SP,#-4]!
BL GETREG
LDREQ PC,[SP],#4
......@@ -2003,7 +2003,7 @@ CHKREG1 SUB AELINE,AELINE,#1
CMP R0,#15
BHI ERASS3
LDMFD SP!,{R1,PC}
; check for R0-R15,LR or PC. Returns EQ with R0 = register number if found
;check for R0-R15,SP or LR or PC. Returns EQ with R0 = register number if found
GETREG BIC R0,R10,#" "
CMP R0,#"R"
BNE RDPC
......
......@@ -219,7 +219,7 @@ LOADFILEENTRYDONE
TST R9,#1
LDREQ PC,[SP],#4
MOV R4,#10
MOV R5,#10
MOV R5,#1
BL RENUM1
MOV R0,#7
SWI XBASICTrans_Message
......
......@@ -269,12 +269,12 @@ FNPAR9 LDMEA R6!,{R4,R5}
FNPARX STMFD SP!,{LINE,R10}
MOV LINE,R7
BL MUNGLE
ADD R2,R2,#3
BIC R2,R2,#3
STMEA R2!,{R4,LINE} ;put in final zero and address
LDMFD SP!,{LINE,R10}
LDR R4,[SP],#4
STMEA R2!,{R4} ;put in overlay value
ADD R2,R2,#3
BIC R2,R2,#3
STR R4,[R2],#4 ;put in overlay value
STR R2,[ARGP,#FSA] ;update fsa!
B FNGOA
......@@ -608,11 +608,11 @@ GTARGRETRESTRV
CMP R5,#TFPLV
BEQ GTARGRETRESTRVFP
BCS GTARGRETRESTRVSTR
LDMFD AELINE!,{IACC}
LDR IACC,[AELINE],#4
MOV TYPE,#TINTEGER
B GTARGRETRESTRV1
GTARGRETRESTRVSTR
LDMFD AELINE!,{CLEN}
LDR CLEN,[AELINE],#4
ADD R0,ARGP,#STRACC
SUBS R1,CLEN,R0
BEQ GTARGRETRESTRVSTR2
......@@ -701,7 +701,7 @@ RETSTR CMP R7,#128
BNE RETROP
STMFD SP!,{R0-R5,R14}
ADD R3,SP,#7*4 ;number of registers pushed
LDMFD R3!,{CLEN}
LDR CLEN,[R3],#4
ADD R4,ARGP,#STRACC
SUB CLEN,CLEN,R4
ADD CLEN,CLEN,R3
......
......@@ -341,7 +341,7 @@ INITIALISERAM1
BHI INITIALISERAM1
MOVEQ PC,R14
CMN R5,#8
STMLOIA R4!,{R0}
STRLO R0,[R4],#4
STMEQIA R4!,{R0,R1}
STMHIIA R4!,{R0,R2,R3}
MOV PC,R14
......
......@@ -14,6 +14,10 @@
;
;> fp
GBLL UseCLZ
UseCLZ SETL :LNOT: NoARMv5
FLOATY TEQ TYPE,#0
FLOATZ MOVMI PC,R14
FLOATQ BEQ ERTYPEINT
......@@ -25,6 +29,11 @@ IFLT
BEQ IFLTZ ;exit if number 0
AND FSIGN,FSIGN,#&80000000
RSBMI FACC,FACC,#0 ;complement number if rqd
[ UseCLZ
CLZ FACCX,FACC
MOV FACC,FACC,LSL FACCX
RSB FACCX,FACCX,#&A0
|
MOV FACCX,#&A0 ;initial exponent
IFLTA CMP FACC,#&10000
MOVCC FACC,FACC,LSL #16
......@@ -41,6 +50,7 @@ IFLTA CMP FACC,#&10000
CMP FACC,#&80000000
MOVCC FACC,FACC,LSL #1
SUBCC FACCX,FACCX,#1
]
MOV PC,R14
IFLTZ MOV FACCX,#0
|
......@@ -450,7 +460,15 @@ FNRMA SUB FACCX,FACCX,#1
FNRMB MOVS FACC,FGRD ;if facc zero then facc:=fgrd
BEQ FCLR
SUBS FACCX,FACCX,#32 ;exponent dec by word
[ UseCLZ
BMI FCLR
CLZ FGRD,FACC
MOV FACC,FACC,LSL FGRD
SUB FACCX,FACCX,FGRD
MOV PC,LR
|
BPL IFLTA
]
;clear facc
FCLR MOV FACCX,#0
MOV FACC,#0
......