*/beginfile PROCS10_asm
; --------------------------------------------------------------
; PROCS10_asm - BASIC procedure and function definitions
;	     - last modified 06/09/95
; QDOS-Amiga sources by Rainer Kowallik
;  ...latest changes by Mark J Swift
; --------------------------------------------------------------
BAS_DLINe:
	CMPA.L	A5,A3
	BGE	L0750E
	ST	D7
	JSR	L07E30(PC)	;*/undomodify BSR L07E30
	BEQ.S	L07476
	ST	$00B8(A6)
L07474	RTS
L07476	BSR.S	L0747A
	BRA.S	L07492
L0747A	MOVEQ	#$02,D1
	JMP	L065E8(PC)	;*/undomodify BRA L065E8
BAS_LIST:
	BSR.S	L0747A
	BLT.S	L07474
L07484	ST	BV_PRINT(A6)	;Print from prtok
				;($ff) or leave in buffer
	CLR.W	$BA(A6)
	CMPA.L	A5,A3
	BGE	L07512
L07492	MOVE.L	A5,-(A7)
L07494	CMPA.L	(A7),A3
	BGE.S	L074DE
	BSR.S	L07452
	BNE.S	L074A0
	MOVEQ	#0,D4
	BRA.S	L074A6
L074A0	BSR.S	L074F0
	BNE.S	L074DA
	MOVE.W	D1,D4
L074A6	SUBQ.B	#5,D5
	BEQ.S	L074B6
	ADDQ.B	#5,D5
	MOVE.W	D4,D6
	BNE.S	L074CE
	TST.B	D7
	BNE.S	L07494
	BRA.S	L074BE
L074B6	CMPA.L	(A7),A3
	BGE.S	L074BE
	BSR.S	L07452
	BNE.S	L074C4
L074BE	MOVE.W	#$7FFF,D6
	BRA.S	L074CE
L074C4	BSR.S	L074F0
	BNE.S	L074DA
	MOVE.W	D1,D6
	CMP.W	D4,D6
	BLT.S	L074DA
L074CE	BSR.S	TKN_LIST
	CMPI.B	#$01,D5
	BEQ.S	L07494
	TST.B	D5
	BEQ.S	L074DE
L074DA	MOVEQ	#-$0F,D0
	BRA.S	L074EC
L074DE	TST.B	D7
	BEQ.S	L074EA
	MOVEQ	#0,D2
	MOVEQ	#0,D5
	JSR	L08FE6(PC)	;*/undomodify BSR L08FE6
L074EA	MOVEQ	#0,D0
L074EC	MOVEA.L	(A7)+,A5
	RTS
L074F0	MOVEA.L	A3,A5
	JSR	L05EC8(PC)	;*/undomodify BSR L05EC8
	BNE.S	L07510
	MOVEQ	#$03,D0
	JSR	L05996(PC)	;*/undomodify BSR L05996
	BNE.S	L07510
	ADDQ.L	#2,BV_RIP(A6)	;arith stack
	MOVE.W	0(A6,A1.L),D1
	BGT.S	L0750E
	MOVEQ	#-15,D0		;Bad parameter
	RTS
L0750E	MOVEQ	#0,D0
L07510	RTS
L07512	MOVEQ	#0,D4
	MOVE.W	#$7FFF,D6
TKN_LIST ;Convert precompiled BASIC to ASCII text
	MOVEA.L	BV_PFBAS(A6),A4	;program file
TKN_LST2 CLR.L	BV_LINUM(A6)	;current line #
	TST.W	D4
	BEQ.S	L07530
	MOVE.L	A0,-(A7)
	JSR	L09FBE(PC)	;*/undomodify BSR L09FBE
	MOVEA.L	(A7)+,A0
	MOVE.W	D2,BV_LINUM(A6)	;current line #
L07530	TST.B	D7
	BNE.S	L0753C
RLOC16	movea.l	#(TB_LIST-ORGN),a2 ;*/modify LEA TB_LIST(PC),A2
	JMP	L090B6(PC)	;*/undomodify BRA L090B6
L0753C	CMP.W	4(A6,A4.L),D6
	BLT.S	L0750E
	MOVE.L	A4,-(A7)
	MOVE.W	BV_LENGTH(A6),-(A7) ;current length
L07548	CMPA.L	BV_PFP(A6),A4	;program running ptr
	BGE.S	L07588
	MOVE.W	0(A6,A4.L),D1
	ADDQ.W	#2,A4
	ADD.W	D1,BV_LENGTH(A6)	;current length
	ADDA.W	BV_LENGTH(A6),A4	;current length
	CMP.W	$04(A6,A4.L),D6
	BGE.S	L07548
	MOVE.W	0(A6,A4.L),D1
	ADD.W	BV_LENGTH(A6),D1	;current length
	SUB.W	(A7)+,D1
	MOVE.W	D1,0(A6,A4.L)
	MOVEA.L	(A7)+,A2
L07572	MOVE.W	0(A6,A4.L),0(A6,A2.L)
	ADDQ.W	#2,A4
	ADDQ.W	#2,A2
	CMPA.L	BV_PFP(A6),A4	;program running ptr
	BLT.S	L07572
	MOVE.L	A2,BV_PFP(A6)	;program running ptr
L07586	BRA.S	L0750E
L07588	ADDQ.W	#2,A7
	MOVE.L	(A7)+,BV_PFP(A6)	;program running ptr
	BRA.S	L07586
; --------------------------------------------------------------
;*/beginoverlay

; fix for MRUN, LOAD and LRUN. If command channel is not #0,
; do a close before opening to a different input channel.

L07E20fix:
	move.l	BV_COMCH(a6),d0	;BASICs Command channel
	beq.s	L07E20o

	move.l	d0,a0
	moveq	#2,d0		;IO.CLOSE close channel
	trap	#2

	clr.l	BV_COMCH(a6)	;Set Command channel to #0

L07E20o:
	moveq	#$01,d4
	jsr	L069C4(pc)
	bne.s	L07E2Eo
	move.l	a0,BV_COMCH(a6)	;Command channel
	moveq	#0,d0

L07E2Eo:
	rts

;*/removecode	BAS_MODE:
;*/removecode		JSR	GET_INT2(PC)
;*/removecode		BNE.S	L075AC
;*/removecode		ADDQ.L	#2,BV_RIP(A6)
;*/removecode		MOVE.W	#$0108,D1
;*/removecode		AND.W D1,0(A6,A1.L)
;*/removecode		BNE.S	L075A6
;*/removecode		MOVEQ	#0,D1
;*/removecode	L075A6:
;*/removecode		MOVEQ	#-1,D2
;*/removecode		MOVEQ	#$10,D0
;*/removecode		TRAP	#1
;*/removecode	L075AC:
;*/removecode		RTS

;*/removecode	L075AE:
;*/removecode	BAS_NET:
;*/removecode		JSR	GET_INT2(PC)
;*/removecode		BNE.S	L075C4
;*/removecode		ADDQ.L	#2,BV_RIP(A6)
;*/removecode		MOVE.B	1(A6,A1.L),D1
;*/removecode		BLE.S	L075C6
;*/removecode		MOVE.B	D1,$28037
;*/removecode	L075C4	RTS
;*/removecode	L075C6	MOVEQ	#-15,D0
;*/removecode		RTS

NOP075CA:
	DCB.w ($75CA-(NOP075CA-ORGN))/2,$4E71

;*/endoverlay
; --------------------------------------------------------------
BAS_INK:
	MOVEQ	#$29,D4
	BRA.S	DO_BAS_Col
BAS_STRIp:
	MOVEQ	#$28,D4
	BRA.S	DO_BAS_Col
BAS_PAPEr:
	MOVEQ	#$27,D4
DO_BAS_Col:
	JSR	L08038(PC)	;*/undomodify BSR L08038
	BNE.S	L075EE
	BSR	L07FD4
	BNE.S	L075EE
	CMPI.B	#$27,D4
	BNE.S	L075EA
	BSR.S	L075EA
	MOVEQ	#$28,D4
L075EA	JMP	L07FC4(PC)	;*/undomodify BRA L07FC4
L075EE	RTS
BAS_CLS:
	MOVEQ	#$20,D4
	BRA.S	L075FA
BAS_PAN:
	MOVEQ	#$1B,D4
	BRA.S	L075FA
BAS_SCROll:
	MOVEQ	#$18,D4
L075FA	JSR	L08038(PC)	;*/undomodify BSR L08038
	BNE.S	L07642
	MOVE.W	0(A6,A1.L),D1
	CMPI.B	#$20,D4
	BEQ.S	L0760E
	SUBQ.L	#2,A1
	SUBQ.L	#1,D3
