*/beginfile PROCS6_asm
; --------------------------------------------------------------
; PROCS6_asm - BASIC bits
;	    - last modified 27/08/95
; QDOS-Amiga sources by Rainer Kowallik
;    ...some changes by Mark J Swift
; --------------------------------------------------------------
BAS_READ:
	MOVE.L	A5,-(A7)
L06860	CMPA.L	(A7),A3
	BGE.S	L06886
	JSR	L07A8E(PC)	;*/undomodify BSR L07A8E
	BNE.S	L06888
	JSR	L066FA(PC)	;*/undomodify BSR L066FA
	BNE.S	L06888
	MOVE.B	$01(A6,A3.L),D0
	MOVE.L	A3,-(A7)
	JSR	L05A84(PC)	;*/undomodify BSR L05A84
	MOVEA.L	(A7)+,A3
	BNE.S	L06888
	JSR	BP_LET(PC)	;*/undomodify BSR BP_LET
	ADDQ.W	#8,A3
	BRA.S	L06860
L06886	MOVEQ	#0,D0
L06888	MOVEA.L	(A7)+,A5
	RTS
EXEC:
	MOVEQ	#0,D5
	BRA.S	L06892
EXEC_W:
	MOVEQ	#-1,D5
L06892:
	MOVEQ	#1,D4
	BSR.L	L069C4
	BNE.S	L068F8
	MOVEQ	#$47,D0
	MOVEQ	#$0E,D2
	MOVEA.L	(A6),A1
	BSR.L	TRAP_4_3
	BNE.S	L06912
	CMPI.B	#$01,-$09(A6,A1.L)
	BNE.L	L06990
	MOVEQ	#MT.CJOB,D0	; create job in
				; transient prog. area
	MOVEQ	#-1,D1		; owner of job
	MOVE.L	-14(A6,A1.L),D2
	MOVE.L	-8(A6,A1.L),D3
	SUBA.L	A1,A1		; start address
	MOVEM.L	D2/A0/A3,-(A7)
	TRAP	#1
	MOVEA.L	A0,A1
	MOVEM.L	(A7)+,D2/A0/A3
	TST.L	D0
	BNE.S	L06912
	MOVE.L	D1,D6
	MOVEQ	#$48,D0
	BSR.L	BAS_TRAP3	;*/note could be short
	BSR.L	L0693A		;*/undomodify BSR.S L0693A
				;*/undomodify nop
	BNE.S	L068FA
	MOVEQ	#$0A,D0
	MOVE.L	D6,D1
	MOVEQ	#$20,D2
	MOVE.L	D5,D3
	TRAP	#1
	TST.L	D0
	BNE.S	L068FA
	TST.L	D5
	BNE.S	L068F8
	MOVEQ	#MT.SUSJB,D0	;suspend a job
	MOVEQ	#-1,D1		; me
	MOVEQ	#$19,D3		; timeout
	SUBA.L	A1,A1		; no flag
	TRAP	#1
L068F8:
	RTS
L068FA:
	MOVE.L	D0,D4
	MOVEQ	#MT.RJOB,D0	;remove job
	MOVE.L	D6,D1
	TRAP	#1
	MOVE.L	D4,D0
	RTS
BAS_LBYTes:
	MOVEQ	#$01,D4
	BSR	L069C4
	BNE.S	L068F8
	JSR	CA_GTLIN(PC)	;*/undomodify BSR CA_GTLIN
L06912	BNE.S	L06986
	SUBQ.W	#1,D3
	BNE.S	L06990
	BTST	#0,$03(A6,A1.L)
	BNE.S	L06990
	MOVEA.L	0(A6,A1.L),A1
	ADDQ.L	#4,BV_RIP(A6)	;arithmetic stack
	MOVEQ	#$47,D0
	moveq	#4,d2		;*/modify MOVEQ #14,D2
	MOVE.L	A1,-(A7)
	BSR.S	BAS_TRAP3
	MOVEA.L	(A7)+,A1
	BNE.S	L06986
	MOVE.L	(A1),D2
	MOVEQ	#$48,D0
	BSR.S	BAS_TRAP3
L0693A	BRA.S	L06986
BAS_SEXEc:
	MOVEQ	#$01,D5
	BRA.S	L06942
BAS_SBYTes:
	MOVEQ	#0,D5
L06942	MOVE.L	A3,BV_PTEMP(A6)	;Temp.pointer for GO.PROC
	MOVEQ	#2,D4
	BSR.S	L069C4
	BNE.S	L0698E
	JSR	CA_GTLIN(PC)	;*/undomodify BSR CA_GTLIN
	BNE.S	L06986
	SUBQ.W	#2,D3
	SUB.W	D5,D3
	BNE.S	L0699A
	MOVEA.L	0(A6,A1.L),A2
	ADDQ.W	#2,A1
	MOVE.L	2(A6,A1.L),0(A6,A1.L)
	MOVE.W	D5,4(A6,A1.L)
	MOVEQ	#FS.HEADS,D0	;set file header
	MOVE.L	A1,-(A7)
	BSR.S	TRAP_4_3
	MOVEA.L	(A7)+,A1
	BNE.S	L06986
	MOVE.L	0(A6,A1.L),D2
	ADDQ.W	#6,A1
	LSL.W	#4,D5
	ADDA.W	D5,A1
	MOVE.L	A1,BV_RIP(A6)	;arithmetic stack
	MOVEA.L	A2,A1		; address of file
	MOVEQ	#FS.SAVE,D0	;save file from memory
	BSR.S	BAS_TRAP3
L06986	MOVE.L	D0,D4
L06988	MOVEQ	#IO.CLOSE,D0
	TRAP	#2
L0698C	MOVE.L	D4,D0
L0698E	RTS
L06990	MOVEQ	#-15,D0
	BRA.S	L06986
L06994	ADDQ.W	#4,A7
L06996	MOVEQ	#-15,D0
	RTS
L0699A	BSR.S	L06988
	MOVEA.L	BV_PTEMP(A6),A3	;temp. pointer for GO.PROC
	BSR.S	BAS_DELEte
	BRA.S	L06996

; --------------------------------------------------------------
;*/endfile
