v5beta6: Added Acorn Z80 edition
This commit is contained in:
1 parent
6bc386b76b
commit
efc55d3fd7
12 files changed
+1931
-67
No files matched your search
@@ -10,8 +10,8 @@ More details of the features added in version 5.00 can be found in the file WHAT
|
|||||||
|
|
||||||
The files in green constitute the generic BBC BASIC interpreter which is shared by all the
|
The files in green constitute the generic BBC BASIC interpreter which is shared by all the
|
||||||
editions, it (just!) fits in 16 Kbytes so could be held in a ROM of this size. The files in
|
editions, it (just!) fits in 16 Kbytes so could be held in a ROM of this size. The files in
|
||||||
the blue box are used to build the CP/M edition. The files in the red box are used to build
|
the blue box are used to build the generic CP/M edition. The files in the red box are used
|
||||||
the Acorn Z80 Second Processor edition (in principle: the source files are on an 8" floppy!)
|
to build the Acorn Z80 Second Processor edition.
|
||||||
|
|
||||||
Note that the name 'BBC BASIC' is used by permission of the British Broadcasting Corporation
|
Note that the name 'BBC BASIC' is used by permission of the British Broadcasting Corporation
|
||||||
and is not transferrable to a derived or forked work.
|
and is not transferrable to a derived or forked work.
|
||||||
+7
-6
@@ -50,17 +50,18 @@ New features in BBC BASIC (Z80) version 5.00, June 2024:
|
|||||||
|
|
||||||
4.1 Bit-shifts <<, >>, >>>
|
4.1 Bit-shifts <<, >>, >>>
|
||||||
4.2 Floating-point indirection (|)
|
4.2 Floating-point indirection (|)
|
||||||
4.3 RETURNed parameters from FN/PROC
|
4.3 Additional VDU delimiter '|'
|
||||||
4.4 Compound assignment (+=, -=, *=, /= etc.)
|
4.4 RETURNed parameters from FN/PROC
|
||||||
4.5 Assigning to a sub-string: LEFT$()=, MID$()= , RIGHT$()=
|
4.5 Compound assignment (+=, -=, *=, /= etc.)
|
||||||
4.6 Hooks for CIRCLE,ELLIPSE,FILL,LINE,MOUSE,ORIGIN,RECTANGLE,TINT,SYS,WAIT
|
4.6 Assigning to a sub-string: LEFT$()=, MID$()= , RIGHT$()=
|
||||||
4.7 Hooks for WIDTH function, TINT function, MODE function
|
4.7 Hooks for CIRCLE,ELLIPSE,FILL,LINE,MOUSE,ORIGIN,RECTANGLE,SYS,TINT,WAIT
|
||||||
|
4.8 Hooks for MODE function, TINT function, WIDTH function
|
||||||
|
|
||||||
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 (unsigned 8-bit) 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)
|
||||||
5.6 == synonymous with = in comparisons
|
5.6 == synonymous with = in comparisons
|
||||||
|
|||||||
Binary file not shown.
@@ -0,0 +1,13 @@
|
|||||||
|
z80asm main/rmf
|
||||||
|
z80asm exec/rmf
|
||||||
|
z80asm eval/rmf
|
||||||
|
z80asm asmb/rmf
|
||||||
|
z80asm math/rmf
|
||||||
|
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
|
||||||
|
hexbin bbctube
|
||||||
|
era bbctube.hex
|
||||||
|
ren bbctube.com=bbctube.bin
|
||||||
Binary file not shown.
+737
@@ -0,0 +1,737 @@
|
|||||||
|
TITLE COPYRIGHT (C) R.T.RUSSELL 1983-2024
|
||||||
|
;
|
||||||
|
;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, 16-06-2024
|
||||||
|
;
|
||||||
|
OSWRCH EQU 0FFEEH
|
||||||
|
OSWORD EQU 0FFF1H
|
||||||
|
OSBYTE EQU 0FFF4H
|
||||||
|
;
|
||||||
|
ESC EQU 1BH
|
||||||
|
TBY EQU 0FH
|
||||||
|
TTO EQU 0B8H
|
||||||
|
TFILL EQU 03H
|
||||||
|
;
|
||||||
|
EXTRN ITEMI
|
||||||
|
EXTRN EXPRI
|
||||||
|
EXTRN COMMA
|
||||||
|
EXTRN TERMQ
|
||||||
|
EXTRN BRAKET
|
||||||
|
EXTRN EXTERR
|
||||||
|
EXTRN STOREN
|
||||||
|
EXTRN TRAP
|
||||||
|
EXTRN VAR
|
||||||
|
EXTRN NXT
|
||||||
|
EXTRN XEQ
|
||||||
|
;
|
||||||
|
EXTRN ACCS
|
||||||
|
EXTRN COUNT
|
||||||
|
EXTRN WIDTH
|
||||||
|
EXTRN SCRAP
|
||||||
|
;
|
||||||
|
GLOBAL OSCALL
|
||||||
|
GLOBAL CLRSCN
|
||||||
|
GLOBAL PUTCSR
|
||||||
|
GLOBAL GETCSR
|
||||||
|
GLOBAL PUTIME
|
||||||
|
GLOBAL GETIME
|
||||||
|
GLOBAL OSKEY
|
||||||
|
;
|
||||||
|
GLOBAL CLG
|
||||||
|
GLOBAL MOVE
|
||||||
|
GLOBAL DRAW
|
||||||
|
GLOBAL PLOT
|
||||||
|
GLOBAL MODE
|
||||||
|
GLOBAL COLOUR
|
||||||
|
GLOBAL GCOL
|
||||||
|
GLOBAL ADVAL
|
||||||
|
GLOBAL SOUND
|
||||||
|
GLOBAL ENVEL
|
||||||
|
GLOBAL POINT
|
||||||
|
;
|
||||||
|
GLOBAL CIRCLE
|
||||||
|
GLOBAL ELLIPS
|
||||||
|
GLOBAL FILL
|
||||||
|
GLOBAL MOUSE
|
||||||
|
GLOBAL ORIGIN
|
||||||
|
GLOBAL RECTAN
|
||||||
|
GLOBAL LINE
|
||||||
|
GLOBAL TINT
|
||||||
|
GLOBAL WAIT
|
||||||
|
GLOBAL SYS
|
||||||
|
;
|
||||||
|
GLOBAL PUTIMS
|
||||||
|
GLOBAL GETIMS
|
||||||
|
GLOBAL TINTFN
|
||||||
|
GLOBAL MODEFN
|
||||||
|
GLOBAL WIDFN
|
||||||
|
;
|
||||||
|
;GETIME - Read elapsed-time clock.
|
||||||
|
; Outputs: DEHL = elapsed time (centiseconds)
|
||||||
|
; Destroys: A,D,E,H,L,F
|
||||||
|
;
|
||||||
|
GETIME: LD A,1
|
||||||
|
LD HL,SCRAP
|
||||||
|
CALL OSWORD
|
||||||
|
LD HL,SCRAP
|
||||||
|
LD E,(HL)
|
||||||
|
INC HL
|
||||||
|
LD D,(HL)
|
||||||
|
INC HL
|
||||||
|
LD A,(HL)
|
||||||
|
INC HL
|
||||||
|
LD H,(HL)
|
||||||
|
LD L,A
|
||||||
|
EX DE,HL
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
;GETIMS - Read real-time clock as string.
|
||||||
|
; Outputs: TIME$ in string accumulator
|
||||||
|
; E = string length (25)
|
||||||
|
; Destroys: A,B,C,D,E,H,L,F
|
||||||
|
;
|
||||||
|
GETIMS: LD A,14
|
||||||
|
LD HL,SCRAP
|
||||||
|
LD (HL),0
|
||||||
|
CALL OSWORD
|
||||||
|
LD HL,SCRAP
|
||||||
|
LD DE,ACCS
|
||||||
|
LD A,(HL)
|
||||||
|
CP E
|
||||||
|
RET Z
|
||||||
|
LD BC,25
|
||||||
|
LDIR
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
;
|
||||||
|
;PUTIME - Load elapsed-time clock.
|
||||||
|
; Inputs: DEHL = time to load (centiseconds)
|
||||||
|
; Destroys: A,D,E,H,L,F
|
||||||
|
;
|
||||||
|
PUTIME: PUSH IX
|
||||||
|
LD IX,SCRAP
|
||||||
|
LD (IX+0),L
|
||||||
|
LD (IX+1),H
|
||||||
|
LD (IX+2),E
|
||||||
|
LD (IX+3),D
|
||||||
|
LD A,2
|
||||||
|
LD HL,SCRAP
|
||||||
|
CALL OSWORD
|
||||||
|
POP IX
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
;PUTIMS - Wtite real-time clock as string.
|
||||||
|
; Inputs: string in string accumulator
|
||||||
|
; E = string length
|
||||||
|
; Destroys: A,B,C,D,E,H,L,F
|
||||||
|
;
|
||||||
|
PUTIMS: LD A,E ;Length
|
||||||
|
CP 26
|
||||||
|
RET NC
|
||||||
|
LD B,0
|
||||||
|
LD C,A
|
||||||
|
LD DE,SCRAP+1
|
||||||
|
LD HL,ACCS
|
||||||
|
LDIR
|
||||||
|
LD HL,SCRAP
|
||||||
|
LD (HL),A
|
||||||
|
LD A,15
|
||||||
|
JP OSWORD
|
||||||
|
;
|
||||||
|
;
|
||||||
|
;CLRSCN - Clear screen.
|
||||||
|
; Destroys: A,D,E,H,L,F
|
||||||
|
;
|
||||||
|
CLRSCN: LD A,0CH
|
||||||
|
JP OSWRCH
|
||||||
|
;
|
||||||
|
;
|
||||||
|
;OSKEY - Sample keyboard with specified wait.
|
||||||
|
; Inputs: HL = Time to wait (centiseconds)
|
||||||
|
; Outputs: Carry reset indicates time-out.
|
||||||
|
; If carry set, A = character typed.
|
||||||
|
; Destroys: A,D,E,H,L,F
|
||||||
|
;
|
||||||
|
OSKEY: LD A,129
|
||||||
|
CALL OSBYTE
|
||||||
|
LD A,H
|
||||||
|
OR A
|
||||||
|
RET NZ ;TIME-OUT, CARRY RESET
|
||||||
|
LD A,L
|
||||||
|
SCF
|
||||||
|
RET ;NORMAL, CARRY SET
|
||||||
|
;
|
||||||
|
;PUTCSR - Move cursor to specified position.
|
||||||
|
; Inputs: DE = horizontal position (LHS=0)
|
||||||
|
; HL = vertical position (TOP=0)
|
||||||
|
; Destroys: A,D,E,H,L,F
|
||||||
|
;
|
||||||
|
PUTCSR: LD A,1FH
|
||||||
|
CALL OSWRCH
|
||||||
|
LD A,E
|
||||||
|
CALL OSWRCH
|
||||||
|
LD A,L
|
||||||
|
JP OSWRCH
|
||||||
|
;
|
||||||
|
;GETCSR - Return cursor coordinates.
|
||||||
|
; Outputs: DE = X coordinate (POS)
|
||||||
|
; HL = Y coordinate (VPOS)
|
||||||
|
; Destroys: A,D,E,H,L,F
|
||||||
|
;
|
||||||
|
GETCSR: LD A,134
|
||||||
|
CALL OSBYTE
|
||||||
|
LD E,L
|
||||||
|
LD L,H
|
||||||
|
LD D,0
|
||||||
|
LD H,D
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
;POINT - var=POINT(x,y)
|
||||||
|
;
|
||||||
|
POINT: CALL EXPRI
|
||||||
|
EXX
|
||||||
|
PUSH HL
|
||||||
|
CALL CEXPRI
|
||||||
|
EXX
|
||||||
|
POP DE
|
||||||
|
CALL BRAKET
|
||||||
|
LD IX,SCRAP
|
||||||
|
LD (IX+0),E
|
||||||
|
LD (IX+1),D
|
||||||
|
LD (IX+2),L
|
||||||
|
LD (IX+3),H
|
||||||
|
LD HL,SCRAP
|
||||||
|
LD A,9
|
||||||
|
CALL OSWORD
|
||||||
|
LD A,(IX+4)
|
||||||
|
LD L,A
|
||||||
|
ADD A,1
|
||||||
|
SBC A,A
|
||||||
|
LD H,A
|
||||||
|
RETEXX: EXX
|
||||||
|
LD H,A
|
||||||
|
LD L,A
|
||||||
|
XOR A
|
||||||
|
LD C,A
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
;ADVAL - var=ADVAL(n)
|
||||||
|
;
|
||||||
|
ADVAL: CALL ITEMI
|
||||||
|
EXX
|
||||||
|
LD A,128
|
||||||
|
CALL OSBYTE
|
||||||
|
XOR A
|
||||||
|
JR RETEXX
|
||||||
|
;
|
||||||
|
;MODEFN - var=MODE
|
||||||
|
;
|
||||||
|
MODEFN: LD A,135
|
||||||
|
CALL OSBYTE
|
||||||
|
LD L,H
|
||||||
|
RETU8: XOR A
|
||||||
|
LD H,A
|
||||||
|
JR RETEXX
|
||||||
|
;
|
||||||
|
;WIDFN - var=WIDTH
|
||||||
|
;
|
||||||
|
WIDFN: LD A,(WIDTH)
|
||||||
|
LD L,A
|
||||||
|
JR RETU8
|
||||||
|
;
|
||||||
|
;ENVEL - ENVELOPE var,var,var,var,var,var,var,
|
||||||
|
; var,var,var,var,var,var,var
|
||||||
|
;
|
||||||
|
ENVEL: LD B,0
|
||||||
|
LD IX,SCRAP
|
||||||
|
PUSH BC
|
||||||
|
PUSH IX
|
||||||
|
ENVEL1: CALL EXPRI
|
||||||
|
EXX
|
||||||
|
POP IX
|
||||||
|
POP BC
|
||||||
|
LD (IX),L
|
||||||
|
LD A,B
|
||||||
|
CP 13
|
||||||
|
JR Z,ENVEL2
|
||||||
|
INC B
|
||||||
|
INC IX
|
||||||
|
PUSH BC
|
||||||
|
PUSH IX
|
||||||
|
CALL COMMA
|
||||||
|
JR ENVEL1
|
||||||
|
ENVEL2: LD HL,SCRAP
|
||||||
|
LD A,8
|
||||||
|
CALL OSWORD
|
||||||
|
JP XEQ
|
||||||
|
;
|
||||||
|
;SOUND - SOUND var,var,var,var
|
||||||
|
;
|
||||||
|
SOUND: LD B,0
|
||||||
|
LD IX,SCRAP
|
||||||
|
PUSH BC
|
||||||
|
PUSH IX
|
||||||
|
SOUND1: CALL EXPRI
|
||||||
|
EXX
|
||||||
|
POP IX
|
||||||
|
POP BC
|
||||||
|
LD (IX+0),L
|
||||||
|
LD (IX+1),H
|
||||||
|
INC IX
|
||||||
|
INC IX
|
||||||
|
INC B
|
||||||
|
INC B
|
||||||
|
LD A,B
|
||||||
|
CP 8
|
||||||
|
JR Z,SOUND2
|
||||||
|
PUSH BC
|
||||||
|
PUSH IX
|
||||||
|
CALL COMMA
|
||||||
|
JR SOUND1
|
||||||
|
SOUND2: LD HL,SCRAP
|
||||||
|
LD A,7
|
||||||
|
CALL OSWORD
|
||||||
|
JP XEQ
|
||||||
|
;
|
||||||
|
;MODE - MODE n
|
||||||
|
;
|
||||||
|
MODE: CALL EXPRI
|
||||||
|
XOR A
|
||||||
|
LD (COUNT),A
|
||||||
|
EXX
|
||||||
|
LD H,L
|
||||||
|
LD L,22
|
||||||
|
CALL WRCH2
|
||||||
|
JR XEQGO1
|
||||||
|
;
|
||||||
|
;CLG
|
||||||
|
;
|
||||||
|
CLG: LD A,16
|
||||||
|
CALL OSWRCH
|
||||||
|
JR XEQGO1
|
||||||
|
;
|
||||||
|
;ORIGIN x,y
|
||||||
|
;
|
||||||
|
ORIGIN: CALL EXPRI
|
||||||
|
EXX
|
||||||
|
PUSH HL
|
||||||
|
CALL CEXPRI
|
||||||
|
EXX
|
||||||
|
POP DE
|
||||||
|
LD C,29
|
||||||
|
CALL WRCH5
|
||||||
|
JR XEQGO1
|
||||||
|
;
|
||||||
|
;COLOUR n
|
||||||
|
;COLOUR n,p
|
||||||
|
;COLOUR n,r,g,b
|
||||||
|
;
|
||||||
|
COLOUR: CALL EXPRI ;n
|
||||||
|
EXX
|
||||||
|
LD A,(IY)
|
||||||
|
CP ','
|
||||||
|
JR Z,PALCOL
|
||||||
|
LD H,L
|
||||||
|
LD L,17
|
||||||
|
CALL WRCH2
|
||||||
|
JR XEQGO1
|
||||||
|
;
|
||||||
|
PALCOL: PUSH HL
|
||||||
|
CALL CEXPRI ;p or r
|
||||||
|
EXX
|
||||||
|
EX DE,HL
|
||||||
|
LD HL,0
|
||||||
|
LD A,(IY)
|
||||||
|
CP ','
|
||||||
|
JR NZ,PALET1
|
||||||
|
PUSH DE
|
||||||
|
CALL CEXPRI ;g
|
||||||
|
EXX
|
||||||
|
PUSH HL
|
||||||
|
CALL CEXPRI ;b
|
||||||
|
EXX
|
||||||
|
POP DE
|
||||||
|
POP BC
|
||||||
|
LD A,L
|
||||||
|
POP HL
|
||||||
|
LD D,C ;r
|
||||||
|
LD C,L ;n
|
||||||
|
LD L,E ;g
|
||||||
|
LD H,A ;b
|
||||||
|
LD E,16
|
||||||
|
PUSH BC
|
||||||
|
PALET1: POP BC
|
||||||
|
LD B,19
|
||||||
|
CALL WRCH6
|
||||||
|
JR XEQGO1
|
||||||
|
;
|
||||||
|
;GCOL [a,]b
|
||||||
|
;
|
||||||
|
GCOL: CALL EXPRI
|
||||||
|
EXX
|
||||||
|
LD E,0
|
||||||
|
LD A,(IY)
|
||||||
|
CP ','
|
||||||
|
JR NZ,GCOL0
|
||||||
|
PUSH HL
|
||||||
|
CALL CEXPRI
|
||||||
|
EXX
|
||||||
|
POP DE
|
||||||
|
GCOL0: LD H,L
|
||||||
|
LD L,E
|
||||||
|
LD D,18
|
||||||
|
CALL WRCH3 ;DLH
|
||||||
|
XEQGO1: JP XEQ
|
||||||
|
;
|
||||||
|
;LINE x1,y1,x2,y2
|
||||||
|
;
|
||||||
|
LINE: CALL EXPRI
|
||||||
|
EXX
|
||||||
|
PUSH HL
|
||||||
|
CALL EXPR3
|
||||||
|
EX (SP),HL ;HL <- x1, (SP) <- y2
|
||||||
|
PUSH BC
|
||||||
|
EX DE,HL
|
||||||
|
LD C,4
|
||||||
|
CALL VDU25
|
||||||
|
POP DE
|
||||||
|
POP HL
|
||||||
|
LD C,5
|
||||||
|
JR PLOT4A
|
||||||
|
;
|
||||||
|
;CIRCLE [FILL] x,y,r
|
||||||
|
;
|
||||||
|
CIRCLE: CP TFILL
|
||||||
|
PUSH AF
|
||||||
|
JR NZ,CIRCL0
|
||||||
|
INC IY
|
||||||
|
CIRCL0: CALL EXPRI
|
||||||
|
EXX
|
||||||
|
PUSH HL
|
||||||
|
CALL CEXPRI
|
||||||
|
EXX
|
||||||
|
PUSH HL
|
||||||
|
CALL CEXPRI
|
||||||
|
EXX
|
||||||
|
POP BC ;y
|
||||||
|
POP DE ;x
|
||||||
|
PUSH HL
|
||||||
|
LD L,C
|
||||||
|
LD H,B
|
||||||
|
LD C,4 ; PLOT 4 = MOVE
|
||||||
|
CALL VDU25
|
||||||
|
POP DE ;r
|
||||||
|
LD HL,0
|
||||||
|
POP AF
|
||||||
|
LD C,145 ; PLOT 145 = outline circle
|
||||||
|
JR NZ,PLOT4A
|
||||||
|
LD C,153 ; PLOT 153 = filled circle
|
||||||
|
PLOT4A: JR PLOT4
|
||||||
|
;
|
||||||
|
;ELLIPSE [FILL] x,y,a,b
|
||||||
|
;
|
||||||
|
ELLIPS: CP TFILL
|
||||||
|
PUSH AF
|
||||||
|
JR NZ,ELLIP0
|
||||||
|
INC IY
|
||||||
|
ELLIP0: CALL EXPRI
|
||||||
|
EXX
|
||||||
|
PUSH HL
|
||||||
|
CALL EXPR3
|
||||||
|
EX (SP),HL ;HL <- x, (SP) <- b
|
||||||
|
PUSH BC
|
||||||
|
EX DE,HL
|
||||||
|
LD C,4 ; PLOT 4 = Move absolute
|
||||||
|
CALL VDU25
|
||||||
|
POP DE ;a
|
||||||
|
PUSH DE
|
||||||
|
LD HL,0
|
||||||
|
LD C,L ; PLOT 0 - Move relative
|
||||||
|
CALL VDU25
|
||||||
|
POP DE ;a
|
||||||
|
XOR A
|
||||||
|
LD L,A
|
||||||
|
LD H,A
|
||||||
|
SBC HL,DE
|
||||||
|
EX DE,HL
|
||||||
|
POP HL ;b
|
||||||
|
POP AF
|
||||||
|
LD C,193 ; PLOT 193 = outline ellipse
|
||||||
|
JR NZ,PLOT4
|
||||||
|
LD C,201 ; PLOT 201 = filled ellipse
|
||||||
|
JR PLOT4
|
||||||
|
;
|
||||||
|
;MOVE [BY} x,y
|
||||||
|
;DRAW [BY] x,y
|
||||||
|
;PLOT [BY] [n,]x,y
|
||||||
|
;FILL [BY] x,y
|
||||||
|
;
|
||||||
|
MOVE: LD C,4
|
||||||
|
JR PLOT1
|
||||||
|
;
|
||||||
|
DRAW: LD C,5
|
||||||
|
JR PLOT1
|
||||||
|
;
|
||||||
|
FILL: LD C,133
|
||||||
|
JR PLOT1
|
||||||
|
;
|
||||||
|
PLOT: LD C,69
|
||||||
|
CP TBY
|
||||||
|
JR Z,PLOT1
|
||||||
|
CALL EXPRI
|
||||||
|
EXX
|
||||||
|
PUSH HL
|
||||||
|
CALL CEXPRI
|
||||||
|
EXX
|
||||||
|
LD A,(IY)
|
||||||
|
CP ','
|
||||||
|
JR Z,PLOT3
|
||||||
|
POP DE
|
||||||
|
LD C,69
|
||||||
|
JR PLOT4
|
||||||
|
;
|
||||||
|
PLOT1: CP TBY
|
||||||
|
JR NZ,PLOT2
|
||||||
|
INC IY
|
||||||
|
RES 2,C ;Change absolute to relative
|
||||||
|
PLOT2: PUSH BC
|
||||||
|
CALL EXPRI
|
||||||
|
EXX
|
||||||
|
PLOT3: PUSH HL
|
||||||
|
CALL CEXPRI
|
||||||
|
EXX
|
||||||
|
POP DE
|
||||||
|
POP BC
|
||||||
|
PLOT4: CALL VDU25
|
||||||
|
JP XEQ
|
||||||
|
;
|
||||||
|
;RECTANGLE [FILL] x,y,w[,h] [TO xnew,ynew]
|
||||||
|
;
|
||||||
|
RECTAN: CP TFILL
|
||||||
|
PUSH AF
|
||||||
|
JR NZ,RECT0
|
||||||
|
INC IY
|
||||||
|
RECT0: CALL EXPRI
|
||||||
|
EXX
|
||||||
|
PUSH HL
|
||||||
|
CALL CEXPRI
|
||||||
|
EXX
|
||||||
|
PUSH HL
|
||||||
|
CALL CEXPRI
|
||||||
|
EXX
|
||||||
|
PUSH HL
|
||||||
|
LD A,(IY)
|
||||||
|
CP ','
|
||||||
|
JR NZ,RECT1
|
||||||
|
CALL CEXPRI
|
||||||
|
EXX
|
||||||
|
RECT1: POP BC ;w
|
||||||
|
POP DE ;y
|
||||||
|
EX (SP),HL ;HL <- x, (SP) <- h
|
||||||
|
PUSH BC
|
||||||
|
EX DE,HL
|
||||||
|
LD C,4
|
||||||
|
CALL VDU25
|
||||||
|
LD A,(IY)
|
||||||
|
CP TTO
|
||||||
|
JR Z,RECTTO
|
||||||
|
POP DE ;w
|
||||||
|
POP HL ;h
|
||||||
|
POP AF
|
||||||
|
JR NZ,OUTLIN
|
||||||
|
LD C,97
|
||||||
|
JR PLOT4
|
||||||
|
;
|
||||||
|
;Block copy / move:
|
||||||
|
;
|
||||||
|
RECTTO: INC IY ; Bump over TO
|
||||||
|
CALL EXPRI
|
||||||
|
EXX
|
||||||
|
PUSH HL
|
||||||
|
CALL CEXPRI
|
||||||
|
EXX
|
||||||
|
POP BC ;newx
|
||||||
|
POP DE ;w
|
||||||
|
EX (SP),HL ;HL <- h, (SP) <- newy
|
||||||
|
PUSH BC
|
||||||
|
EX DE,HL
|
||||||
|
LD C,0
|
||||||
|
CALL VDU25
|
||||||
|
POP DE ;newx
|
||||||
|
POP HL ;newy
|
||||||
|
POP AF
|
||||||
|
LD C,190 ; PLOT 190 - Block copy
|
||||||
|
JR NZ,PLOT4B
|
||||||
|
DEC C ; PLOT 189 - Block move
|
||||||
|
PLOT4B: JR PLOT4
|
||||||
|
;
|
||||||
|
;Outline rectangle:
|
||||||
|
;
|
||||||
|
OUTLIN: LD C,9 ; PLOT 9 - draw relative
|
||||||
|
PUSH HL
|
||||||
|
LD HL,0
|
||||||
|
CALL VDU25 ; side 1
|
||||||
|
POP HL
|
||||||
|
PUSH DE
|
||||||
|
LD DE,0
|
||||||
|
CALL VDU25 ; side 2
|
||||||
|
POP DE
|
||||||
|
PUSH HL
|
||||||
|
XOR A
|
||||||
|
LD L,A
|
||||||
|
LD H,A
|
||||||
|
SBC HL,DE
|
||||||
|
EX DE,HL
|
||||||
|
LD L,A
|
||||||
|
LD H,A
|
||||||
|
CALL VDU25 ; side 3
|
||||||
|
POP DE
|
||||||
|
XOR A
|
||||||
|
LD L,A
|
||||||
|
LD H,A
|
||||||
|
SBC HL,DE
|
||||||
|
LD E,A
|
||||||
|
LD D,A
|
||||||
|
JR PLOT4B
|
||||||
|
;
|
||||||
|
;MOUSE x, y, b
|
||||||
|
;
|
||||||
|
MOUSE: LD A,128
|
||||||
|
LD HL,9
|
||||||
|
CALL OSBYTE
|
||||||
|
PUSH HL
|
||||||
|
LD A,128
|
||||||
|
LD HL,8
|
||||||
|
CALL OSBYTE
|
||||||
|
PUSH HL
|
||||||
|
LD A,128
|
||||||
|
LD HL,7
|
||||||
|
CALL OSBYTE
|
||||||
|
PUSH HL
|
||||||
|
CALL VAR
|
||||||
|
POP HL
|
||||||
|
CALL STOREI
|
||||||
|
CALL COMMA
|
||||||
|
CALL NXT
|
||||||
|
CALL VAR
|
||||||
|
POP HL
|
||||||
|
CALL STOREI
|
||||||
|
CALL COMMA
|
||||||
|
CALL NXT
|
||||||
|
CALL VAR
|
||||||
|
POP HL
|
||||||
|
CALL STOREI
|
||||||
|
XEQGO2: JP XEQ
|
||||||
|
;
|
||||||
|
;WAIT [n]
|
||||||
|
;
|
||||||
|
WAIT: CALL TERMQ
|
||||||
|
JR Z,XEQGO2
|
||||||
|
CALL EXPRI
|
||||||
|
EXX
|
||||||
|
LD B,H
|
||||||
|
LD C,L
|
||||||
|
CALL GETIME
|
||||||
|
ADD HL,BC
|
||||||
|
LD BC,0
|
||||||
|
EX DE,HL
|
||||||
|
ADC HL,BC
|
||||||
|
EX DE,HL
|
||||||
|
WAIT1: CALL TRAP
|
||||||
|
PUSH DE
|
||||||
|
PUSH HL
|
||||||
|
CALL GETIME
|
||||||
|
POP BC
|
||||||
|
OR A
|
||||||
|
SBC HL,BC
|
||||||
|
LD H,B
|
||||||
|
LD L,C
|
||||||
|
EX DE,HL
|
||||||
|
POP BC
|
||||||
|
SBC HL,BC
|
||||||
|
JR NC,XEQGO2
|
||||||
|
EX DE,HL
|
||||||
|
LD D,B
|
||||||
|
LD E,C
|
||||||
|
JR WAIT1
|
||||||
|
;
|
||||||
|
;OSCALL - Trap call to FFxx
|
||||||
|
;
|
||||||
|
OSCALL: POP HL ;DITCH RETURN ADDRESS
|
||||||
|
LD HL,OSRET
|
||||||
|
PUSH HL ;NEW RETURN ADDRESS
|
||||||
|
LD A,(IX+4) ;A%
|
||||||
|
LD E,(IX+20) ;E%
|
||||||
|
LD H,(IX+100) ;Y%
|
||||||
|
LD L,(IX+96) ;X%
|
||||||
|
JP (IY)
|
||||||
|
OSRET: PUSH AF
|
||||||
|
LD A,L ;F H L A
|
||||||
|
LD L,H ;| | | |
|
||||||
|
EXX ;| | | |
|
||||||
|
POP BC ;| | | |
|
||||||
|
LD H,A ;| | | |
|
||||||
|
LD L,B ;H L H' L'
|
||||||
|
LD A,C
|
||||||
|
EXX
|
||||||
|
LD H,A
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
VDU25: LD B,25
|
||||||
|
WRCH6: LD A,B
|
||||||
|
CALL OSWRCH
|
||||||
|
WRCH5: LD A,C
|
||||||
|
CALL OSWRCH
|
||||||
|
WRCH4: LD A,E
|
||||||
|
CALL OSWRCH
|
||||||
|
WRCH3: LD A,D
|
||||||
|
CALL OSWRCH
|
||||||
|
WRCH2: LD A,L
|
||||||
|
CALL OSWRCH
|
||||||
|
LD A,H
|
||||||
|
JP OSWRCH
|
||||||
|
;
|
||||||
|
EXPR3: CALL CEXPRI
|
||||||
|
EXX
|
||||||
|
PUSH HL
|
||||||
|
CALL CEXPRI
|
||||||
|
EXX
|
||||||
|
PUSH HL
|
||||||
|
CALL CEXPRI
|
||||||
|
EXX
|
||||||
|
POP BC ;x2
|
||||||
|
POP DE ;y1
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
CEXPRI: CALL COMMA
|
||||||
|
JP EXPRI
|
||||||
|
;
|
||||||
|
STOREI: BIT 7,A
|
||||||
|
JR NZ,EEK
|
||||||
|
BIT 6,A
|
||||||
|
JR NZ,EEK
|
||||||
|
EXX
|
||||||
|
LD HL,0
|
||||||
|
LD C,L
|
||||||
|
JP STOREN
|
||||||
|
;
|
||||||
|
EEK: LD A,50
|
||||||
|
CALL EXTERR
|
||||||
|
DEFB 13H ;'Bad '
|
||||||
|
DEFB 04H ;'MOUSE'
|
||||||
|
DEFB 20H
|
||||||
|
DEFB 15H ;'variable'
|
||||||
|
DEFB 0
|
||||||
|
;
|
||||||
|
TINT:
|
||||||
|
TINTFN:
|
||||||
|
SYS:
|
||||||
|
XOR A
|
||||||
|
CALL EXTERR
|
||||||
|
DEFM 'Sorry'
|
||||||
|
DEFB 0
|
||||||
|
;
|
||||||
|
END
|
||||||
|
|
||||||
+1119
File diff suppressed because it is too large.
Load diff
+21
-21
@@ -440,14 +440,14 @@ INCRDF: CALL INCSEC
|
|||||||
;
|
;
|
||||||
READ: CALL SETDMA
|
READ: CALL SETDMA
|
||||||
LD A,33
|
LD A,33
|
||||||
BDOS1: CALL BDOS0 ;*
|
BDOS1: CALL BDOS0
|
||||||
JR NZ,CPMERR ;*
|
JR NZ,CPMERR
|
||||||
OR A ;*
|
OR A
|
||||||
RET ;*
|
RET
|
||||||
CPMERR: LD A,255 ;* CP/M 3
|
CPMERR: LD A,255
|
||||||
CALL EXTERR ;* BDOS ERROR
|
CALL EXTERR
|
||||||
DEFM 'CP/M Error' ;*
|
DEFM 'CP/M Error'
|
||||||
DEFB 0 ;*
|
DEFB 0
|
||||||
;
|
;
|
||||||
BDOS0: PUSH BC
|
BDOS0: PUSH BC
|
||||||
PUSH DE
|
PUSH DE
|
||||||
@@ -456,8 +456,8 @@ BDOS0: PUSH BC
|
|||||||
PUSH IY
|
PUSH IY
|
||||||
LD C,A
|
LD C,A
|
||||||
CALL BDOS
|
CALL BDOS
|
||||||
INC H ;* TEST H
|
INC H
|
||||||
DEC H ;* CP/M 3 ONLY
|
DEC H
|
||||||
POP IY
|
POP IY
|
||||||
POP IX
|
POP IX
|
||||||
POP HL
|
POP HL
|
||||||
@@ -883,10 +883,10 @@ DIR1: CALL LTRAP
|
|||||||
LD HL,DSKBUF+1
|
LD HL,DSKBUF+1
|
||||||
ADD HL,DE
|
ADD HL,DE
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD DE,8 ;**
|
LD DE,8
|
||||||
ADD HL,DE
|
ADD HL,DE
|
||||||
LD E,(HL) ;**
|
LD E,(HL)
|
||||||
INC HL ;**
|
INC HL
|
||||||
BIT 7,(HL) ;SYSTEM FILE?
|
BIT 7,(HL) ;SYSTEM FILE?
|
||||||
POP HL
|
POP HL
|
||||||
LD C,18
|
LD C,18
|
||||||
@@ -899,13 +899,13 @@ DIR1: CALL LTRAP
|
|||||||
ADD A,'A'
|
ADD A,'A'
|
||||||
CALL OSWRCH
|
CALL OSWRCH
|
||||||
LD B,8
|
LD B,8
|
||||||
LD A,' ' ;**
|
LD A,' '
|
||||||
BIT 7,E ;** READ ONLY?
|
BIT 7,E ;READ ONLY?
|
||||||
JR Z,DIR3 ;**
|
JR Z,DIR3
|
||||||
LD A,'*' ;**
|
LD A,'*'
|
||||||
DIR3: CALL CPTEXT
|
DIR3: CALL CPTEXT
|
||||||
LD B,3
|
LD B,3
|
||||||
LD A,' ' ;**
|
LD A,' '
|
||||||
CALL SPTEXT
|
CALL SPTEXT
|
||||||
POP BC
|
POP BC
|
||||||
DJNZ DIR2
|
DJNZ DIR2
|
||||||
@@ -1046,11 +1046,11 @@ COMDS: DEFM 'BY'
|
|||||||
; B = number of characters to print
|
; B = number of characters to print
|
||||||
; Destroys: A,B,H,L,F
|
; Destroys: A,B,H,L,F
|
||||||
;
|
;
|
||||||
CPTEXT: PUSH AF ;**
|
CPTEXT: PUSH AF
|
||||||
LD A,':'
|
LD A,':'
|
||||||
CALL OSWRCH
|
CALL OSWRCH
|
||||||
POP AF ;**
|
POP AF
|
||||||
SPTEXT: CALL OSWRCH ;**
|
SPTEXT: CALL OSWRCH
|
||||||
PTEXT: LD A,(HL)
|
PTEXT: LD A,(HL)
|
||||||
AND 7FH
|
AND 7FH
|
||||||
INC HL
|
INC HL
|
||||||
|
|||||||
+14
-5
@@ -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, 10-06-2024
|
;VERSION 5.0, 16-06-2024
|
||||||
;
|
;
|
||||||
GLOBAL XEQ
|
GLOBAL XEQ
|
||||||
GLOBAL RUN0
|
GLOBAL RUN0
|
||||||
@@ -1557,14 +1557,14 @@ IF: CALL EXPRI
|
|||||||
JR Z,IFNOT ;FALSE
|
JR Z,IFNOT ;FALSE
|
||||||
LD A,(IY)
|
LD A,(IY)
|
||||||
CP TTHEN
|
CP TTHEN
|
||||||
JR NZ,XEQGO7
|
JP NZ,XEQ
|
||||||
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
|
||||||
JR NZ,XEQGO7 ;STATEMENT FOLLOWS
|
JP NZ,XEQ ;STATEMENT FOLLOWS
|
||||||
JP GOTO ;LINE NO. FOLLOWS
|
JP GOTO ;LINE NO. FOLLOWS
|
||||||
;
|
;
|
||||||
IFELSE: LD A,(IY)
|
IFELSE: LD A,(IY)
|
||||||
@@ -1968,13 +1968,17 @@ TRACE0: DEC HL
|
|||||||
TRACE1: LD (TRACEN),HL
|
TRACE1: LD (TRACEN),HL
|
||||||
JR XEQGO1
|
JR XEQGO1
|
||||||
;
|
;
|
||||||
;VDU expr,expr;....
|
;VDU expr,expr;....[|]
|
||||||
;
|
;
|
||||||
VDU: CALL EXPRI
|
VDU: CALL EXPRI
|
||||||
EXX
|
EXX
|
||||||
LD A,L
|
LD A,L
|
||||||
CALL OSWRCH
|
LD B,1
|
||||||
|
VDU1: CALL OSWRCH
|
||||||
|
DJNZ VDU1
|
||||||
LD A,(IY)
|
LD A,(IY)
|
||||||
|
CP '|'
|
||||||
|
JR Z,VDU4
|
||||||
CP ','
|
CP ','
|
||||||
JR Z,VDU2
|
JR Z,VDU2
|
||||||
CP ';'
|
CP ';'
|
||||||
@@ -1986,6 +1990,11 @@ VDU3: CALL TERMQ
|
|||||||
JR NZ,VDU
|
JR NZ,VDU
|
||||||
JR XEQGO1
|
JR XEQGO1
|
||||||
;
|
;
|
||||||
|
VDU4: INC IY
|
||||||
|
XOR A
|
||||||
|
LD B,9
|
||||||
|
JR VDU1
|
||||||
|
;
|
||||||
;CLOSE channel number
|
;CLOSE channel number
|
||||||
;
|
;
|
||||||
CLOSE: CALL CHANEL
|
CLOSE: CALL CHANEL
|
||||||
|
|||||||
+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 5beta5'
|
VERMSG: DEFM 'BBC BASIC (Z80) Version 5beta6'
|
||||||
DEFB CR
|
DEFB CR
|
||||||
DEFB LF
|
DEFB LF
|
||||||
NOTICE: DEFM '(C) Copyright R.T.Russell 2024'
|
NOTICE: DEFM '(C) Copyright R.T.Russell 2024'
|
||||||
|
|||||||
+17
-32
@@ -4,7 +4,7 @@
|
|||||||
;(C) COPYRIGHT R.T.RUSSELL 1986-2024
|
;(C) COPYRIGHT R.T.RUSSELL 1986-2024
|
||||||
;VERSION 0.0, 26-10-1986
|
;VERSION 0.0, 26-10-1986
|
||||||
;VERSION 0.1, 14-12-1988 (BUG FIX)
|
;VERSION 0.1, 14-12-1988 (BUG FIX)
|
||||||
;VERSION 5.0, 21-05-2024 (SHIFTS ADDED)
|
;VERSION 5.0, 16-06-2024 (SHIFTS ADDED)
|
||||||
;
|
;
|
||||||
;BINARY FLOATING POINT REPRESENTATION:
|
;BINARY FLOATING POINT REPRESENTATION:
|
||||||
; 32 BIT SIGN-MAGNITUDE NORMALIZED MANTISSA
|
; 32 BIT SIGN-MAGNITUDE NORMALIZED MANTISSA
|
||||||
@@ -387,16 +387,7 @@ IMUL: LD A,H
|
|||||||
JP NEGATE
|
JP NEGATE
|
||||||
;
|
;
|
||||||
IMUL1: DEC C
|
IMUL1: DEC C
|
||||||
EXX
|
CALL SLA8
|
||||||
SLA E
|
|
||||||
RL D
|
|
||||||
EXX
|
|
||||||
RL E
|
|
||||||
RL D
|
|
||||||
EXX
|
|
||||||
ADC HL,HL
|
|
||||||
EXX
|
|
||||||
ADC HL,HL
|
|
||||||
JP P,IMUL1 ;NORMALISE
|
JP P,IMUL1 ;NORMALISE
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
RET M
|
RET M
|
||||||
@@ -2177,30 +2168,12 @@ SQR2: INC A
|
|||||||
RET P
|
RET P
|
||||||
SQRA: SLA C
|
SQRA: SLA C
|
||||||
RL B
|
RL B
|
||||||
|
INC C
|
||||||
EXX
|
EXX
|
||||||
RL C
|
RL C
|
||||||
RL B
|
RL B
|
||||||
EXX
|
CALL SLA8
|
||||||
INC C
|
CALL SLA8
|
||||||
SLA E
|
|
||||||
RL D
|
|
||||||
EXX
|
|
||||||
RL E
|
|
||||||
RL D
|
|
||||||
EXX
|
|
||||||
ADC HL,HL
|
|
||||||
EXX
|
|
||||||
ADC HL,HL
|
|
||||||
EXX
|
|
||||||
SLA E
|
|
||||||
RL D
|
|
||||||
EXX
|
|
||||||
RL E
|
|
||||||
RL D
|
|
||||||
EXX
|
|
||||||
ADC HL,HL
|
|
||||||
EXX
|
|
||||||
ADC HL,HL
|
|
||||||
EXX
|
EXX
|
||||||
JP NC,SQR1
|
JP NC,SQR1
|
||||||
SQR3: OR A
|
SQR3: OR A
|
||||||
@@ -2230,6 +2203,18 @@ SQRB: ADD HL,HL
|
|||||||
DEC C
|
DEC C
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
SLA8: EXX
|
||||||
|
SLA E
|
||||||
|
RL D
|
||||||
|
EXX
|
||||||
|
RL E
|
||||||
|
RL D
|
||||||
|
EXX
|
||||||
|
ADC HL,HL
|
||||||
|
EXX
|
||||||
|
ADC HL,HL
|
||||||
|
RET
|
||||||
|
;
|
||||||
DIGITQ: LD A,(IX)
|
DIGITQ: LD A,(IX)
|
||||||
CP '9'+1
|
CP '9'+1
|
||||||
CCF
|
CCF
|
||||||
|
|||||||
Binary file not shown.
Reference in new issue
Block a user