v5beta5: Fixed DIM var LOCAL size

This commit is contained in:
Richard Russell committed 2024-06-10 18:25:49 +01:00
1 parent d11e0d2d91
commit 6bc386b76b
3 files changed
+22 -20

No files matched your search

Binary file not shown.
+21 -19
View File
@@ -10,7 +10,7 @@
; ;
;VERSION 2.1, 22-01-1984 ;VERSION 2.1, 22-01-1984
;VERSION 3.1, 11-06-1987 ;VERSION 3.1, 11-06-1987
;VERSION 5.0, 19-05-2024 ;VERSION 5.0, 10-06-2024
; ;
GLOBAL XEQ GLOBAL XEQ
GLOBAL RUN0 GLOBAL RUN0
@@ -430,7 +430,7 @@ SWAP1: LD C,(HL)
INC DE INC DE
INC HL INC HL
DJNZ SWAP1 DJNZ SWAP1
JR XEQR JR XEQGO4
; ;
;[LET] var = expr ;[LET] var = expr
; ;
@@ -453,7 +453,7 @@ LET: CALL ASSIGN
POP IX POP IX
POP HL POP HL
CALL MODIFS CALL MODIFS
XEQR: JP XEQ XEQGO4: JP XEQ
; ;
; GETSTR - Get string variable ; GETSTR - Get string variable
; Inputs: IY = text pointer ; Inputs: IY = text pointer
@@ -498,7 +498,7 @@ ASM: LD (CURLIN),IY
AND 0FH AND 0FH
OR 30H OR 30H
LD (HL),A LD (HL),A
JR XEQR JR XEQGO4
; ;
;= ;=
; ;
@@ -625,9 +625,11 @@ DIM3: PUSH HL
BIT 0,A BIT 0,A
JR Z,ARRCHK ;NOT LOCAL JR Z,ARRCHK ;NOT LOCAL
LD HL,0 LD HL,0
ADD HL,SP
SBC HL,DE SBC HL,DE
OR A
SBC HL,BC SBC HL,BC
ADD HL,SP
JR Z,ARRCHK ;RESERVE NOTHING
LD SP,HL LD SP,HL
PUSH DE PUSH DE
PUSH BC PUSH BC
@@ -889,8 +891,10 @@ ON4: LD A,(IY)
JP Z,IF1 ;ELSE CLAUSE JP Z,IF1 ;ELSE CLAUSE
CP CR CP CR
JR NZ,ON4 JR NZ,ON4
LD A,40 LD A,40 ;'ON range'
ERROR2: JP ERROR ;"ON range" DEFB 21H
FORVAR: LD A,34 ;'FOR variable'
ERROR2: JP ERROR
; ;
ONPROC: LD A,TON ONPROC: LD A,TON
JP PROC JP PROC
@@ -961,9 +965,6 @@ XEQGO2: JP XEQ
; ;
;FOR var = expr TO expr [STEP expr] ;FOR var = expr TO expr [STEP expr]
; ;
FORVAR: LD A,34
JR ERROR2 ;"FOR variable"
;
FOR: CALL ASSIGN FOR: CALL ASSIGN
JR NZ,FORVAR ;"FOR variable" JR NZ,FORVAR ;"FOR variable"
PUSH AF ;SAVE TYPE PUSH AF ;SAVE TYPE
@@ -1367,7 +1368,7 @@ ENDPRO: POP BC
JP ERROR ;"No PROC" JP ERROR ;"No PROC"
; ;
ENDPR1: POP IY ENDPR1: POP IY
JP XEQ XEQGO6: JP XEQ
; ;
;INPUT #channel,var,var... ;INPUT #channel,var,var...
; ;
@@ -1428,7 +1429,7 @@ INPUT: CP '#'
INPUT0: LD HL,BUFFER INPUT0: LD HL,BUFFER
LD (HL),CR ;INITIALISE EMPTY LD (HL),CR ;INITIALISE EMPTY
INPUT1: CALL TERMQ INPUT1: CALL TERMQ
JP Z,XEQ ;DONE JR Z,XEQGO6 ;DONE
INC IY INC IY
CP ',' CP ','
JR Z,INPUT3 ;SKIP COMMA JR Z,INPUT3 ;SKIP COMMA
@@ -1556,14 +1557,14 @@ IF: CALL EXPRI
JR Z,IFNOT ;FALSE JR Z,IFNOT ;FALSE
LD A,(IY) LD A,(IY)
CP TTHEN CP TTHEN
JP NZ,XEQ JR NZ,XEQGO7
IF0: INC IY ;SKIP "THEN" IF0: INC IY ;SKIP "THEN"
LD A,(IY) LD A,(IY)
CP ';' CP ';'
JR Z,IF0 JR Z,IF0
IF1: CALL NXT IF1: CALL NXT
CP TLINO CP TLINO
JP NZ,XEQ ;STATEMENT FOLLOWS JR NZ,XEQGO7 ;STATEMENT FOLLOWS
JP GOTO ;LINE NO. FOLLOWS JP GOTO ;LINE NO. FOLLOWS
; ;
IFELSE: LD A,(IY) IFELSE: LD A,(IY)
@@ -1603,8 +1604,8 @@ MELSE: LD BC,-3
LD BC,TENDIF LD BC,TENDIF
LD DE,TENDIF*256+TTHEN LD DE,TENDIF*256+TTHEN
CALL NSCAN CALL NSCAN
JP Z,XEQ JR NZ,NENDIF
JR NENDIF XEQGO7: JP XEQ
; ;
; WHEN and OTHERWISE: ; WHEN and OTHERWISE:
; ;
@@ -1613,7 +1614,7 @@ WHEN: LD BC,-3
LD BC,TENDCASE LD BC,TENDCASE
LD DE,TENDCASE*256+TOF LD DE,TENDCASE*256+TOF
CALL NSCAN CALL NSCAN
JP Z,XEQ JR Z,XEQGO7
LD A,47 LD A,47
JR ERROR4 ;"Missing ENDCASE" JR ERROR4 ;"Missing ENDCASE"
; ;
@@ -1707,12 +1708,12 @@ CASE2: LD A,(IY)
;Finished, level stack if string: ;Finished, level stack if string:
; ;
CASE9: BIT 0,B CASE9: BIT 0,B
JR Z,CASE8 JR Z,XEQGO5
LD H,0 LD H,0
LD L,C LD L,C
ADD HL,SP ADD HL,SP
LD SP,HL LD SP,HL
CASE8: JP XEQ JR XEQGO5
; ;
;Matched, so skip any more expressions: ;Matched, so skip any more expressions:
; ;
@@ -2727,6 +2728,7 @@ RESARR: POP BC
ADD HL,SP ADD HL,SP
CALL NZ,FREESA ;Free string array CALL NZ,FREESA ;Free string array
RESAR1: LD SP,HL RESAR1: LD SP,HL
INC IX ;Flag something restored
JR RESLO1 JR RESLO1
; ;
; RESLOC - Restore local variables/arrays or DATA/ERROR status from stack ; RESLOC - Restore local variables/arrays or DATA/ERROR status from stack
+1 -1
View File
@@ -174,7 +174,7 @@ PURGE: LD (HL),A ;CLEAR SCRATCHPAD
CALL NEWIT CALL NEWIT
JP NZ,CHAIN0 ;AUTO-RUN JP NZ,CHAIN0 ;AUTO-RUN
CALL TELL CALL TELL
VERMSG: DEFM 'BBC BASIC (Z80) Version 5beta4' VERMSG: DEFM 'BBC BASIC (Z80) Version 5beta5'
DEFB CR DEFB CR
DEFB LF DEFB LF
NOTICE: DEFM '(C) Copyright R.T.Russell 2024' NOTICE: DEFM '(C) Copyright R.T.Russell 2024'