L0760E	SUBQ.W	#1,D3
	BHI.S	L07640
	BLT.S	L0762C
	MOVE.W	D4,D3
	SUBI.W	#$0017,D3
	LSR.W	#2,D3
	LEA	L07644(PC),A2
	BTST	D1,0(A2,D3.W)
	BEQ.S	L07640
	ADD.L	D1,D4
	MOVE.W	0(A6,A1.L),D1
L0762C	JSR	L090A2(PC)	;*/undomodify BSR L090A2
	BNE.S	L0763C
	MOVE.L	BV_LNBAS(A6),$0044(A6) ;line # table
	CLR.W	BV_LSBAS(A6)	;Bottom line in window
L0763C	JMP	L07FC4(PC)	;*/undomodify BRA L07FC4
L07640	MOVEQ	#-$0F,D0
L07642	RTS
L07644	BTST	D3,(A1)+
	MOVE.B	D0,-(A7)
BAS_PAUSe:
	JSR	CA_GTINT(PC)	;*/undomodify BSR CA_GTINT
	SUBQ.W	#1,D3
	BLT.S	L0765A
	BGT.S	L07668
	ADDQ.L	#2,BV_RIP(A6)	;arith stack
	MOVE.W	0(A6,A1.L),D3
L0765A	MOVEQ	#0,D1
	JSR	L0661E(PC)	;*/undomodify BSR L0661E
	MOVEQ	#1,D0		;IO.FBYTE fetch a byte
	TRAP	#3
	MOVEQ	#0,D0
	RTS
L07668	MOVEQ	#-15,D0
	RTS
BAS_POKE:
	MOVEQ	#0,D4		;here we do not need even
				;address
	BSR.S	L07682
	MOVE.B	D1,(A4)
	RTS
POKE_W:
	BSR.S	L07680
	MOVE.W	D1,(A4)
	RTS
POKE_L:
	BSR.S	L07680
	MOVE.L	D1,(A4)
	RTS
L07680	MOVEQ	#$01,D4		;Check for even address
L07682	JSR	CA_GTLIN(PC)	;*/undomodify BSR CA_GTLIN
	BNE.S	L076A4
	SUBQ.W	#2,D3
	BNE.S	L076A0
	ADDQ.L	#8,BV_RIP(A6)	;arith stack
	MOVEA.L	0(A6,A1.L),A4
	MOVE.L	4(A6,A1.L),D1
	MOVE.L	A4,D0
	AND.L	D4,D0		;address odd ?
	BNE.S	L076A0
	RTS
L076A0	ADDQ.W	#4,A7
	MOVEQ	#-15,D0		;bad parameter error
L076A4	RTS
BAS_INPUt:
	ST	D7
BAS_PRINt:
	JSR	L04E4C(PC)	;*/undomodify BSR L04E4C
	MOVEQ	#0,D4
	JSR	CHNRTOID(PC)	;*/undomodify BSR CHNRTOID
	BNE	L0784E
	MOVE.L	A5,-(A7)
	MOVEA.L	A2,A5
	MOVEQ	#0,D5
	TST.B	D7
	BEQ.S	L076D0
	MOVEQ	#$0B,D0
	MOVEA.L	(A6),A1
	BSR	L0796E
	CMPI.W	#$FFF1,D0
	BNE.S	L076D0
	MOVEQ	#$01,D7
L076D0	CMPA.L	(A7),A3
	BGE	L0783E
	MOVE.B	$01(A6,A3.L),D0
	MOVE.B	D0,D5
	LSR.B	#4,D5
	ANDI.B	#$0F,D0
	BNE.S	L076F2
	TST.B	0(A6,A3.L)
	BNE.S	L076F2
	BSR	L0795A
	BRA	L07832
L076F2	TST.W	$02(A6,A3.L)
	SGE	D1
	AND.B	D7,D1
	BEQ.S	L07714
	MOVE.W	D0,-(A7)
	BSR	L0795A
	MOVE.W	(A7)+,D0
	MOVEA.L	(A7),A4
	JSR	L07A0C(PC)	;*/undomodify BSR L07A0C
	BNE	L07850
	MOVE.L	A4,(A7)
	BRA	L07832
L07714	TST.B	D7
	BGT	L07838
	MOVEA.L	BV_VVBAS(A6),A0	;variable values
	MOVE.L	$04(A6,A3.L),D1
	BLT	L07828
	ADDA.L	D1,A0
	CMPI.B	#$03,0(A6,A3.L)
	BNE	L07824
	TST.B	D5
	BEQ.S	L07740
	CMPI.B	#$05,D5
	BNE.S	L07742
	SWAP	D5
	BRA.S	L07742
L07740	MOVEQ	#$03,D5
L07742	MOVE.B	D0,-(A7)
	MOVEA.L	A0,A2
	BSR	L0781A
	SUBA.L	BV_VVBAS(A6),A2	;variable values
	SUBA.L	BV_CHBAS(A6),A5	;channel name
	MOVEM.L	A2-A3/A5,-(A7)
	JSR	L04DF6(PC)	;*/undomodify BSR L04DF6
	MOVEM.L	(A7)+,A2-A3/A5
	ADDA.L	BV_CHBAS(A6),A5	;channel name
	ADDA.L	BV_VVBAS(A6),A2	;variable values
	MOVEA.L	A0,A4
L07768	SUBQ.W	#1,D1
	LEA	0(A4,D1.W),A1
	SF	0(A6,A1.L)
	BNE.S	L07768
	MOVE.W	$04(A6,A2.L),D1
	MOVE.B	(A7),D0
	SUBQ.B	#2,D0
	BLT.S	L07788
	BEQ.S	L07784
	MOVEQ	#$02,D0
	BRA.S	L0778C
L07784	MOVEQ	#$06,D0
	BRA.S	L0778C
L07788	SUBQ.W	#1,D1
	MOVEQ	#$01,D0
L0778C	MOVE.W	D0,0(A6,A4.L)
	LSL.W	#1,D1
	MOVE.W	D1,$02(A6,A4.L)
L07796	MOVEA.L	BV_VVBAS(A6),A0	;variable values
	ADDA.L	0(A6,A2.L),A0
	MOVE.W	$04(A6,A2.L),D0
	LSL.W	#2,D0
	LEA	2(A2,D0.W),A1
	MOVE.W	0(A6,A1.L),D3
	LSR.W	#1,D0
L077AE	LEA	2(A4,D0.W),A1
	MOVE.W	0(A6,A1.L),D1
	LSL.W	#1,D0
	LEA	4(A2,D0.W),A1
	LSR.W	#1,D0
	MULU	0(A6,A1.L),D1
	MULU	0(A6,A4.L),D1
	ADDA.L	D1,A0
	SUBQ.W	#2,D0
	BNE.S	L077AE
	MOVE.B	(A7),D0
	BSR	L0785E
	BNE.S	L077FE
	MOVE.W	$02(A6,A4.L),D0
	BEQ.S	L077FE
L077DA	LSL.W	#1,D0
	LEA	2(A2,D0.W),A1
	MOVE.W	0(A6,A1.L),D1
	LSR.W	#1,D0
	LEA	2(A4,D0.W),A1
	CMP.W	0(A6,A1.L),D1
	BEQ.S	L077F6
	ADDQ.W	#1,0(A6,A1.L)
	BRA.S	L07796
L077F6	CLR.W	0(A6,A1.L)
	SUBQ.W	#2,D0
	BNE.S	L077DA
L077FE	BSR.S	L0781A
	MOVEA.L	A4,A0
	MOVE.L	D0,-(A7)
	MOVE.L	A3,-(A7)
	JSR	L04FE8(PC)	;*/undomodify BSR L04FE8
	MOVEA.L	(A7)+,A3
	MOVE.L	(A7)+,D0
	ADDQ.W	#2,A7
	BNE.S	L0784C
	TST.B	D5
	BNE.S	L07838
	SWAP	D5
	BRA.S	L07832
L0781A	MOVEQ	#$02,D1
	ADD.W	$04(A6,A2.L),D1
	LSL.W	#1,D1
	RTS
L07824	BSR.S	L0785E
	BRA.S	L07836
L07828	BSR	L0795A
	MOVEQ	#$2A,D1
	BSR	L07960
L07832	BSR	L078E0
L07836	BNE.S	L0784C
L07838	ADDQ.W	#8,A3
	BRA	L076D0
L0783E	TST.B	D5
	BNE.S	L0784A
	TST.B	D7
	BGT.S	L0784A
	BSR	L07934
L0784A	MOVEQ	#0,D0
L0784C	MOVEA.L	(A7)+,A5
L0784E	RTS
L07850	MOVE.L	A4,(A7)
	MOVE.L	D0,-(A7)
	MOVEQ	#$0F,D0
	BSR	L07970
	MOVE.L	(A7)+,D0
	BRA.S	L0784C
