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 @@ ...@@ -11,13 +11,13 @@
GBLS Module_HelpVersion GBLS Module_HelpVersion
GBLS Module_ComponentName GBLS Module_ComponentName
GBLS Module_ComponentPath GBLS Module_ComponentPath
Module_MajorVersion SETS "1.44" Module_MajorVersion SETS "1.48"
Module_Version SETA 144 Module_Version SETA 148
Module_MinorVersion SETS "" Module_MinorVersion SETS ""
Module_Date SETS "16 Jun 2009" Module_Date SETS "11 Dec 2011"
Module_ApplicationDate SETS "16-Jun-09" Module_ApplicationDate SETS "11-Dec-11"
Module_ComponentName SETS "BASIC" Module_ComponentName SETS "BASIC"
Module_ComponentPath SETS "castle/RiscOS/Sources/Programmer/BASIC" Module_ComponentPath SETS "castle/RiscOS/Sources/Programmer/BASIC"
Module_FullVersion SETS "1.44" Module_FullVersion SETS "1.48"
Module_HelpVersion SETS "1.44 (16 Jun 2009)" Module_HelpVersion SETS "1.48 (11 Dec 2011)"
END END
/* (1.44) /* (1.48)
* *
* This file is automatically maintained by srccommit, do not edit manually. * This file is automatically maintained by srccommit, do not edit manually.
* Last processed by srccommit version: 1.1. * 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_MinorVersion_CMHG
#define Module_Date_CMHG 16 Jun 2009 #define Module_Date_CMHG 11 Dec 2011
#define Module_MajorVersion "1.44" #define Module_MajorVersion "1.48"
#define Module_Version 144 #define Module_Version 148
#define Module_MinorVersion "" #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_ComponentName "BASIC"
#define Module_ComponentPath "castle/RiscOS/Sources/Programmer/BASIC" #define Module_ComponentPath "castle/RiscOS/Sources/Programmer/BASIC"
#define Module_FullVersion "1.44" #define Module_FullVersion "1.48"
#define Module_HelpVersion "1.44 (16 Jun 2009)" #define Module_HelpVersion "1.48 (11 Dec 2011)"
#define Module_LibraryVersionInfo "1:44" #define Module_LibraryVersionInfo "1:48"
...@@ -72,8 +72,8 @@ ARRAYARRAYASSIGNCOPY ...@@ -72,8 +72,8 @@ ARRAYARRAYASSIGNCOPY
BHI ARRAYARRAYASSIGNCOPY BHI ARRAYARRAYASSIGNCOPY
BEQ NXT BEQ NXT
CMN AELINE,#8 CMN AELINE,#8
LDMLOIA R6!,{R0} LDRLO R0,[R6],#4
STMLOIA R4!,{R0} STRLO R0,[R4],#4
LDMEQIA R6!,{R0,R1} LDMEQIA R6!,{R0,R1}
STMEQIA R4!,{R0,R1} STMEQIA R4!,{R0,R1}
LDMHIIA R6!,{R0,R2,R3} LDMHIIA R6!,{R0,R2,R3}
...@@ -949,11 +949,11 @@ MATRIXMULTIPLYMAIN ...@@ -949,11 +949,11 @@ MATRIXMULTIPLYMAIN
;r4=base of dest; r1=base of left source; r0=base of right source ;r4=base of dest; r1=base of left source; r0=base of right source
;r2=LIMI; r5=LIMJ; r6=LIMK ;r2=LIMI; r5=LIMJ; r6=LIMK
BEQ MATRIXMULTIPLYFP 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 MOV R6,R6,LSL #2 ;LIMK=LIMK*4
;main loop over i ;main loop over i
MATRIXMULTIPLYINT1 MATRIXMULTIPLYINT1
LDMFD SP,{R0} ;reload r source base LDR R0,[SP] ;reload r source base
MOV R11,R6 ;loop count: LIMK*4 MOV R11,R6 ;loop count: LIMK*4
;outer loop over k ;outer loop over k
MATRIXMULTIPLYINT2 MATRIXMULTIPLYINT2
......
...@@ -1992,7 +1992,7 @@ CHKREGSPCCONT ...@@ -1992,7 +1992,7 @@ CHKREGSPCCONT
TEQ R10,#" " TEQ R10,#" "
BEQ CHKREGSPC 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]! CHKREG STR R14,[SP,#-4]!
BL GETREG BL GETREG
LDREQ PC,[SP],#4 LDREQ PC,[SP],#4
...@@ -2003,7 +2003,7 @@ CHKREG1 SUB AELINE,AELINE,#1 ...@@ -2003,7 +2003,7 @@ CHKREG1 SUB AELINE,AELINE,#1
CMP R0,#15 CMP R0,#15
BHI ERASS3 BHI ERASS3
LDMFD SP!,{R1,PC} 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,#" " GETREG BIC R0,R10,#" "
CMP R0,#"R" CMP R0,#"R"
BNE RDPC BNE RDPC
......
...@@ -219,7 +219,7 @@ LOADFILEENTRYDONE ...@@ -219,7 +219,7 @@ LOADFILEENTRYDONE
TST R9,#1 TST R9,#1
LDREQ PC,[SP],#4 LDREQ PC,[SP],#4
MOV R4,#10 MOV R4,#10
MOV R5,#10 MOV R5,#1
BL RENUM1 BL RENUM1
MOV R0,#7 MOV R0,#7
SWI XBASICTrans_Message SWI XBASICTrans_Message
......
...@@ -269,12 +269,12 @@ FNPAR9 LDMEA R6!,{R4,R5} ...@@ -269,12 +269,12 @@ FNPAR9 LDMEA R6!,{R4,R5}
FNPARX STMFD SP!,{LINE,R10} FNPARX STMFD SP!,{LINE,R10}
MOV LINE,R7 MOV LINE,R7
BL MUNGLE BL MUNGLE
ADD R2,R2,#3
BIC R2,R2,#3
STMEA R2!,{R4,LINE} ;put in final zero and address STMEA R2!,{R4,LINE} ;put in final zero and address
LDMFD SP!,{LINE,R10} LDMFD SP!,{LINE,R10}
LDR R4,[SP],#4 LDR R4,[SP],#4
STMEA R2!,{R4} ;put in overlay value STR R4,[R2],#4 ;put in overlay value
ADD R2,R2,#3
BIC R2,R2,#3
STR R2,[ARGP,#FSA] ;update fsa! STR R2,[ARGP,#FSA] ;update fsa!
B FNGOA B FNGOA
...@@ -608,11 +608,11 @@ GTARGRETRESTRV ...@@ -608,11 +608,11 @@ GTARGRETRESTRV
CMP R5,#TFPLV CMP R5,#TFPLV
BEQ GTARGRETRESTRVFP BEQ GTARGRETRESTRVFP
BCS GTARGRETRESTRVSTR BCS GTARGRETRESTRVSTR
LDMFD AELINE!,{IACC} LDR IACC,[AELINE],#4
MOV TYPE,#TINTEGER MOV TYPE,#TINTEGER
B GTARGRETRESTRV1 B GTARGRETRESTRV1
GTARGRETRESTRVSTR GTARGRETRESTRVSTR
LDMFD AELINE!,{CLEN} LDR CLEN,[AELINE],#4
ADD R0,ARGP,#STRACC ADD R0,ARGP,#STRACC
SUBS R1,CLEN,R0 SUBS R1,CLEN,R0
BEQ GTARGRETRESTRVSTR2 BEQ GTARGRETRESTRVSTR2
...@@ -701,7 +701,7 @@ RETSTR CMP R7,#128 ...@@ -701,7 +701,7 @@ RETSTR CMP R7,#128
BNE RETROP BNE RETROP
STMFD SP!,{R0-R5,R14} STMFD SP!,{R0-R5,R14}
ADD R3,SP,#7*4 ;number of registers pushed ADD R3,SP,#7*4 ;number of registers pushed
LDMFD R3!,{CLEN} LDR CLEN,[R3],#4
ADD R4,ARGP,#STRACC ADD R4,ARGP,#STRACC
SUB CLEN,CLEN,R4 SUB CLEN,CLEN,R4
ADD CLEN,CLEN,R3 ADD CLEN,CLEN,R3
......
...@@ -341,7 +341,7 @@ INITIALISERAM1 ...@@ -341,7 +341,7 @@ INITIALISERAM1
BHI INITIALISERAM1 BHI INITIALISERAM1
MOVEQ PC,R14 MOVEQ PC,R14
CMN R5,#8 CMN R5,#8
STMLOIA R4!,{R0} STRLO R0,[R4],#4
STMEQIA R4!,{R0,R1} STMEQIA R4!,{R0,R1}
STMHIIA R4!,{R0,R2,R3} STMHIIA R4!,{R0,R2,R3}
MOV PC,R14 MOV PC,R14
......
...@@ -14,6 +14,10 @@ ...@@ -14,6 +14,10 @@
; ;
;> fp ;> fp
GBLL UseCLZ
UseCLZ SETL :LNOT: NoARMv5
FLOATY TEQ TYPE,#0 FLOATY TEQ TYPE,#0
FLOATZ MOVMI PC,R14 FLOATZ MOVMI PC,R14
FLOATQ BEQ ERTYPEINT FLOATQ BEQ ERTYPEINT
...@@ -25,6 +29,11 @@ IFLT ...@@ -25,6 +29,11 @@ IFLT
BEQ IFLTZ ;exit if number 0 BEQ IFLTZ ;exit if number 0
AND FSIGN,FSIGN,#&80000000 AND FSIGN,FSIGN,#&80000000
RSBMI FACC,FACC,#0 ;complement number if rqd 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 MOV FACCX,#&A0 ;initial exponent
IFLTA CMP FACC,#&10000 IFLTA CMP FACC,#&10000
MOVCC FACC,FACC,LSL #16 MOVCC FACC,FACC,LSL #16
...@@ -41,6 +50,7 @@ IFLTA CMP FACC,#&10000 ...@@ -41,6 +50,7 @@ IFLTA CMP FACC,#&10000
CMP FACC,#&80000000 CMP FACC,#&80000000
MOVCC FACC,FACC,LSL #1 MOVCC FACC,FACC,LSL #1
SUBCC FACCX,FACCX,#1 SUBCC FACCX,FACCX,#1
]
MOV PC,R14 MOV PC,R14
IFLTZ MOV FACCX,#0 IFLTZ MOV FACCX,#0
| |
...@@ -450,7 +460,15 @@ FNRMA SUB FACCX,FACCX,#1 ...@@ -450,7 +460,15 @@ FNRMA SUB FACCX,FACCX,#1
FNRMB MOVS FACC,FGRD ;if facc zero then facc:=fgrd FNRMB MOVS FACC,FGRD ;if facc zero then facc:=fgrd
BEQ FCLR BEQ FCLR
SUBS FACCX,FACCX,#32 ;exponent dec by word 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 BPL IFLTA
]
;clear facc ;clear facc
FCLR MOV FACCX,#0 FCLR MOV FACCX,#0
MOV FACC,#0 MOV FACC,#0
......