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 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
@@ -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'
|
||||||
|
|||||||
Reference in new issue
Block a user