L0785E	MOVEA.L	BV_RIP(A6),A1	;arith stack
	SUBQ.W	#6,A1
	TST.B	D0
	BEQ.S	L07878
	SUBQ.B	#2,D0
	BGT.S	L0787E
	BEQ.S	L0788E
	MOVE.W	0(A6,A0.L),D2
	MOVEA.L	A0,A1
	ADDQ.W	#2,A1
	BRA.S	L078AA
L07878	MOVEA.L	A0,A1
	MOVE.W	D3,D2
	BRA.S	L078AA
L0787E	MOVE.W	0(A6,A0.L),0(A6,A1.L)
	MOVEA.L	(A6),A0
	ADDQ.W	#1,A0
	JSR	CN_ITOD(PC)	;*/undomodify BSR CN_ITOD
	BRA.S	L078A2
L0788E	MOVE.L	$02(A6,A0.L),$02(A6,A1.L)
	MOVE.W	0(A6,A0.L),0(A6,A1.L)
	MOVEA.L	(A6),A0
	ADDQ.W	#1,A0
	JSR	CN_FTOD(PC)	;*/undomodify BSR CN_FTOD
L078A2	MOVEA.L	(A6),A1
	ADDQ.W	#1,A1
	MOVE.L	A0,D2
	SUB.L	A1,D2
L078AA	TST.B	D4
	BEQ.S	L078D2
	SWAP	D4
	ADDQ.W	#1,D2
	SUBQ.W	#1,A1
	MOVE.B	0(A6,A1.L),-(A7)
	SUB.W	D2,D4
	BLT.S	L078C4
	MOVE.B	#$20,0(A6,A1.L)
	BRA.S	L078D0
L078C4	MOVE.B	#$0A,0(A6,A1.L)
	MOVE.W	#$FFFF,$20(A6,A5.L)
L078D0	SWAP	D4
L078D2	BSR	L07968
	TST.B	D4
	BEQ.S	L078E0
	SUBA.W	D2,A1
	MOVE.B	(A7)+,0(A6,A1.L)
; --------------------------------------------------------------
*/beginoverlay
	ifd	NoTas
L078E0:
	BSET	#7,BV_BRK(A6)	;*/mend TAS BV_BRK(A6)
				;There has been a
				;break (0) or not ($80)
	BNE.S	o078E8
	MOVEQ	#-$01,D0
o078E8	TST.L	D0
	BNE.S	L07958
	TST.B	D7
	BGT.S	L07956
	SF	D4
	MOVE.B	D5,D0		;*/insert
	SUBQ.B	#$01,D0		;*/modify CMPI.B #$01,D5
	BEQ.S	L0793E
	SUBQ.B	#$02,D0		;*/modify CMPI.B #$03,D5
	BEQ.S	L07934
	endc
	ifnd	NoTas
L078E0:
	TAS	BV_BRK(A6)
	BNE.S	L078E8
	MOVEQ	#$-$01,D0
L078E8
	TST.L	D0
	BNE.S	L07958
	TST.B	D7
	BGT.S	L07956
	SF	D4
	CMPI.B	#$01,D5
	BEQ.S	L0793E
	CMPI.B	#$03,D5
	BEQ.S	L07934
	endc
*/endoverlay
; --------------------------------------------------------------
	CMPI.B	#$04,D5
	BEQ.S	L07926
	CMPI.B	#$05,D5
	BNE.S	L07956
	MOVE.L	A5,-(A7)
	ADDQ.W	#8,A3
	LEA	8(A3),A5
	JSR	GET_INT2(PC)	;*/undomodify BSR GET_INT2
	MOVEA.L	(A7)+,A5
	BNE.S	L07958
	MOVE.W	0(A6,A1.L),D2
	ADDQ.L	#2,BV_RIP(A6)	;arith stack
	BSR.S	L0797A
	BRA.S	L0794A
L07926	BSR.S	L0797A
	SUB.W	D0,D1
	MOVE.W	D1,D4
	SWAP	D4
	TST.W	D0
	SNE	D4
	BRA.S	L07956
L07934	MOVEQ	#$0A,D1
	BSR.S	L07960
	CLR.W	$20(A6,A5.L)
	BRA.S	L07956
L0793E	BSR.S	L0797A
	MOVE.W	D0,D2
	ADDQ.W	#8,D2
	ANDI.W	#$00F8,D2
	SUBQ.W	#8,D1
L0794A	SUB.W	D2,D1
	BLT.S	L07934
	SUB.W	D0,D2
L07950	BSR.S	L0795E
	SUBQ.W	#1,D2
	BGT.S	L07950
L07956	MOVEQ	#0,D0
L07958	RTS
L0795A	TST.B	D4
	BEQ.S	L07958
L0795E	MOVEQ	#$20,D1		;Send a blank
L07960	MOVEQ	#5,D0		;IO.SBYTE send a byte
	ADDQ.W	#1,$20(A6,A5.L)
	BRA.S	L07970
L07968	MOVEQ	#7,D0		;IO.SSTRG sends a string of
				;bytes
	ADD.W	D2,$20(A6,A5.L)	;number of bytes to be send
L0796E	TRAP	#4
L07970	MOVEQ	#-1,D3
	MOVEA.L	0(A6,A5.L),A0
	TRAP	#3
	RTS
L0797A	MOVEQ	#$0B,D0
	MOVEA.L	(A6),A1
	BSR.S	L0796E
	TST.L	D0
	BNE.S	L0798E
	MOVE.W	$04(A6,A1.L),D0
	MOVE.W	0(A6,A1.L),D1
	RTS
L0798E	MOVE.W	$22(A6,A5.L),D1
	MOVE.W	$20(A6,A5.L),D0
	RTS
BAS_RANDomise:
	JSR	CA_GTLIN(PC)	;*/undomodify BSR CA_GTLIN
	BNE.S	L079BE
	SUBQ.W	#1,D3
	BGT.S	L079C0
	BEQ.S	L079AA
	MOVEQ	#$13,D0		;SD.PCOL position cursor on
				;previous char column
	TRAP	#1
	BRA.S	L079B4
L079AA	MOVE.L	0(A6,A1.L),D1
	ADDQ.L	#4,BV_RIP(A6)	;arith stack
	MOVEQ	#0,D0
L079B4	MOVE.L	D1,D2
	SWAP	D1
	ADD.L	D2,D1
	MOVE.L	D1,BV_RAND(A6)	;Random number
L079BE	RTS
L079C0	MOVEQ	#-$0F,D0
	RTS
L079C4	MOVE.L	D0,-(A7)
	MOVEQ	#0,D4
L079C8	MOVEQ	#4,D0
	TRAP	#4
	MOVEA.L	BV_BFP(A6),A1	;buffer running ptr
	MOVE.L	BV_TKBAS(A6),D2	;token list
	SUB.L	(A6),D2
	MOVE.L	A1,D1
	SUB.L	(A6),D1
	MOVE.W	D1,D4
	MOVE.L	D4,D1
	TST.L	(A7)
	BEQ.S	L079E6
	MOVEQ	#2,D0		;IO.FLINE fetch line of
				;chars terminated by <LF>
	SUB.W	D1,D2
L079E6	MOVEQ	#-1,D3
	TRAP	#3
	TST.L	D0
	BGE.S	L07A06
	CMPI.B	#$FB,D0
	BNE.S	L07A06
	MOVE.L	D1,D4
	MOVE.L	A1,BV_BFP(A6)	;buffer running
	MOVE.L	A0,-(A7)
	MOVEQ	#$7E,D1
	JSR	L04E6A(PC)	;*/undomodify BSR L04E6A
	MOVEA.L	(A7)+,A0
	BRA.S	L079C8
L07A06	ADDQ.W	#4,A7
L07A08	TST.L	D0
	RTS
L07A0C	MOVE.L	D7,-(A7)
	MOVE.W	D0,-(A7)
	BSR.S	L07A8E
	BEQ.S	L07A1A
L07A14	ADDQ.W	#2,A7
L07A16	MOVE.L	(A7)+,D7
	BRA.S	L07A08
L07A1A	MOVEA.L	0(A6,A5.L),A0
	MOVE.L	(A6),BV_BFP(A6)
	TST.B	D7
	SGT	D0
	SUBA.L	BV_TKBAS(A6),A3	;token list
	SUBA.L	BV_TKBAS(A6),A4	;token list
	SUBA.L	BV_TKBAS(A6),A5	;token list
	MOVEM.L	A3-A5,-(A7)
	BSR.S	L079C4
	MOVEM.L	(A7)+,A3-A5
	ADDA.L	8(A6),A3
	ADDA.L	8(A6),A4
	ADDA.L	8(A6),A5
	BNE.S	L07A14
	MOVE.L	A3,-(A7)
	MOVEQ	#$13,D0		;SD.PCOL position cursor on
				;previous column
	TRAP	#3
	MOVEQ	#$14,D0		;SD.NCOL position cursor on
				;next column
	TRAP	#3
	MOVEA.L	(A7)+,A3
	MOVEA.L	(A6),A0
	MOVE.L	A1,D7
	MOVEA.L	BV_RIP(A6),A1	;arith stack
	MOVE.W	(A7)+,D0
	SUBQ.B	#2,D0
	BLT.S	L07A74
	BEQ.S	L07A6C
	JSR	CN_DTOI(PC)	;*/undomodify BSR CN_DTOI
	BRA.S	L07A70
