diff --git a/bin/acorn/BBCBASIC.COM b/bin/acorn/BBCBASIC.COM index 489df8b..28027fa 100644 Binary files a/bin/acorn/BBCBASIC.COM and b/bin/acorn/BBCBASIC.COM differ diff --git a/bin/cpm/BBCBASIC.COM b/bin/cpm/BBCBASIC.COM index 1ad2eab..ae7d798 100644 Binary files a/bin/cpm/BBCBASIC.COM and b/bin/cpm/BBCBASIC.COM differ diff --git a/src/EVAL.Z80 b/src/EVAL.Z80 index c86cdf9..75ff590 100644 --- a/src/EVAL.Z80 +++ b/src/EVAL.Z80 @@ -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 ;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 ;OF THE BRITISH BROADCASTING CORPORATION AND IS @@ -12,6 +12,7 @@ ;VERSION 3.0, 08-03-1987 ;VERSION 5.0, 31-05-2024 ;VERSION 5.1, 28-12-2024 +;VERSION 5.2, 11-01-2025 ; ;BINARY FLOATING POINT REPRESENTATION: ; 32 BIT SIGN-MAGNITUDE NORMALIZED MANTISSA @@ -640,7 +641,7 @@ CONS2: LD A,(IY) RET ; ARRAY: LD A,14 ;'Bad use of array' - JP ERROR + JR ERROR0 ; ; ARRLEN - Get start address and number of elements of an array ; Inputs: HL addresses array descriptor @@ -724,20 +725,21 @@ LOADS: LD DE,ACCS EXX OR A LD C,A - LD A,80H ;STRING MARKER +REPDUN: LD A,80H ;STRING MARKER RET Z LD B,0 LDIR RET ; -LOADS2: LD A,(HL) +LOADS2: PUSH IX + POP HL +LOADS3: LD A,(HL) LD (DE),A INC HL CP CR -REPDUN: LD A,80H ;STRING MARKER - RET Z + JR Z,REPDUN INC E - JR NZ,LOADS2 + JR NZ,LOADS3 RET ;RETURN NULL STRING ; ; Version 5 extensions: diff --git a/src/EXEC.Z80 b/src/EXEC.Z80 index 8b682ba..c68ff7c 100644 --- a/src/EXEC.Z80 +++ b/src/EXEC.Z80 @@ -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 ;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 ;OF THE BRITISH BROADCASTING CORPORATION AND IS @@ -12,6 +12,7 @@ ;VERSION 3.1, 11-06-1987 ;VERSION 5.0, 12-07-2024 ;VERSION 5.1, 28-12-2024 +;VERSION 5.2, 11-01-2025 ; GLOBAL XEQ GLOBAL RUN0 @@ -451,7 +452,6 @@ LET: CALL ASSIGN JR C,SYNTAX ;"Syntax error" JP P,LETARR ;Numeric array JP PE,LETARR ;String array - LD A,D ;Type PUSH DE PUSH HL CALL EXPRS @@ -2363,7 +2363,7 @@ MODIFY: LD A,E CALL FPP POP IX POP DE - JP C,ERROR + JR C,ERRORC STORE0: LD A,D ;Type STOREN: CP 5 JR Z,STORE5 @@ -2400,14 +2400,17 @@ MODIFS: LD A,L ;Operator CP '+' LD A,H ;Type JR NZ,STACCS - PUSH IY PUSH IX - POP IY + EX (SP),IY CALL PUSHS PUSH IY POP IX CALL LOADS POP BC + LD A,E + ADD C + LD A,19 ;String too long +ERRORC: JR C,ERROR6 LD A,B ;Type INC C DEC C @@ -2480,7 +2483,7 @@ CHECK: PUSH HL POP HL RET C XOR A - JP ERROR ;"No room" +ERROR6: JP ERROR ;"No room" ; STORS3: LD C,E PUSH IX