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