L07A6C	JSR	CN_DTOF(PC)	;*/undomodify BSR CN_DTOF
L07A70	BNE.S	L07A16
	BRA.S	L07A7C
L07A74	MOVEA.L	D7,A0
	SUBQ.W	#1,A0
	JSR	L05A20(PC)	;*/undomodify BSR L05A20
L07A7C	MOVE.L	A1,BV_RIP(A6)	;arith stack
	SUBA.L	BV_CHBAS(A6),A5	;channel name
	JSR	BP_LET(PC)	;*/undomodify BSR BP_LET
	ADDA.L	BV_CHBAS(A6),A5	;channel name
	BRA.S	L07A16
L07A8E	MOVE.B	0(A6,A3.L),D0
	SUBQ.B	#2,D0
	BLE.S	L07AC0
	SUBQ.B	#1,D0
	BNE.S	L07AB8
	MOVE.B	1(A6,A3.L),D0
	ANDI.B	#$0F,D0
	SUBQ.B	#1,D0
	BGT.S	L07AC8
	MOVEA.L	4(A6,A3.L),A2
	ADDA.L	BV_VVBAS(A6),A2	;variable values
	CMPI.W	#1,4(A6,A2.L)
	BGT.S	L07AC8
	BRA.S	L07AC0
L07AB8	SUBQ.B	#3,D0
	BLT.S	L07AC4
	SUBQ.B	#1,D0
	BGT.S	L07AC4
L07AC0	MOVEQ	#0,D0
	RTS
L07AC4	MOVEQ	#-12,D0		;bad name
	RTS
L07AC8	MOVEQ	#-19,D0		;not implemented
	RTS
BAS_RECOl:
	JSR	L08038(PC)	;*/undomodify BSR L08038
	BNE.S	L07AF4
	CMPI.W	#8,D3
	BNE.S	L07AF2
	MOVEA.L	A1,A2
	MOVEQ	#$07,D0
L07ADC	MOVE.B	$01(A6,A2.L),$01(A6,A1.L)
	SUBQ.W	#2,A2
	SUBQ.W	#1,A1
	DBF	D0,L07ADC
	ADDQ.W	#2,A1
	MOVEQ	#$26,D4
	JMP	L07FC4(PC)	;*/undomodify BRA L07FC4
L07AF2	MOVEQ	#-$0F,D0
L07AF4	RTS
BAS_EDIT:
	MOVEQ	#0,D4
	BRA.S	L07AFC
BAS_AUTO:
	MOVEQ	#$0A,D4
L07AFC	ST	BV_AUTO(A6)	;AUTO/EDIT on ($ff) or off (0)
	TST.B	BV_UNRVL(A6)	;Need to unravel
				;($ff) or not (0)
	BNE.S	L07B32
	BRA.S	L07B26
L07B08	MOVEQ	#0,D5
	CMPA.L	$0004(A7),A3
	BEQ.S	L07B20
	JSR	L07452(PC)	;*/undomodify BSR L07452
	BEQ.S	L07B20
	JSR	L074F0(PC)	;*/undomodify BSR L074F0
	BEQ.S	L07B22
	ADDQ.W	#4,A7
	BRA.S	L07B84
L07B20	MOVEQ	#$01,D0
L07B22	RTS
BAS_RENUm:
	MOVEQ	#$0A,D4
L07B26	JSR	L07E30(PC)	;*/undomodify BSR L07E30
	BEQ.S	L07B32
	ST	$00B8(A6)
	RTS
L07B32	MOVE.L	A5,-(A7)
	MOVE.W	#$7FFF,D7
	MOVEQ	#$64,D6
	SWAP	D4
	BSR.S	L07B08
	CMPI.B	#$05,D5
	BNE.S	L07B5A
	TST.B	D0
	BNE.S	L07B4A
	MOVE.W	D1,D4
L07B4A	BSR.S	L07B08
	CMPI.B	#$02,D5
	BNE.S	L07B84
	TST.B	D0
	BNE.S	L07B66
	MOVE.W	D1,D7
	BRA.S	L07B66
L07B5A	CMPI.B	#$02,D5
	BNE.S	L07B68
	TST.B	D0
	BNE.S	L07B66
	MOVE.W	D1,D4
L07B66	BSR.S	L07B08
L07B68	TST.B	D0
	BNE.S	L07B6E
	MOVE.W	D1,D6
L07B6E	SWAP	D4
	CMPI.B	#$01,D5
	BNE.S	L07B7C
	BSR.S	L07B08
	BNE.S	L07B7C
	MOVE.W	D1,D4
L07B7C	MOVE.W	D4,D3
	SWAP	D4
	TST.B	D5
	BEQ.S	L07B94
L07B84	SF	BV_AUTO(A6)	;AUTO/EDIT on ($ff) or off (0)
	ADDQ.W	#4,A7
	MOVEQ	#-$0F,D0
	RTS
L07B8E	ADDQ.W	#2,A7
	MOVEQ	#-$04,D0
	RTS
L07B94	MOVE.W	D7,D5
	ADDQ.W	#4,A7
	TST.B	BV_AUTO(A6)	;AUTO/EDIT on ($ff) or off (0)
	BEQ.S	L07BAA
	MOVE.W	D6,BV_EDLIN(A6)	;line # to edit next
	MOVE.W	D3,BV_EDINC(A6)	;Increment on edit range
L07BA6	MOVEQ	#0,D0
	RTS
L07BAA	MOVEA.L	BV_PFBAS(A6),A4	;program file
	CMPA.L	BV_PFP(A6),A4	;program running ptr
	BGE.S	L07BA6
	CLR.W	-(A7)
	CLR.L	BV_LINUM(A6)	;current line #
	TST.W	D4
	BEQ.S	L07BD8
	JSR	L09FBE(PC)	;*/undomodify BSR L09FBE
	CMPA.L	(A6),A4
	BEQ.S	L07BD8
	SUBA.W	BV_LENGTH(A6),A4	;current length
	MOVE.W	$02(A6,A4.L),D2
	CMP.W	D2,D6
	BLE.S	L07B8E
	ADDA.W	BV_LENGTH(A6),A4	;current length
	MOVE.W	D2,(A7)
L07BD8	MOVEQ	#0,D0
L07BDA	ADDQ.W	#1,D0
	BSR.S	L07C4E
	BEQ.S	L07BDA
	BGT.S	L07BE6
	MOVE.W	#$7FFF,D2
L07BE6	MOVE.L	D0,D1
	SUBQ.W	#1,D1
	MULU	D3,D1
	ADD.L	D6,D1
	EXT.L	D2
	CMP.L	D2,D1
	BGE.S	L07B8E
	MOVE.W	D2,-(A7)
	MOVEQ	#$02,D1
	ADD.L	D0,D1
	LSL.L	#2,D1
	JSR	L04DF6(PC)	;*/undomodify BSR L04DF6
	MOVEA.L	A0,A3
	SUBA.L	BV_VVBAS(A6),A3	;variable values
	MOVE.L	D1,0(A6,A0.L)
	SUBA.W	BV_LENGTH(A6),A4	;current length
	MOVE.W	2(A6,A4.L),BV_LINUM(A6) ;current line #
	ADDA.W	BV_LENGTH(A6),A4	;current length
	JSR	L09FBE(PC)	;*/undomodify BSR L09FBE
	BSR	L07D56
	MOVE.W	D6,D0
	MOVE.W	4(A6,A4.L),D2
	MOVE.W	2(A7),D6
	SWAP	D4
L07C2C	MOVE.W	D2,0(A6,A0.L)
	MOVE.W	D0,2(A6,A0.L)
	MOVE.W	D0,4(A6,A4.L)
	ADDQ.W	#4,A0
	ADD.W	D4,D0
	BSR.S	L07C4E
	BEQ.S	L07C2C
	MOVE.W	(A7),D5
	MOVE.W	D5,0(A6,A0.L)
	MOVE.W	D5,$02(A6,A0.L)
	ADDQ.W	#4,A7
	BRA.S	L07C7A
L07C4E	MOVE.W	0(A6,A4.L),D1
	ADDQ.W	#2,A4
	ADD.W	D1,BV_LENGTH(A6)	;current length
	ADDA.W	BV_LENGTH(A6),A4	;current length
	CMPA.L	BV_PFP(A6),A4	;program running ptr
	BGE.S	L07C72
	MOVE.W	4(A6,A4.L),D2
	CMP.W	D2,D5
	BLT.S	L07C6E
	MOVEQ	#0,D1
	RTS
