Beta3 2024/05/31: Fix keyword abbreviations

This commit is contained in:
Richard Russell committed 2024-05-31 22:26:27 +01:00
1 parent dd5b8b369d
commit 4b2b530017
5 files changed
+80 -75

No files matched your search

+4 -4
View File
@@ -21,9 +21,9 @@ New features in BBC BASIC (Z80) version 5.00, May 2024:
2.3 REPORT$ 2.3 REPORT$
2.4 Binary constants 2.4 Binary constants
2.5 LEFT$ & RIGHT$ with last parameter omitted 2.5 LEFT$ & RIGHT$ with last parameter omitted
2.6 MOD(array) 2.6 MOD(array())
2.7 SUM(array) 2.7 SUM(array())
2.8 SUMLEN(array) 2.8 SUMLEN(array())
2.9 GET$#file 2.9 GET$#file
3. BASIC V whole array operations 3. BASIC V whole array operations
@@ -56,7 +56,7 @@ New features in BBC BASIC (Z80) version 5.00, May 2024:
5. Extensions to Acorn's BASIC V, compatible with BB4W, BBCSDL and BBCTTY 5. Extensions to Acorn's BASIC V, compatible with BB4W, BBCSDL and BBCTTY
5.1 EXIT REPEAT / WHILE / FOR [var] 5.1 EXIT REPEAT / WHILE / FOR [var]
5.2 Address-of operator ^ 5.2 Address-of operator (^)
5.3 Byte variables and arrays (& suffix) 5.3 Byte variables and arrays (& suffix)
5.4 'BY len' and 'TO term' qualifiers to GET$#file 5.4 'BY len' and 'TO term' qualifiers to GET$#file
5.5 ELSE IF <condition> THEN; (trailing semicolon) 5.5 ELSE IF <condition> THEN; (trailing semicolon)
Binary file not shown.
+9 -9
View File
@@ -1,12 +1,12 @@
m80 dist,dist.lst=dist.z80 /z z80asm dist/rmf
m80 main,main.lst=main.z80 /z z80asm main/rmf
m80 exec,exec.lst=exec.z80 /z z80asm exec/rmf
m80 eval,eval.lst=eval.z80 /z z80asm eval/rmf
m80 asmb,asmb.lst=asmb.z80 /z z80asm asmb/rmf
m80 cmos,cmos.lst=cmos.z80 /z z80asm cmos/rmf
m80 math,math.lst=math.z80 /z z80asm math/rmf
m80 hook,hook.lst=hook.z80 /z z80asm hook/rmf
m80 data,data.lst=data.z80 /z z80asm data/rmf
era bbcbasic.com era bbcbasic.com
link bbcbasic=dist,main,exec,eval,asmb,math,hook,cmos,/p:4B00,data link bbcbasic=dist,main,exec,eval,asmb,math,hook,cmos,/p:4B00,data
hexbin bbcbasic hexbin bbcbasic
+13 -6
View File
@@ -39,6 +39,7 @@
EXTRN FREE EXTRN FREE
EXTRN HIMEM EXTRN HIMEM
EXTRN CURLIN EXTRN CURLIN
EXTRN AUTONO
EXTRN USER EXTRN USER
EXTRN VERMSG EXTRN VERMSG
; ;
@@ -1256,7 +1257,8 @@ WRCH1: CALL BDOS0
SET 1,(HL) SET 1,(HL)
RET RET
; ;
TOGGLE: LD A,(FLAGS) TOGGLE: LD BC,0
LD A,(FLAGS)
XOR 00000100B XOR 00000100B
LD (FLAGS),A LD (FLAGS),A
RET RET
@@ -1319,6 +1321,8 @@ LIMIT: CALL Z,KEYGET ;READ KEYBOARD
OR A ;TEST FOR ESCAPE OR A ;TEST FOR ESCAPE
LD A,C LD A,C
JP M,OSEXIT JP M,OSEXIT
CP 'P' AND 1FH
JP Z,TOGGLE
CP (IX-11) ;CURSOR UP (IX-11) CP (IX-11) ;CURSOR UP (IX-11)
JP Z,LEFT JP Z,LEFT
CP (IX-10) ;CURSOR DOWN (IX-10) CP (IX-10) ;CURSOR DOWN (IX-10)
@@ -1328,13 +1332,11 @@ LIMIT: CALL Z,KEYGET ;READ KEYBOARD
JR Z,BACK JR Z,BACK
CP (IX-9) ;START OF LINE (IX-9) CP (IX-9) ;START OF LINE (IX-9)
JR Z,LEFT JR Z,LEFT
CP (IX-7) ;CLEAR RIGHT (IX-7)
JR Z,DELETE
CP (IX-8) ;END OF LINE (IX-8) CP (IX-8) ;END OF LINE (IX-8)
JP Z,RIGHT JP Z,RIGHT
CP (IX-7) ;CLEAR RIGHT (IX-7)
JR Z,DELETE
LD C,0 ;INHIBIT REPEAT LD C,0 ;INHIBIT REPEAT
CP 'P' AND 1FH
JP Z,TOGGLE
CP (IX-1) ;INSERT / OVR (IX-1) CP (IX-1) ;INSERT / OVR (IX-1)
JP Z,INSERT JP Z,INSERT
CP (IX-6) ;DELETE LEFT (IX-6) CP (IX-6) ;DELETE LEFT (IX-6)
@@ -1359,10 +1361,15 @@ OSEXIT: LD A,(HL)
JP NZ,ABORT ;ESCAPE JP NZ,ABORT ;ESCAPE
LD A,LF LD A,LF
CALL OSWRCH CALL OSWRCH
LD DE,(CURLIN)
XOR A XOR A
LD L,A LD L,A
LD (EDPTR),HL LD (EDPTR),HL
LD DE,(CURLIN)
CP D
RET NZ
CP E
RET NZ
LD DE,(AUTONO)
CP D CP D
RET NZ RET NZ
CP E CP E
+54 -56
View File
@@ -10,7 +10,7 @@
; ;
;VERSION 2.3, 07-05-1984 ;VERSION 2.3, 07-05-1984
;VERSION 3.0, 01-03-1987 ;VERSION 3.0, 01-03-1987
;VERSION 5.0, 27-05-2024 ;VERSION 5.0, 31-05-2024
; ;
EXTRN XEQ EXTRN XEQ
EXTRN RUN0 EXTRN RUN0
@@ -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 5beta2' VERMSG: DEFM 'BBC BASIC (Z80) Version 5beta3'
DEFB CR DEFB CR
DEFB LF DEFB LF
NOTICE: DEFM '(C) Copyright R.T.Russell 2024' NOTICE: DEFM '(C) Copyright R.T.Russell 2024'
@@ -220,7 +220,10 @@ NOAUTO: LD HL,ACCS
JR NZ,NOTCMD JR NZ,NOTCMD
ADD A,A ADD A,A
LD C,A LD C,A
LD B,0 LD A,H
OR L
JR NZ,INAUTO
LD B,A
LD HL,CMDTAB LD HL,CMDTAB
ADD HL,BC ADD HL,BC
LD A,(HL) ;TABLE ENTRY LD A,(HL) ;TABLE ENTRY
@@ -231,6 +234,7 @@ NOAUTO: LD HL,ACCS
CALL NXT CALL NXT
JP (HL) ;EXECUTE COMMAND JP (HL) ;EXECUTE COMMAND
; ;
INAUTO: LD IY,ACCS
NOTCMD: LD A,H NOTCMD: LD A,H
OR L OR L
CALL Z,LINNUM CALL Z,LINNUM
@@ -339,8 +343,6 @@ KEYWDS: DEFB 80H
DEFM 'CHAIN' DEFM 'CHAIN'
DEFB 0BDH DEFB 0BDH
DEFM 'CHR$' DEFM 'CHR$'
DEFB 01H
DEFM 'CIRCLE' ; v5
DEFB 0D8H DEFB 0D8H
DEFM 'CLEAR ' DEFM 'CLEAR '
DEFB 0D9H DEFB 0D9H
@@ -353,6 +355,8 @@ KEYWDS: DEFB 80H
DEFM 'COS' DEFM 'COS'
DEFB 9CH DEFB 9CH
DEFM 'COUNT ' DEFM 'COUNT '
DEFB 01H
DEFM 'CIRCLE' ; v5
DEFB 0DCH DEFB 0DCH
DEFM 'DATA' DEFM 'DATA'
DEFB 9DH DEFB 9DH
@@ -365,16 +369,14 @@ KEYWDS: DEFB 80H
DEFM 'DIM' DEFM 'DIM'
DEFB 0DFH DEFB 0DFH
DEFM 'DRAW' DEFM 'DRAW'
DEFB 02H
DEFM 'ELLIPSE' ; v5
DEFB 0CBH
DEFM 'ENDCASE ' ; v5
DEFB 0CDH
DEFM 'ENDIF ' ; v5
DEFB 0E1H DEFB 0E1H
DEFM 'ENDPROC ' DEFM 'ENDPROC '
DEFB 0CEH DEFB 0CEH
DEFM 'ENDWHILE ' ; v5 DEFM 'ENDWHILE ' ; v5
DEFB 0CBH
DEFM 'ENDCASE ' ; v5
DEFB 0CDH
DEFM 'ENDIF ' ; v5
DEFB 0E0H DEFB 0E0H
DEFM 'END ' DEFM 'END '
DEFB 0E2H DEFB 0E2H
@@ -389,16 +391,18 @@ KEYWDS: DEFB 80H
DEFM 'ERROR' DEFM 'ERROR'
DEFB 0C5H DEFB 0C5H
DEFM 'EOF ' DEFM 'EOF '
DEFB 10H
DEFM 'EXIT ' ; v5
DEFB 82H DEFB 82H
DEFM 'EOR' DEFM 'EOR'
DEFB 9FH DEFB 9FH
DEFM 'ERR ' DEFM 'ERR '
DEFB 10H
DEFM 'EXIT ' ; v5
DEFB 0A1H DEFB 0A1H
DEFM 'EXP' DEFM 'EXP'
DEFB 0A2H DEFB 0A2H
DEFM 'EXT ' DEFM 'EXT '
DEFB 02H
DEFM 'ELLIPSE' ; v5
DEFB 0E3H DEFB 0E3H
DEFM 'FOR' DEFM 'FOR'
DEFB 0A3H DEFB 0A3H
@@ -427,12 +431,12 @@ KEYWDS: DEFB 80H
DEFM 'INKEY$' DEFM 'INKEY$'
DEFB 0A6H DEFB 0A6H
DEFM 'INKEY' DEFM 'INKEY'
DEFB 0CH
DEFM 'INSTALL' ; v5
DEFB 0A8H DEFB 0A8H
DEFM 'INT' DEFM 'INT'
DEFB 0A7H DEFB 0A7H
DEFM 'INSTR(' DEFM 'INSTR('
DEFB 0CH
DEFM 'INSTALL' ; v5
DEFB 86H DEFB 86H
DEFM 'LINE' DEFM 'LINE'
DEFB 92H DEFB 92H
@@ -455,24 +459,22 @@ KEYWDS: DEFB 80H
DEFM 'MODE' DEFM 'MODE'
DEFB 83H DEFB 83H
DEFM 'MOD' DEFM 'MOD'
DEFB 04H
DEFM 'MOUSE' ; v5
DEFB 0ECH DEFB 0ECH
DEFM 'MOVE' DEFM 'MOVE'
DEFB 04H
DEFM 'MOUSE' ; v5
DEFB 0EDH DEFB 0EDH
DEFM 'NEXT' DEFM 'NEXT'
DEFB 0ACH DEFB 0ACH
DEFM 'NOT' DEFM 'NOT'
DEFB 05H
DEFM 'ORIGIN' ; v5
DEFB 0CCH
DEFM 'OTHERWISE' ; v5
DEFB 0EEH DEFB 0EEH
DEFM 'ON' DEFM 'ON'
DEFB 87H DEFB 87H
DEFM 'OFF ' DEFM 'OFF '
DEFB 0CAH DEFB 0CAH
DEFM 'OF ' ; v5 DEFM 'OF ' ; v5
DEFB 05H
DEFM 'ORIGIN' ; v5
DEFB 84H DEFB 84H
DEFM 'OR' DEFM 'OR'
DEFB 8EH DEFB 8EH
@@ -483,6 +485,8 @@ KEYWDS: DEFB 80H
DEFM 'OPENUP' DEFM 'OPENUP'
DEFB 0FFH DEFB 0FFH
DEFM 'OSCLI' DEFM 'OSCLI'
DEFB 0CCH
DEFM 'OTHERWISE' ; v5
DEFB 0F1H DEFB 0F1H
DEFM 'PRINT' DEFM 'PRINT'
DEFB 90H DEFB 90H
@@ -495,12 +499,12 @@ KEYWDS: DEFB 80H
DEFM 'PLOT' DEFM 'PLOT'
DEFB 0B0H DEFB 0B0H
DEFM 'POINT(' DEFM 'POINT('
DEFB 0EH
DEFM 'PUT' ; Token changed
DEFB 0F2H DEFB 0F2H
DEFM 'PROC' DEFM 'PROC'
DEFB 0B1H DEFB 0B1H
DEFM 'POS ' DEFM 'POS '
DEFB 0EH
DEFM 'PUT' ; Token changed
DEFB 06H DEFB 06H
DEFM 'QUIT ' ; v5 DEFM 'QUIT ' ; v5
DEFB 0F8H DEFB 0F8H
@@ -551,18 +555,18 @@ KEYWDS: DEFB 80H
DEFM 'SYS' ; v5 DEFM 'SYS' ; v5
DEFB 0B7H DEFB 0B7H
DEFM 'TAN' DEFM 'TAN'
DEFB 8CH
DEFM 'THEN'
DEFB 0B8H
DEFM 'TO'
DEFB 8AH DEFB 8AH
DEFM 'TAB(' DEFM 'TAB('
DEFB 0FCH DEFB 8CH
DEFM 'TRACE' DEFM 'THEN'
DEFB 91H DEFB 91H
DEFM 'TIME ' DEFM 'TIME '
DEFB 0AH DEFB 0AH
DEFM 'TINT' DEFM 'TINT'
DEFB 0B8H
DEFM 'TO'
DEFB 0FCH
DEFM 'TRACE'
DEFB 0B9H DEFB 0B9H
DEFM 'TRUE ' DEFM 'TRUE '
DEFB 0FDH DEFB 0FDH
@@ -575,14 +579,14 @@ KEYWDS: DEFB 80H
DEFM 'VAL' DEFM 'VAL'
DEFB 0BCH DEFB 0BCH
DEFM 'VPOS ' DEFM 'VPOS '
DEFB 0FEH
DEFM 'WIDTH'
DEFB 0BH
DEFM 'WAIT ' ; v5
DEFB 0C9H
DEFM 'WHEN' ; v5
DEFB 0C7H DEFB 0C7H
DEFM 'WHILE' ; v5 DEFM 'WHILE' ; v5
DEFB 0C9H
DEFM 'WHEN' ; v5
DEFB 0BH
DEFM 'WAIT ' ; v5
DEFB 0FEH
DEFM 'WIDTH'
;'LEFT' TOKENS: ;'LEFT' TOKENS:
DEFB 0CFH DEFB 0CFH
DEFM 'PTR' DEFM 'PTR'
@@ -832,7 +836,7 @@ LENSUB EQU $-TOKSUB
DELETE: CALL DLPAIR DELETE: CALL DLPAIR
DELET1: LD A,(HL) DELET1: LD A,(HL)
OR A OR A
JP Z,WARM JR Z,WARMNC
INC HL INC HL
LD E,(HL) LD E,(HL)
INC HL INC HL
@@ -856,7 +860,7 @@ LISTO: INC IY ;SKIP "O"
EXX EXX
LD A,L LD A,L
LD (LISTON),A LD (LISTON),A
CLOOP1: JP CLOOP JP CLOOP
; ;
;LIST ;LIST
;LIST line ;LIST line
@@ -1006,10 +1010,7 @@ RENUM1: LD A,(HL) ;BUILD TABLE
POP HL POP HL
EX DE,HL EX DE,HL
JR C,RENUM1 ;CONTINUE JR C,RENUM1 ;CONTINUE
CALL EXTERR ;"Out of space" JP ERROR ;'No room' (A = 0)
DEFB 16H
DEFB 18H
DEFB 0
; ;
RENUM2: EX DE,HL RENUM2: EX DE,HL
LD (HL),-1 LD (HL),-1
@@ -1021,7 +1022,7 @@ RENUM2: EX DE,HL
RENUM3: LD C,(HL) RENUM3: LD C,(HL)
LD A,C LD A,C
OR A OR A
JP Z,WARM JR Z,WARMNC
EXX EXX
EX DE,HL EX DE,HL
INC HL INC HL
@@ -1114,6 +1115,15 @@ BAD: CALL TELL ;"Bad program'
NEW: CALL NEWIT NEW: CALL NEWIT
JR CLOOP0 JR CLOOP0
; ;
;LOAD filename
;
LOAD: CALL EXPRS ;GET FILENAME
LD A,CR
LD (DE),A
CALL LOAD0
CALL CLEAR
JR WARM0
;
;OLD ;OLD
; ;
OLD: LD HL,(PAGE) OLD: LD HL,(PAGE)
@@ -1131,15 +1141,6 @@ OLD: LD HL,(PAGE)
CALL CLEAN CALL CLEAN
CLOOP0: JP CLOOP CLOOP0: JP CLOOP
; ;
;LOAD filename
;
LOAD: CALL EXPRS ;GET FILENAME
LD A,CR
LD (DE),A
CALL LOAD0
CALL CLEAR
JR WARM0
;
;SAVE filename ;SAVE filename
; ;
SAVE: CALL EXPRS ;FILENAME SAVE: CALL EXPRS ;FILENAME
@@ -1203,7 +1204,7 @@ ERROR2: LD SP,(HIMEM)
LD E,0 LD E,0
CALL C,OSSHUT ;CLOSE ALL FILES CALL C,OSSHUT ;CLOSE ALL FILES
CALL CRLF CALL CRLF
JP CLOOP JR CLOOP0
; ;
;SUBROUTINES: ;SUBROUTINES:
; ;
@@ -1442,12 +1443,9 @@ LOUT: BIT 0,E
CALL OUT CALL OUT
RET RET
; ;
INDADD: INC E
RET
;
INDSUB: DEC E INDSUB: DEC E
JP P,INDRET JP P,INDRET
INC E INDADD: INC E
INDRET: RET INDRET: RET
; ;
;CRLF - SEND CARRIAGE RETURN, LINE FEED. ;CRLF - SEND CARRIAGE RETURN, LINE FEED.