diff --git a/WHATSNEW.TXT b/WHATSNEW.TXT index 5f16e52..bb105a9 100644 --- a/WHATSNEW.TXT +++ b/WHATSNEW.TXT @@ -55,7 +55,7 @@ New features in BBC BASIC (Z80) version 5.00, June 2024: 4.5 Compound assignment (+=, -=, *=, /= etc.) 4.6 Assigning to a sub-string: LEFT$()=, MID$()= , RIGHT$()= 4.7 Hooks for CIRCLE,ELLIPSE,FILL,LINE,MOUSE,ORIGIN,RECTANGLE,SYS,TINT,WAIT -4.8 Hooks for MODE function, TINT function, WIDTH function +4.8 Hooks for ON, OFF, MODE function, TINT function, WIDTH function 5. Extensions to Acorn's BASIC V, compatible with BB4W, BBCSDL and BBCTTY diff --git a/bin/acorn/BBCBASIC.COM b/bin/acorn/BBCBASIC.COM index 7377438..dc5cbff 100644 Binary files a/bin/acorn/BBCBASIC.COM and b/bin/acorn/BBCBASIC.COM differ diff --git a/bin/acorn/MAKE.SUB b/bin/acorn/MAKE.SUB index 37b3633..3a6466e 100644 --- a/bin/acorn/MAKE.SUB +++ b/bin/acorn/MAKE.SUB @@ -7,7 +7,7 @@ z80asm amos/rmf z80asm acorn/rmf z80asm data/rmf era bbctube.com -link bbctube=/p:0100,main,exec,eval,asmb,math,acorn,amos,/p:4B00,data +link bbctube=/p:0100,main,exec,eval,asmb,math,acorn,amos,/p:4C00,data hexbin bbctube era bbctube.hex ren bbctube.com=bbctube.bin diff --git a/bin/cpm/BBCBASIC.COM b/bin/cpm/BBCBASIC.COM index bea3442..cdc046f 100644 Binary files a/bin/cpm/BBCBASIC.COM and b/bin/cpm/BBCBASIC.COM differ diff --git a/src/ACORN.Z80 b/src/ACORN.Z80 index f05414d..84261eb 100644 --- a/src/ACORN.Z80 +++ b/src/ACORN.Z80 @@ -3,7 +3,7 @@ ;PATCH FOR BBC BASIC TO CP/M 2.2 & 3.0 ;* ACORN COMPUTERS Z80 TUBE VERSION * ;(C) COPYRIGHT R.T.RUSSELL, 02-01-1984 -;VERSION 5.0, 18-06-2024 +;VERSION 5.0, 12-07-2024 ; OSWRCH EQU 0FFEEH OSWORD EQU 0FFF1H @@ -61,6 +61,8 @@ TFILL EQU 03H GLOBAL TINT GLOBAL WAIT GLOBAL SYS + GLOBAL CSRON + GLOBAL CSROFF ; GLOBAL PUTIMS GLOBAL GETIMS @@ -385,6 +387,24 @@ GCOL0: LD H,L CALL WRCH3 ;DLH XEQGO1: JP XEQ ; +;CSRON - Turn caret on +;CSROFF - Turn caret off +; +CSRON: LD C,1 + JR CSRGO +; +CSROFF: LD C,0 +CSRGO: LD A,23 + CALL OSWRCH + LD A,1 + CALL OSWRCH + LD A,C + LD B,8 +CSRGO1: CALL OSWRCH + XOR A + DJNZ CSRGO1 + JR XEQGO1 +; ;LINE x1,y1,x2,y2 ; LINE: CALL EXPRI diff --git a/src/EXEC.Z80 b/src/EXEC.Z80 index 75d532b..6264ef1 100644 --- a/src/EXEC.Z80 +++ b/src/EXEC.Z80 @@ -10,7 +10,7 @@ ; ;VERSION 2.1, 22-01-1984 ;VERSION 3.1, 11-06-1987 -;VERSION 5.0, 16-06-2024 +;VERSION 5.0, 12-07-2024 ; GLOBAL XEQ GLOBAL RUN0 @@ -58,6 +58,8 @@ EXTRN BYE EXTRN NXT EXTRN NLIST + EXTRN CSRON + EXTRN CSROFF ; EXTRN OSWRCH EXTRN OSLINE @@ -358,6 +360,16 @@ CLI: CALL EXPRS CALL OSCLI JR XEQ ; +EXTRAS: CP TELSE-TCMD + JR Z,REM ;ELSE + CP TERROR-TCMD + JR Z,THROW ;ERROR + CP TLINE-TCMD + JP Z,LINE ;LINE + CP TOFF-TCMD + JP Z,CSROFF ;OFF + JP SYNTAX +; ;REM, * ; EXT: PUSH IY @@ -372,14 +384,6 @@ REM: PUSH IY POP IY JP XEQ0 ; -EXTRAS: CP TELSE-TCMD - JR Z,REM ;ELSE - CP TERROR-TCMD - JR Z,THROW ;ERROR - CP TLINE-TCMD - JP Z,LINE ;LINE - JP SYNTAX -; ;ERROR num,string$ ; THROW: CALL EXPRI @@ -833,7 +837,9 @@ XEQGO3: JP XEQ ;ON ERROR [LOCAL] statement [:statement...] ;ON ERROR [LOCAL] OFF ; -ON: CP TERROR +ON: CALL TERMQ + JP Z,CSRON + CP TERROR JR Z,ONERR ;"ON ERROR" CALL EXPRI LD A,(IY) @@ -1791,7 +1797,7 @@ ENDWH1: PUSH IY CLS: CALL CLRSCN XOR A LD (COUNT),A - JP XEQ + JR XEQGO5 ; ;STOP ; @@ -1808,7 +1814,7 @@ STOP: CALL TELL ;REPORT ; REPOR: CALL REPORT - JP XEQ + JR XEQGO5 ; ;CLEAR ; @@ -1821,7 +1827,7 @@ CLR: CALL CLEAR RESERR: INC IY LD A,2 CALL RESLOC - JP NZ,XEQ + JR NZ,XEQGO5 LD A,53 ;ON ERROR not LOCAL ERROR5: JP ERROR ; @@ -1830,7 +1836,7 @@ ERROR5: JP ERROR RESDAT: INC IY LD A,1 CALL RESLOC - JP NZ,XEQ + JR NZ,XEQGO5 LD A,54 ;'DATA not LOCAL' DEFB 21H NOLINE: LD A,41 ;'No such line' diff --git a/src/HOOK.Z80 b/src/HOOK.Z80 index 6b6df34..19549dc 100644 --- a/src/HOOK.Z80 +++ b/src/HOOK.Z80 @@ -19,6 +19,8 @@ GLOBAL TINT GLOBAL WAIT GLOBAL SYS + GLOBAL CSRON + GLOBAL CSROFF ; GLOBAL ADVAL GLOBAL POINT @@ -55,6 +57,8 @@ MODEFN: WIDFN: WAIT: SYS: +CSRON: +CSROFF: XOR A CALL EXTERR DEFM 'Sorry'