L07C6E	MOVEQ	#1,D1
	RTS
L07C72	MOVEQ	#-1,D1
	RTS
L07C76	JMP	L0A56C(PC)	;*/undomodify BRA L0A56C
L07C7A	ST	BV_EDIT(A6)	;Program has been
				;edited ($ff) or not (0)
	JSR	L0958E(PC)	;*/undomodify BSR L0958E
	BRA.S	L07C8A
L07C84	JSR	L0A60E(PC)	;*/undomodify BSR L0A60E
	BNE.S	L07D06
L07C8A	BSR.S	L07C76
	CMPI.W	#$8111,D1
	BEQ.S	L07CB2
	CMPI.W	#$810A,D1
	BEQ.S	L07CAE
	CMPI.W	#$8115,D1
	BNE.S	L07C84
L07C9E	JSR	L09072(PC)	;*/undomodify BSR L09072
	JSR	L09686(PC)	;*/undomodify BSR L09686
	BEQ.S	L07C84
	CMPI.W	#$810A,D1
	BNE.S	L07C9E
L07CAE	ADDQ.W	#2,A4
	BSR.S	L07C76
L07CB2	ADDQ.W	#2,A4
	BSR.S	L07C76
	CMPI.W	#$840A,D1
	BEQ.S	L07C84
	SUBI.W	#$F000,D1
	BGE.S	L07CCE
L07CC2	MOVE.W	#$8404,D4
	JSR	L0A5E0(PC)	;*/undomodify BSR L0A5E0
	BNE.S	L07C84
	BRA.S	L07CB2
L07CCE	MOVEA.L	BV_RIP(A6),A1	;arith stack
	SUBQ.W	#6,A1
	MOVE.W	D1,0(A6,A1.L)
	MOVE.L	2(A6,A4.L),2(A6,A1.L)
	JSR	RI_NINT(PC)	;*/undomodify BSR RI_NINT
	MOVE.W	0(A6,A1.L),D1
	BSR.S	L07D60
	BLE.S	L07CC2
	MOVE.W	D1,0(A6,A1.L)
	JSR	RI_FLOAT(PC)	;*/undomodify BSR RI_FLOAT
	MOVE.W	0(A6,A1.L),D0
	ADDI.W	#$F000,D0
	MOVE.W	D0,0(A6,A4.L)
	MOVE.L	$02(A6,A1.L),$02(A6,A4.L)
	BRA.S	L07CC2
L07D06	MOVE.W	BV_LSBEF(A6),D1	;Invisible top line
	BSR.S	L07D60
	MOVE.W	D1,BV_LSBEF(A6)	;Invisible top line
	MOVE.W	BV_LSBAS(A6),D1	;Bottom line in window
	BSR.S	L07D60
	MOVE.W	D1,BV_LSBAS(A6)	;Bottom line in window
	MOVE.W	BV_LSAFT(A6),D1	;Invisible bottom line
	BSR.S	L07D60
	MOVE.W	D1,BV_LSAFT(A6)	;Invisible bottom line
	MOVEA.L	BV_LNBAS(A6),A1	;line # table
	MOVE.W	0(A6,A1.L),D1
	BSR.S	L07D60
	MOVE.W	D1,0(A6,A1.L)
	ST	BV_CONT(A6)	;continue ($80) or stop (0)
	BSR.S	L07D56
	SUBQ.W	#4,A0
	MOVE.L	0(A6,A0.L),D1
	JSR	L04FE8(PC)	;*/undomodify BSR L04FE8
	MOVEQ	#0,D2
	MOVEQ	#0,D5
	SUBA.L	A0,A0
	JSR	L090A2(PC)	;*/undomodify BSR L090A2
	MOVEA.L	D0,A0
	JSR	L08FE6(PC)	;*/undomodify BSR L08FE6
	MOVEQ	#0,D0
	RTS
L07D56	MOVEA.L	BV_VVBAS(A6),A0	;variable values
	ADDA.L	A3,A0
	ADDQ.W	#4,A0
	RTS
L07D60	CMP.W	D6,D1
	BLE.S	L07D76
	CMP.W	D1,D5
	BLT.S	L07D76
	BSR.S	L07D56
L07D6A	CMP.W	0(A6,A0.L),D1
	ADDQ.W	#4,A0
	BGT.S	L07D6A
	MOVE.W	-$02(A6,A0.L),D1
L07D76	RTS
BAS_REPOrt:
	MOVEQ	#0,D1
	JSR	L065E8(PC)	;*/undomodify BSR L065E8
	MOVE.L	$C2(A6),D0	;Not listet in Adrian
				;Dickens !!!
	MOVE.W	BV_LINUM(A6),-(A7)     ;current line #
	MOVE.W	$C6(A6),BV_LINUM(A6)   ;make ??? the current line
				;number
	JSR	L09BDC(PC)	;*/undomodify BSR L09BDC
	MOVE.W	(A7)+,BV_LINUM(A6)     ;get back old line #
	MOVEQ	#0,D0
	RTS
BAS_CLEAr:
	MOVEQ	#0,D6
	MOVEQ	#0,D0
	MOVE.W	#$FFFF,BV_NXLIN(A6) ;line # to start after
	BRA.S	L07DE0
BAS_RUN:
	JSR	CA_GTINT(PC)	;*/undomodify BSR CA_GTINT
	BNE.S	L07E1E
	MOVEQ	#$06,D6
	MOVE.W	D7,BV_NXLIN(A6)	;line # to start after
	SUBQ.W	#1,D3
	BLT.S	L07E14
	BEQ.S	L07DBA
	MOVEQ	#-$0F,D0
	RTS
L07DBA	MOVE.W	0(A6,A1.L),BV_NXLIN(A6) ;line # to after
	MOVE.B	D7,$8A(A6)	;which statement to start
				;after
	ADDQ.L	#2,BV_RIP(A6)	;arith stack
	BRA.S	L07E14
BAS_MERGe:
	BSR.S	L07E30
	MOVEQ	#$0E,D6
	TST.B	$6F(A6)		;single line execution on
				;or off ?
	BNE.S	L07DF6
BAS_MRUN:
	BSR.S	L07E30
	MOVEQ	#$0C,D6
	BSR.S	L07E20
	BNE.S	L07E0E
	MOVE.W	D7,BV_NXLIN(A6)	;line # to start after
L07DE0	TST.B	$6F(A6)		;single line execution on
				;or off ?
	BNE.S	L07E14
	MOVE.W	BV_LINUM(A6),BV_NXLIN(A6) ;current line # ->
				;line to start
	MOVE.B	$6C(A6),$8A(A6)	;current statement on line
				;-> statement
	BRA.S	L07E14		;to start after
BAS_LOAD:
	MOVEQ	#$0A,D6
L07DF6	BSR.S	L07E20
	BRA.S	L07E0E
BAS_LRUN:
	MOVEQ	#$08,D6
	BSR.S	L07E20
	BNE.S	L07E0E
	MOVE.W	D7,BV_NXLIN(A6)	;line # to start after
	BRA.S	L07E14
BAS_NEW:
	MOVEQ	#$02,D6
	BRA.S	L07E0C
BAS_STOP:
	MOVEQ	#$04,D6
L07E0C	MOVEQ	#0,D0
L07E0E	MOVE.W	#$FFFF,BV_NXLIN(A6) ;line # to start after
L07E14	SF	BV_CONT(A6)	;STOP processing flag
	MOVE.W	D6,$8C(A6)	;which stop number set
	TST.L	D0
L07E1E	RTS

; --------------------------------------------------------------
;*/beginoverlay

L07E20:
	bra	L07E20fix

;*/removecode	MOVEQ	#$01,D4
;*/removecode	JSR	L069C4(PC)
;*/removecode	BNE.S	L07E1E
;*/removecode	MOVE.L	A0,BV_COMCH(A6) ;Command channel
;*/removecode	MOVEQ	#0,D0
;*/removecode	RTS

NOP07E30:
	DCB.w ($7E30-(NOP07E30-ORGN))/2,$4E71

;*/endoverlay
; --------------------------------------------------------------

L07E30	TST.B	BV_UNRVL(A6)	;Need to unravel
				;($ff) or not (0)
	BNE.S	L07E44
	MOVE.L	BV_RTP(A6),D0	;return table running ptr
	SUB.L	BV_RTBAS(A6),D0	;return table
	BEQ.S	L07E44
	ADDQ.W	#4,A7
	MOVEQ	#-$13,D0
L07E44	RTS
BAS_RETRy:
	SUBQ.B	#1,BV_CNSTM(A6)	;Statement to continue from
	BGE.S	BAS_CONTinue
	SF	BV_CNSTM(A6)	;Statement to CONTINUE from
BAS_CONTinue:
	SF	$C0(A6)		;not documented !!!
	MOVEQ	#$10,D6
	BRA.S	L07E0C
