v5beta5: Fixed DIM var LOCAL size
This commit is contained in:
1 parent
d11e0d2d91
commit
6bc386b76b
3 files changed
+22
-20
No files matched your search
Binary file not shown.
+21
-19
@@ -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
@@ -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'
|
||||
|
||||
Reference in new issue
Block a user