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
|
||||
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 Acorn Z80 Second Processor edition (in principle: the source files are on an 8" floppy!)
|
||||
the blue box are used to build the generic CP/M edition. The files in the red box are used
|
||||
to build the Acorn Z80 Second Processor edition.
|
||||
|
||||
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.
|
||||
+7
-6
@@ -50,17 +50,18 @@ New features in BBC BASIC (Z80) version 5.00, June 2024:
|
||||
|
||||
4.1 Bit-shifts <<, >>, >>>
|
||||
4.2 Floating-point indirection (|)
|
||||
4.3 RETURNed parameters from FN/PROC
|
||||
4.4 Compound assignment (+=, -=, *=, /= etc.)
|
||||
4.5 Assigning to a sub-string: LEFT$()=, MID$()= , RIGHT$()=
|
||||
4.6 Hooks for CIRCLE,ELLIPSE,FILL,LINE,MOUSE,ORIGIN,RECTANGLE,TINT,SYS,WAIT
|
||||
4.7 Hooks for WIDTH function, TINT function, MODE function
|
||||
4.3 Additional VDU delimiter '|'
|
||||
4.4 RETURNed parameters from FN/PROC
|
||||
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
|
||||
|
||||
5. Extensions to Acorn's BASIC V, compatible with BB4W, BBCSDL and BBCTTY
|
||||
|
||||
5.1 EXIT REPEAT / WHILE / FOR [var]
|
||||
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.5 ELSE IF <condition> THEN; (trailing semicolon)
|
||||
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
|
||||
LD A,33
|
||||
BDOS1: CALL BDOS0 ;*
|
||||
JR NZ,CPMERR ;*
|
||||
OR A ;*
|
||||
RET ;*
|
||||
CPMERR: LD A,255 ;* CP/M 3
|
||||
CALL EXTERR ;* BDOS ERROR
|
||||
DEFM 'CP/M Error' ;*
|
||||
DEFB 0 ;*
|
||||
BDOS1: CALL BDOS0
|
||||
JR NZ,CPMERR
|
||||
OR A
|
||||
RET
|
||||
CPMERR: LD A,255
|
||||
CALL EXTERR
|
||||
DEFM 'CP/M Error'
|
||||
DEFB 0
|
||||
;
|
||||
BDOS0: PUSH BC
|
||||
PUSH DE
|
||||
@@ -456,8 +456,8 @@ BDOS0: PUSH BC
|
||||
PUSH IY
|
||||
LD C,A
|
||||
CALL BDOS
|
||||
INC H ;* TEST H
|
||||
DEC H ;* CP/M 3 ONLY
|
||||
INC H
|
||||
DEC H
|
||||
POP IY
|
||||
POP IX
|
||||
POP HL
|
||||
@@ -883,10 +883,10 @@ DIR1: CALL LTRAP
|
||||
LD HL,DSKBUF+1
|
||||
ADD HL,DE
|
||||
PUSH HL
|
||||
LD DE,8 ;**
|
||||
LD DE,8
|
||||
ADD HL,DE
|
||||
LD E,(HL) ;**
|
||||
INC HL ;**
|
||||
LD E,(HL)
|
||||
INC HL
|
||||
BIT 7,(HL) ;SYSTEM FILE?
|
||||
POP HL
|
||||
LD C,18
|
||||
@@ -899,13 +899,13 @@ DIR1: CALL LTRAP
|
||||
ADD A,'A'
|
||||
CALL OSWRCH
|
||||
LD B,8
|
||||
LD A,' ' ;**
|
||||
BIT 7,E ;** READ ONLY?
|
||||
JR Z,DIR3 ;**
|
||||
LD A,'*' ;**
|
||||
LD A,' '
|
||||
BIT 7,E ;READ ONLY?
|
||||
JR Z,DIR3
|
||||
LD A,'*'
|
||||
DIR3: CALL CPTEXT
|
||||
LD B,3
|
||||
LD A,' ' ;**
|
||||
LD A,' '
|
||||
CALL SPTEXT
|
||||
POP BC
|
||||
DJNZ DIR2
|
||||
@@ -1046,11 +1046,11 @@ COMDS: DEFM 'BY'
|
||||
; B = number of characters to print
|
||||
; Destroys: A,B,H,L,F
|
||||
;
|
||||
CPTEXT: PUSH AF ;**
|
||||
CPTEXT: PUSH AF
|
||||
LD A,':'
|
||||
CALL OSWRCH
|
||||
POP AF ;**
|
||||
SPTEXT: CALL OSWRCH ;**
|
||||
POP AF
|
||||
SPTEXT: CALL OSWRCH
|
||||
PTEXT: LD A,(HL)
|
||||
AND 7FH
|
||||
INC HL
|
||||
|
||||
+14
-5
@@ -10,7 +10,7 @@
|
||||
;
|
||||
;VERSION 2.1, 22-01-1984
|
||||
;VERSION 3.1, 11-06-1987
|
||||
;VERSION 5.0, 10-06-2024
|
||||
;VERSION 5.0, 16-06-2024
|
||||
;
|
||||
GLOBAL XEQ
|
||||
GLOBAL RUN0
|
||||
@@ -1557,14 +1557,14 @@ IF: CALL EXPRI
|
||||
JR Z,IFNOT ;FALSE
|
||||
LD A,(IY)
|
||||
CP TTHEN
|
||||
JR NZ,XEQGO7
|
||||
JP NZ,XEQ
|
||||
IF0: INC IY ;SKIP "THEN"
|
||||
LD A,(IY)
|
||||
CP ';'
|
||||
JR Z,IF0
|
||||
IF1: CALL NXT
|
||||
CP TLINO
|
||||
JR NZ,XEQGO7 ;STATEMENT FOLLOWS
|
||||
JP NZ,XEQ ;STATEMENT FOLLOWS
|
||||
JP GOTO ;LINE NO. FOLLOWS
|
||||
;
|
||||
IFELSE: LD A,(IY)
|
||||
@@ -1968,13 +1968,17 @@ TRACE0: DEC HL
|
||||
TRACE1: LD (TRACEN),HL
|
||||
JR XEQGO1
|
||||
;
|
||||
;VDU expr,expr;....
|
||||
;VDU expr,expr;....[|]
|
||||
;
|
||||
VDU: CALL EXPRI
|
||||
EXX
|
||||
LD A,L
|
||||
CALL OSWRCH
|
||||
LD B,1
|
||||
VDU1: CALL OSWRCH
|
||||
DJNZ VDU1
|
||||
LD A,(IY)
|
||||
CP '|'
|
||||
JR Z,VDU4
|
||||
CP ','
|
||||
JR Z,VDU2
|
||||
CP ';'
|
||||
@@ -1986,6 +1990,11 @@ VDU3: CALL TERMQ
|
||||
JR NZ,VDU
|
||||
JR XEQGO1
|
||||
;
|
||||
VDU4: INC IY
|
||||
XOR A
|
||||
LD B,9
|
||||
JR VDU1
|
||||
;
|
||||
;CLOSE channel number
|
||||
;
|
||||
CLOSE: CALL CHANEL
|
||||
|
||||
+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 5beta5'
|
||||
VERMSG: DEFM 'BBC BASIC (Z80) Version 5beta6'
|
||||
DEFB CR
|
||||
DEFB LF
|
||||
NOTICE: DEFM '(C) Copyright R.T.Russell 2024'
|
||||
|
||||
+17
-32
@@ -4,7 +4,7 @@
|
||||
;(C) COPYRIGHT R.T.RUSSELL 1986-2024
|
||||
;VERSION 0.0, 26-10-1986
|
||||
;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:
|
||||
; 32 BIT SIGN-MAGNITUDE NORMALIZED MANTISSA
|
||||
@@ -387,16 +387,7 @@ IMUL: LD A,H
|
||||
JP NEGATE
|
||||
;
|
||||
IMUL1: DEC C
|
||||
EXX
|
||||
SLA E
|
||||
RL D
|
||||
EXX
|
||||
RL E
|
||||
RL D
|
||||
EXX
|
||||
ADC HL,HL
|
||||
EXX
|
||||
ADC HL,HL
|
||||
CALL SLA8
|
||||
JP P,IMUL1 ;NORMALISE
|
||||
EX AF,AF'
|
||||
RET M
|
||||
@@ -2177,30 +2168,12 @@ SQR2: INC A
|
||||
RET P
|
||||
SQRA: SLA C
|
||||
RL B
|
||||
INC C
|
||||
EXX
|
||||
RL C
|
||||
RL B
|
||||
EXX
|
||||
INC C
|
||||
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
|
||||
CALL SLA8
|
||||
CALL SLA8
|
||||
EXX
|
||||
JP NC,SQR1
|
||||
SQR3: OR A
|
||||
@@ -2230,6 +2203,18 @@ SQRB: ADD HL,HL
|
||||
DEC C
|
||||
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)
|
||||
CP '9'+1
|
||||
CCF
|
||||
|
||||
Binary file not shown.
Reference in new issue
Block a user