BAS_TRA:
	JSR	CA_GTLIN(PC)	;*/undomodify BSR CA_GTLIN
	BNE.S	L07E8A
	CLR.L	D2
	SUBQ.W	#1,D3
	BEQ.S	L07E78
	SUBQ.W	#1,D3
	BNE.S	L07E8C
	ADDQ.L	#4,BV_RIP(A6)	;arith stack
	MOVE.L	4(A6,A1.L),D2
	BNE.S	L07E78
RLOC0D	MOVE.L	#(MSG_LIST-ORG0),D2 ;*/modify MOVE.L $BFE6,D2
				;error message pointers
L07E78	ADDQ.L	#4,BV_RIP(A6)	;arith stack
	MOVE.L	0(A6,A1.L),D1
	MOVEQ	#$24,D0		;not defined in advanced
				;user guide !!!!!!
	TRAP	#1
	TST.L	D0
	BMI.S	L07E8C
	MOVEQ	#0,D0
L07E8A	RTS
L07E8C:
	MOVEQ	#-15,D0		;Bad parameter
	RTS
; --------------------------------------------------------------
;*/beginundoinsert
; Procedure to disable the Directory device driver search list
CLR_SEALst:
;	 BSET	 #0,$28002
;	 MOVEQ	 #0,D0
;	 RTS
; Procedure to enable Overflow error on arithmetic operations
OV_ON:
;	 BCLR	 #1,$28002
;	 MOVEQ	 #0,D0
;	 RTS
; Procedure to disable Overflow error on arithmetic operations
OV_OFF:
;	 BSET	 #1,$28002
;	 MOVEQ	 #0,D0
;	 RTS
;*/endundoinsert
; --------------------------------------------------------------
TURNTO:
	BSR	L07F24
	BNE.S	L07ED0
	BRA.S	L07EA6
TURN:
	BSR	L07F24
	BNE.S	L07ED0
	BSR	L07F42
	JSR	RI_ADD(PC)	;*/undomodify BSR RI_ADD
L07EA6	LEA	L07F52(PC),A3	;table for TURN operations
	LEA	$0006(A1),A4
	SUBQ.W	#6,A1
	MOVE.W	#$0809,0(A6,A1.L)
	MOVE.L	#$5A000000,$02(A6,A1.L)
	JSR	RI_EXECB(PC)	;*/undomodify BSR RI_EXECB
	MOVE.W	0(A6,A1.L),$10(A6,A2.L)
	MOVE.L	$02(A6,A1.L),$12(A6,A2.L)
L07ECE	MOVEQ	#0,D0
L07ED0	RTS
BAS_PENUp:
	MOVEQ	#0,D4
	BRA.S	L07ED8
BAS_PENDown:
	MOVEQ	#$01,D4
L07ED8	JSR	CHNRTOID(PC)	;*/undomodify BSR CHNRTOID
	BNE.S	L07ED0
	MOVE.B	D4,$16(A6,A2.L)
	BRA.S	L07ECE
BAS_MOVE:
	BSR.S	L07F24
	BNE.S	L07F22
	BSR.S	L07F42
	SUBQ.W	#6,A1
	MOVE.W	#$07FB,0(A6,A1.L)
	MOVE.L	#$477D1A89,$02(A6,A1.L)
	JSR	RI_MULT(PC)	;*/undomodify BSR RI_MULT
	JSR	L06D6E(PC)	;*/undomodify BSR L06D6E
	JSR	L06D7E(PC)	;*/undomodify BSR L06D7E
	LEA	L07F5A(PC),A3
	LEA	$0018(A1),A4
	JSR	RI_EXECB(PC)	;*/undomodify BSR RI_EXECB
	JSR	L06D8E(PC)	;*/undomodify BSR L06D8E
	TST.B	$16(A6,A2.L)
	BEQ.S	L07ECE
	MOVEQ	#$31,D0		;SD.LINE plots a line
	TRAP	#4
	TRAP	#3
L07F22	RTS
L07F24	MOVE.W	#$100,D1
	JSR	BV_CHRIX(PC)	;*/undomodify BSR BV_CHRIX
	JSR	CHNRTOID(PC)	;*/undomodify BSR CHNRTOID
	BNE.S	L07F40
	MOVE.L	BV_RIP(A6),-(A7)	;arith stack
	JSR	GET_REAL(PC)	;*/undomodify BSR GET_REAL
	MOVE.L	(A7)+,BV_RIP(A6)	;arith stack
	TST.L	D0
L07F40	RTS
L07F42	SUBQ.W	#6,A1
	MOVE.W	$10(A6,A2.L),0(A6,A1.L)
	MOVE.L	$12(A6,A2.L),$02(A6,A1.L)
	RTS
L07F52	;table for TURN operations
	DC.L	$FAF41004,$080E0C00
L07F5A	DC.L	$FAF4180E,$EE0AFAF4,$1A0EE80A
	DC.W	0
BAS_WIDTh:
	JSR	L08038(PC)	;*/undomodify BSR L08038
	BNE.S	L07F78
	SUBQ.W	#1,D3
	BNE.S	L07F7A
	MOVE.W	0(A6,A1.L),$22(A6,A2.L)
L07F78	RTS
L07F7A:
	MOVEQ	#-15,D0
	RTS
BAS_WINDow:
	JSR	L08038(PC)	;*/undomodify BSR L08038
	BNE.S	L07FA2
	MOVEQ	#$0D,D4
	MOVEQ	#-$80,D1
	CLR.W	D2
	BRA.S	L07F9C
BAS_BLOCk:
	JSR	L08038(PC)	;*/undomodify BSR L08038
	BNE.S	L07FA2
	MOVEQ	#$2E,D4		;SD.FILL fill rectangular
				;block within window
	SUBQ.W	#4,D3
	JSR	L07FD4(PC)	;*/undomodify BSR.S L07FD4
				;*/undomodify nop
	BNE.S	L07FA2
L07F9C:
	SUBQ.W	#6,A1
	JMP	L07FC4(PC)	;*/undomodify BRA.S L07FC4
				;*/undomodify nop
L07FA2:
	RTS
BAS_BORDer:
	JSR	L08038(PC)	;*/undomodify BSR L08038
	BNE.S	L07FA2
	MOVEQ	#$0C,D4		;SD.BORDR sets the border
				;width and colour
	MOVEQ	#-$80,D1
	CMPI.W	#1,D3
	BLS.S	L07FBC
	SUBQ.W	#1,D3
	JSR	L07FD4(PC)	;*/undomodify BSR.S L07FD4
				;*/undomodify nop
	BNE.S	L07FA2
L07FBC:
	MOVE.W	0(A6,A1.L),D2
	JMP	L07FC4(PC)	;*/undomodify nop
				;*/undomodify nop
L07FC4:
	MOVE.L	D4,D0
	MOVEQ	#-1,D3
	MOVE.L	A1,-(A7)
	TRAP	#4
	TRAP	#3
	MOVEA.L	(A7)+,A1
	TST.L	D0
	RTS
L07FD4	MOVE.W	0(A6,A1.L),D1
	SUBQ.L	#2,A1
	SUBQ.W	#1,D3
	BEQ.S	L0801A
	CMPI.W	#$07,D1
	BHI.S	L08024
	ORI.W	#$18,D1
	CMPI.W	#$01,D3
	BEQ.S	L08004
	ANDI.W	#$0007,D1
	MOVE.W	0(A6,A1.L),D2
	SUBQ.L	#2,A1
	SUBQ.W	#1,D3
	LSL.W	#3,D1
	CMPI.W	#$0007,D2
	BHI.S	L08024
	OR.W	D2,D1
L08004	MOVE.W	0(A6,A1.L),D2
	SUBQ.L	#2,A1
	SUBQ.W	#1,D3
	BNE.S	L08024
	CMPI.W	#$0007,D2
	BHI.S	L08024
	EOR.W	D2,D1
	LSL.W	#3,D1
	OR.W	D2,D1
L0801A	CMPI.W	#$00FF,D1
	BHI.S	L08024
L08020	MOVEQ	#0,D0
	RTS
L08024	MOVEQ	#-$0F,D0
	RTS
L08028	CMPI.W	#$0001,D3
	BNE.S	L08024
	MOVE.W	0(A6,A1.L),D1
	CMP.W	D3,D1
	BHI.S	L08024
	BRA.S	L08020
L08038	JSR	CHNRTOID(PC)	;*/undomodify BSR CHNRTOID
	BNE.S	L08052
SEA_PARA ;search for parameter
	JSR	CA_GTINT(PC)	;*/undomodify BSR CA_GTINT
	BNE.S	L08052
	ADD.L	D3,D3
	ADD.L	D3,BV_RIP(A6)	;arith stack
	ADDA.L	D3,A1
	SUBQ.L	#2,A1
	LSR.W	#1,D3
	MOVEQ	#0,D0
