Fixed += not checking for String too long

This commit is contained in:
Richard Russell committed 2025-01-11 15:16:55 +00:00
1 parent e26b0441e4
commit 68415af1b6
4 files changed
+20 -15

No files matched your search

Binary file not shown.
Binary file not shown.
+10 -8
View File
@@ -1,8 +1,8 @@
TITLE BBC BASIC (C) R.T.RUSSELL 1981-2024 TITLE BBC BASIC (C) R.T.RUSSELL 1981-2025
; ;
;BBC BASIC INTERPRETER - Z80 VERSION ;BBC BASIC INTERPRETER - Z80 VERSION
;EVALUATE EXPRESSION MODULE - "EVAL" ;EVALUATE EXPRESSION MODULE - "EVAL"
;(C) COPYRIGHT R.T.RUSSELL 1981-2024 ;(C) COPYRIGHT R.T.RUSSELL 1981-2025
; ;
;THE NAME BBC BASIC IS USED WITH THE PERMISSION ;THE NAME BBC BASIC IS USED WITH THE PERMISSION
;OF THE BRITISH BROADCASTING CORPORATION AND IS ;OF THE BRITISH BROADCASTING CORPORATION AND IS
@@ -12,6 +12,7 @@
;VERSION 3.0, 08-03-1987 ;VERSION 3.0, 08-03-1987
;VERSION 5.0, 31-05-2024 ;VERSION 5.0, 31-05-2024
;VERSION 5.1, 28-12-2024 ;VERSION 5.1, 28-12-2024
;VERSION 5.2, 11-01-2025
; ;
;BINARY FLOATING POINT REPRESENTATION: ;BINARY FLOATING POINT REPRESENTATION:
; 32 BIT SIGN-MAGNITUDE NORMALIZED MANTISSA ; 32 BIT SIGN-MAGNITUDE NORMALIZED MANTISSA
@@ -640,7 +641,7 @@ CONS2: LD A,(IY)
RET RET
; ;
ARRAY: LD A,14 ;'Bad use of array' ARRAY: LD A,14 ;'Bad use of array'
JP ERROR JR ERROR0
; ;
; ARRLEN - Get start address and number of elements of an array ; ARRLEN - Get start address and number of elements of an array
; Inputs: HL addresses array descriptor ; Inputs: HL addresses array descriptor
@@ -724,20 +725,21 @@ LOADS: LD DE,ACCS
EXX EXX
OR A OR A
LD C,A LD C,A
LD A,80H ;STRING MARKER REPDUN: LD A,80H ;STRING MARKER
RET Z RET Z
LD B,0 LD B,0
LDIR LDIR
RET RET
; ;
LOADS2: LD A,(HL) LOADS2: PUSH IX
POP HL
LOADS3: LD A,(HL)
LD (DE),A LD (DE),A
INC HL INC HL
CP CR CP CR
REPDUN: LD A,80H ;STRING MARKER JR Z,REPDUN
RET Z
INC E INC E
JR NZ,LOADS2 JR NZ,LOADS3
RET ;RETURN NULL STRING RET ;RETURN NULL STRING
; ;
; Version 5 extensions: ; Version 5 extensions:
+10 -7
View File
@@ -1,8 +1,8 @@
TITLE BBC BASIC (C) R.T.RUSSELL 1981-2024 TITLE BBC BASIC (C) R.T.RUSSELL 1981-2025
; ;
;BBC BASIC INTERPRETER - Z80 VERSION ;BBC BASIC INTERPRETER - Z80 VERSION
;STATEMENT EXECUTION MODULE - "EXEC" ;STATEMENT EXECUTION MODULE - "EXEC"
;(C) COPYRIGHT R.T.RUSSELL 1981-2024 ;(C) COPYRIGHT R.T.RUSSELL 1981-2025
; ;
;THE NAME BBC BASIC IS USED WITH THE PERMISSION ;THE NAME BBC BASIC IS USED WITH THE PERMISSION
;OF THE BRITISH BROADCASTING CORPORATION AND IS ;OF THE BRITISH BROADCASTING CORPORATION AND IS
@@ -12,6 +12,7 @@
;VERSION 3.1, 11-06-1987 ;VERSION 3.1, 11-06-1987
;VERSION 5.0, 12-07-2024 ;VERSION 5.0, 12-07-2024
;VERSION 5.1, 28-12-2024 ;VERSION 5.1, 28-12-2024
;VERSION 5.2, 11-01-2025
; ;
GLOBAL XEQ GLOBAL XEQ
GLOBAL RUN0 GLOBAL RUN0
@@ -451,7 +452,6 @@ LET: CALL ASSIGN
JR C,SYNTAX ;"Syntax error" JR C,SYNTAX ;"Syntax error"
JP P,LETARR ;Numeric array JP P,LETARR ;Numeric array
JP PE,LETARR ;String array JP PE,LETARR ;String array
LD A,D ;Type
PUSH DE PUSH DE
PUSH HL PUSH HL
CALL EXPRS CALL EXPRS
@@ -2363,7 +2363,7 @@ MODIFY: LD A,E
CALL FPP CALL FPP
POP IX POP IX
POP DE POP DE
JP C,ERROR JR C,ERRORC
STORE0: LD A,D ;Type STORE0: LD A,D ;Type
STOREN: CP 5 STOREN: CP 5
JR Z,STORE5 JR Z,STORE5
@@ -2400,14 +2400,17 @@ MODIFS: LD A,L ;Operator
CP '+' CP '+'
LD A,H ;Type LD A,H ;Type
JR NZ,STACCS JR NZ,STACCS
PUSH IY
PUSH IX PUSH IX
POP IY EX (SP),IY
CALL PUSHS CALL PUSHS
PUSH IY PUSH IY
POP IX POP IX
CALL LOADS CALL LOADS
POP BC POP BC
LD A,E
ADD C
LD A,19 ;String too long
ERRORC: JR C,ERROR6
LD A,B ;Type LD A,B ;Type
INC C INC C
DEC C DEC C
@@ -2480,7 +2483,7 @@ CHECK: PUSH HL
POP HL POP HL
RET C RET C
XOR A XOR A
JP ERROR ;"No room" ERROR6: JP ERROR ;"No room"
; ;
STORS3: LD C,E STORS3: LD C,E
PUSH IX PUSH IX