L08052	RTS
BAS_ACOS:
	LEA	RI_ACOS(PC),A4
	BRA.S	L080C6
BAS_ACOT:
	LEA	RI_ACOT(PC),A4
	BRA.S	L080C6
BAS_ASIN:
	LEA	RI_ASIN(PC),A4
	BRA.S	L080C6
BAS_ATAN:
	LEA	RI_ATAN(PC),A4
	BRA.S	L080C6
BAS_COS:
	LEA	RI_COS(PC),A4
	BRA.S	L080C6
BAS_COT:
	LEA	RI_COT(PC),A4
	BRA.S	L080C6
BAS_EXP:
	LEA	RI_EXP(PC),A4
	BRA.S	L080C6
BAS_LN:
	LEA	RI_LN(PC),A4
	BRA.S	L080C6
BAS_LOG10:
	LEA	RI_LOG10(PC),A4
	BRA.S	L080C6
BAS_SIN:
	LEA	RI_SIN(PC),A4
	BRA.S	L080C6
BAS_SQRT:
	LEA	RI_SQRT(PC),A4
	BRA.S	L080C6
BAS_TAN:
	LEA	RI_TAN(PC),A4
	BRA.S	L080C6
BAS_DEG:
	LEA	RI_DIV(PC),A4
	BRA.S	L080A6
BAS_RAD:
	LEA	RI_MULT(PC),A4
L080A6	JSR	GET_REAL(PC)	;*/undomodify BSR GET_REAL
	BNE.S	L080DE
	BSR	L08162
	SUBQ.W	#6,A1
	MOVE.W	#$07FB,0(A6,A1.L)
	MOVE.L	#$477D1A89,$02(A6,A1.L)
	BRA.S	L080D6
BAS_ABS:
	LEA	RI_ABS(PC),A4
L080C6	JSR	GET_REAL(PC)	;*/undomodify BSR GET_REAL
	BNE.S	L080DE
	MOVEQ	#$30,D1
	JSR	BV_CHRIX(PC)	;*/undomodify BSR BV_CHRIX
	MOVEA.L	BV_RIP(A6),A1	;arith stack
L080D6	JSR	(A4)
L080D8	MOVEQ	#$02,D4
L080DA	MOVE.L	A1,BV_RIP(A6)	;arith stack
L080DE	RTS
L080E0:
	MOVEQ	#$03,D4
	MOVEQ	#0,D0
	BRA.S	L080DA
L080E6:
	ADDQ.W	#4,A7		;*/note never called!!!
	RTS
BAS_RND:
	MOVEQ	#$01,D5
	OR.L	BV_RAND(A6),D5	;Random number
	MOVE.L	D5,D6
	MULU	#$0163,D5
	SWAP	D6
	MULU	#$0163,D6
	SWAP	D6
	CLR.W	D6
	ADD.L	D6,D5
	MOVE.L	D5,BV_RAND(A6)	;New random number
	JSR	CA_GTINT(PC)	;*/undomodify BSR CA_GTINT
	BNE.S	L080DE
	SUBQ.W	#1,D3
	BEQ.S	L0812A
	BGT.S	L08124
	BSR.L	L08162		;*/undomodify BSR.S L08162
				;*/undomodify nop
	MOVE.L	D5,D1
	LSR.L	#1,D1
	MOVE.W	#$0800,D0
L0811E	JSR	L04830(PC)	;*/undomodify BSR L04830
	BRA.S	L080D8
L08124	MOVE.W	0(A6,A1.L),D3
	ADDQ.W	#2,A1
L0812A	MOVE.W	0(A6,A1.L),D2
	SUB.W	D3,D2
	BLT.S	L0819E
	ADDQ.W	#1,D2
	SWAP	D5
	MULU	D2,D5
	SWAP	D5
	ADD.W	D3,D5
L0813C	MOVE.W	D5,0(A6,A1.L)
	BRA.S	L080E0
BAS_PI:
	CMPA.L	A3,A5
	BNE.S	L0819E
	BSR.S	L08162
	MOVE.W	#$0802,D0
	MOVE.L	#$6487ED51,D1
	BRA.S	L0811E
BAS_INT:
	JSR	GET_INT4(PC)	;*/undomodify BSR GET_INT4
	BNE.S	L080DE
	MOVE.L	0(A6,A1.L),D1
	ADDQ.W	#4,A1
	BRA.S	L08186
L08162	JSR	L04E4C(PC)	;*/undomodify BSR L04E4C
	MOVEA.L	BV_RIP(A6),A1	;arith stack
	RTS
BAS_PEEK:
	BSR.S	L0818C
	MOVEQ	#0,D5
	MOVE.B	(A4),D5
	BRA.S	L0817A
PEEK_W:
	BSR.S	L0818C
	BCS.S	L0819E
	MOVE.W	(A4),D5
L0817A	ADDQ.W	#2,A1
	BRA.S	L0813C
PEEK_L:
	BSR.S	L0818C
	BCS.S	L0819E
	MOVE.L	(A4),D1
L08184	ADDQ.W	#4,A1
L08186	MOVE.W	#$081F,D0
	BRA.S	L0811E
L0818C	JSR	GET_INT4(PC)	;*/undomodify BSR GET_INT4
	BNE	L0821A
	MOVEA.L	0(A6,A1.L),A4
	MOVE.L	A4,D1
	ROR.W	#1,D1
	RTS
L0819E	MOVEQ	#-$0F,D0
L081A0	RTS
BAS_RESPr:
	BSR.S	L0818C
	MOVEQ	#$0E,D0		;MT.ALRES allocate resident
				;procedure area
	MOVE.L	0(A6,A1.L),D1
	MOVEA.L	A1,A4
	TRAP	#1
	MOVE.L	A0,D1
	MOVEA.L	A4,A1
	TST.L	D0
	BEQ.S	L08184
	BRA.S	L081A0
L081B8:
; --------------------------------------------------------------
;*/beginfilling
;*/removecode	BEEPING:
;*/removecode		CMPA.L	A3,A5
;*/removecode		BNE.S	L0819E
;*/removecode		BSR.S	L08162
;*/removecode		MOVEQ	#1,D1
;*/removecode		AND.B	$28096,D1	;Sound status
;*/removecode		BRA.S	L08186

NOP081C8:
	DCB.w ($81C8-(NOP081C8-ORGN))/2,$4E71

;*/endfilling
; --------------------------------------------------------------
L081C8:
BAS_EOF:
	CMPA.L	A3,A5
	BNE.S	L081D6
	JSR	L066FA(PC)	;*/undomodify BSR L066FA
	SUBQ.B	#1,$97(A6)	;next DATA item to read
	BRA.S	L081E0
L081D6	BSR	L0825A
	MOVEQ	#0,D0		;IO.PEND check for pending
				;input
	MOVEQ	#0,D3
	TRAP	#3
L081E0:
	MOVEQ	#-$0A,D4
	SUB.L	D0,D4
	BSR	L08162
	MOVEQ	#0,D1
	TST.L	D4
	BNE.S	L08186
	MOVEQ	#$01,D1
	BRA.S	L08186
BAS_VER:
	CMPA.L	A3,A5
	BNE.S	L0819E
	BSR	L08162
	SUBQ.W	#4,A1		;*/modify SUBQ.W #6,A1
	MOVE.W	#2,0(A6,A1.L)	;*/modify MOVE.L $BFFA,0( )
	nop			;*/modify
	MOVE.W	#'JS',2(A6,A1.L)	;*/modify MOVE.W $BFFE,4( )
	nop			;*/modify
	BRA.S	L08252
BAS_INKEy:
	BSR.S	L0825A
	MOVE.L	A0,-(A7)
	BSR	L08162
	JSR	CA_GTINT(PC)	;*/undomodify BSR CA_GTINT
L0821A:
	BNE.S	L08262
	MOVEA.L	(A7)+,A0
	CMPI.W	#$0001,D3
	BGT	L0819E
	BLT.S	L0822E
	MOVE.W	0(A6,A1.L),D3
	ADDQ.W	#2,A1
L0822E	MOVEA.L	A1,A4
	MOVEQ	#1,D0		;IO.FBYTE fetch a byte
	TRAP	#3
	MOVEA.L	A4,A1
	ADDQ.L	#1,D0
	BEQ.S	L0824C
	SUBQ.L	#1,D0
	BNE.S	L08264
	SUBQ.W	#4,A1
L08240	MOVE.B	D1,2(A6,A1.L)
	MOVE.W	#1,0(A6,A1.L)
	BRA.S	L08252
L0824C	SUBQ.W	#2,A1
	CLR.W	0(A6,A1.L)
L08252	MOVEQ	#$01,D4
	MOVEQ	#0,D0
	BRA	L080DA
L0825A	MOVEQ	#0,D1
	JSR	L065E8(PC)	;*/undomodify BSR L065E8
	BEQ.S	L08264
L08262	ADDQ.W	#4,A7
L08264	RTS
BAS_CHR:
	BSR	L08162
	JSR	GET_INT2(PC)	;*/undomodify BSR GET_INT2
	BNE.S	L08264
	MOVE.W	0(A6,A1.L),D1
	SUBQ.W	#2,A1
	BRA.S	L08240
FILLstr:
	SUBQ.W	#8,A5
	BSR.S	L082CE
	BEQ	L0819E
	SUBQ.L	#1,D1
	BGT.S	L0828A
	MOVE.B	$02(A6,A1.L),$03(A6,A1.L)
L0828A	MOVE.W	$02(A6,A1.L),D5
	ADDQ.L	#4,D1
	BCLR	#0,D1
	ADDA.L	D1,A1
	MOVE.L	A1,BV_RIP(A6)	;arith stack
	MOVEA.L	A5,A3
	ADDQ.W	#8,A5
	JSR	GET_INT2(PC)	;*/undomodify BSR GET_INT2
	BNE.S	L08264
	ADDQ.L	#2,BV_RIP(A6)	;arith stack
	MOVEQ	#0,D4
	MOVE.W	0(A6,A1.L),D4
	BLT	L0819E
	BEQ.S	L08252
	MOVE.L	D4,D1
	BSR.S	L082F2
L082B8	SUBQ.W	#2,A1
	MOVE.W	D5,0(A6,A1.L)
	SUBQ.L	#2,D1
	BGT.S	L082B8
	MOVE.W	D4,0(A6,A1.L)
	BRA.S	L08252
BAS_LEN:
	BSR.S	L082CE
	MOVE.W	D1,D5
	BRA.S	L082E6
L082CE	JSR	GET_STR(PC)	;*/undomodify BSR GET_STR
	BNE.S	L08262
	MOVEQ	#0,D5
	MOVEQ	#0,D1
	MOVE.W	0(A6,A1.L),D1
	RTS
BAS_CODE:
	BSR.S	L082CE
	BEQ.S	L082EE
	MOVE.B	$02(A6,A1.L),D5
L082E6	ADDQ.L	#1,D1
	BCLR	#0,D1
	ADDA.L	D1,A1
L082EE	BRA	L0813C
L082F2	ADDQ.L	#3,D1
	BCLR	#0,D1
	MOVE.L	D1,-(A7)
	JSR	BV_CHRIX(PC)	;*/undomodify BSR BV_CHRIX
	MOVEA.L	BV_RIP(A6),A1	;arith stack
	MOVE.L	(A7)+,D1
L08304	RTS
BAS_DIMN:
	MOVE.B	0(A6,A3.L),D1
	SUBQ.B	#3,D1
	BNE.S	L0834E
	MOVE.L	A3,-(A7)
	ADDQ.W	#8,A3
	JSR	CA_GTINT(PC)	;*/undomodify BSR CA_GTINT
	MOVEA.L	(A7)+,A3
	BNE.S	L08304
	SUBQ.W	#1,D3
	BGT.S	L08304
	BEQ.S	L08328
	BSR.S	L0836A
	SUBQ.W	#2,A1
	MOVEQ	#$01,D1
	BRA.S	L0832E
L08328	MOVE.W	0(A6,A1.L),D1
	BLE.S	L08352
L0832E	MOVEA.L	$04(A6,A3.L),A2
	ADDA.L	BV_VVBAS(A6),A2	;variable values
	MOVE.W	$04(A6,A2.L),D2
	SUB.W	D1,D2
	BLT.S	L08352
	ADDQ.W	#2,A2
	LSL.W	#2,D1
	ADDA.W	D1,A2
	MOVE.W	0(A6,A2.L),0(A6,A1.L)
	BRA	L080E0
L0834E	BSR.S	L0836A
	SUBQ.W	#2,A1
L08352	MOVEQ	#0,D5
	BRA.S	L082EE
BAS_IDATe:
	CMPA.L	A3,A5
	BNE	L0819E
	BSR.S	L0836A
	MOVEQ	#$13,D0		;MT.RCLCK reads the clock
	TRAP	#1
	BCLR	#$1F,D1
	BRA	L08186
L0836A	BRA	L08162
L0836E:
; --------------------------------------------------------------
;*/beginoverlay
BAS_KEYRow:
	JSR	GET_INT2(PC)	;*/undomodify BSR GET_INT2
	SUBQ.W	#8,A7
	BNE.S	L083B0
	MOVEA.L	A7,A3
	MOVE.B	#9,(A3)		;IPC read keyboard row
	MOVE.B	#1,1(A3) 	;one parameter
	clr.l	2(a3)		;*/modify MOVE.L #0,2(A3)
	MOVE.B	1(A6,A1.L),6(A3)	;row number
	MOVE.B	#2,7(A3)
	MOVE.L	A1,-(A7)
	MOVEQ	#$11,D0		;MT.IPCOM sends a command
				;(A3) to IPC
	TRAP	#1
	MOVEA.L	(A7)+,A1
	MOVE.W	D1,0(A6,A1.L)
	MOVEQ	#$03,D4
	moveq	#MT.INF,d0	;*/modify
	trap	#1		;*/modify
	move.l	SV_KEYQ(a0),a2	;*/modify MOVEA.L  $0002804C,A2
	MOVE.L	Q_NXTOUT(A2),Q_NEXTIN(A2)
L083B0	ADDQ.W	#8,A7
	RTS

NOP083B4:
	DCB.w ($83B4-(NOP083B4-ORGN))/2,$4E71

;*/endoverlay
; --------------------------------------------------------------
L083B4:
BAS_DATE:
	LEA	CN_DATE(PC),A4
	BRA.S	L083BE
BAS_DAY:
	LEA	CN_DAY(PC),A4
L083BE	JSR	L04E4C(PC)	;*/undomodify BSR L04E4C
	CMPA.L	A3,A5
	BLE.S	L083D4
	JSR	GET_INT4(PC)	;*/undomodify BSR GET_INT4
	BNE.S	L083E6
	MOVE.L	0(A6,A1.L),D1
	ADDQ.L	#4,A1
	BRA.S	L083DC
L083D4	MOVEQ	#$13,D0		;MT.RCLCK reads the clock
				;-> D1
	TRAP	#1
	MOVEA.L	BV_RIP(A6),A1	;arith stack
L083DC	JSR	(A4)
	MOVEQ	#1,D4
	MOVE.L	A1,BV_RIP(A6)	;arith stack
	MOVEQ	#0,D0
L083E6	RTS
ERR_BL	BSR.S	L08414
ERR_RO	BSR.S	L08414
ERR_NI	BSR.S	L08414
ERR_OV	BSR.S	L08414
ERR_XP	BSR.S	L08414
ERR_FE	BSR.S	L08414
ERR_BP	BSR.S	L08414
ERR_FF	BSR.S	L08414
ERR_TE	BSR.S	L08414
ERR_BN	BSR.S	L08414
ERR_DF	BSR.S	L08414		;*/mend BRA.S $8414
ERR_EF	BSR.S	L08414
ERR_IU	BSR.S	L08414
ERR_EX	BSR.S	L08414
ERR_NF	BSR.S	L08414
ERR_NO	BSR.S	L08414
ERR_BO	BSR.S	L08414
ERR_OR	BSR.S	L08414
ERR_OM	BSR.S	L08414
ERR_NJ	BSR.S	L08414
ERR_NC	BSR.S	L08414
	NOP
L08414:
	PEA	L08414(PC)
	MOVE.L	(A7)+,D4
	SUB.L	(A7)+,D4
	LSR.L	#1,D4
	BSR.S	L08446
	SUBQ.W	#6,A1
	CLR.W	0(A6,A1.L)
	CLR.L	2(A6,A1.L)
	ADD.L	$C2(A6),D4	;
	BNE.S	L0843C
	MOVE.W	#$0801,0(A6,A1.L)
	MOVE.B	#$40,2(A6,A1.L)
L0843C	MOVEQ	#2,D4
L0843E	MOVE.L	A1,BV_RIP(A6)	;arith stack
	MOVEQ	#0,D0
	RTS
L08446	CMPA.L	A3,A5
	BNE.S	L08454
	JSR	L04E4C(PC)	;*/undomodify BSR L04E4C
	MOVEA.L	BV_RIP(A6),A1	;arith stack
	RTS
L08454	ADDQ.W	#4,A7
	MOVEQ	#-15,D0
	RTS
BAS_ERNUm:
	BSR.S	L08446
	SUBQ.W	#2,A1
	MOVE.W	$C4(A6),0(A6,A1.L) ;
L08464	MOVEQ	#3,D4
	BRA.S	L0843E
BAS_ERLIn:
	BSR.S	L08446
	SUBQ.W	#2,A1
	MOVE.W	$C6(A6),0(A6,A1.L) ;
	BRA.S	L08464
; --------------------------------------------------------------
;*/endfile
