	XDEF	kcmpstr_ii
	XDEF	kgetchar
	XDEF	kgetnum
	XDEF	kmaygetchar
	XDEF	kputfmt_ii
	XDEF	kputchar_i
	XDEF	kputstr_i


ABSEXECBASE	EQU	$4


kputchar_i:
	MOVE.L	4(A7),D0
LAB_0001:
	MOVE.L	A6,-(A7)
	MOVEA.L	ABSEXECBASE,A6
	JSR		-516(A6)
	MOVEA.L	(A7)+,A6
	RTS


kputstr_i:
	MOVEA.L	4(A7),A0
LAB_0003:
	MOVE.B	(A0)+,D0
	BEQ.S	LAB_0004
	BSR.S	LAB_0001
	BRA.S	LAB_0003
LAB_0004:
	RTS


kgetchar:
	BSR.S	kmaygetchar
	TST.L	D0
	BMI.S	kgetchar
	RTS


kmaygetchar:
	MOVE.L	A6,-(A7)
	MOVEA.L	ABSEXECBASE,A6
	JSR		-510(A6)
	MOVEA.L	(A7)+,A6
	RTS


kputfmt_ii:
	MOVEA.L	8(A7),A0
	MOVEA.L	4(A7),A1
	MOVEM.L	A2,-(A7)
	LEA.L	LAB_0001(PC),A2
	BSR.S	LAB_0009
	MOVEM.L	(A7)+,A2
	RTS
LAB_0009:
	MOVE.L	A6,-(A7)
	MOVEA.L	ABSEXECBASE,A6
	JSR	-522(A6)
	MOVEA.L	(A7)+,A6
	RTS


kcmpstr_ii:
	MOVEM.L	4(A7),A0-A1
	MOVEQ	#-1,D0
LAB_000B:
	MOVE.B	(A0)+,D1
	BEQ.S	LAB_000C
	CMP.B	(A1)+,D1
	DBNE	D0,LAB_000B
	NEG.L	D0
	BRA.S	LAB_000D
LAB_000C:
	CMP.B	(A1)+,D1
	BNE.S	LAB_000D
	MOVEQ	#0,D0
LAB_000D:
	RTS


kgetnum:
	MOVEM.L	D2-D4,-(A7)
LAB_000F:
	MOVEQ	#0,D2
	MOVEQ	#0,D3
	MOVEQ	#0,D4
	JSR	kgetchar
	CMPI.B	#$2D,D0
	BNE.S	LAB_0011
	JSR	LAB_0001
	ADDQ	#1,D3
	MOVEQ	#-1,D4
	BRA.S	LAB_0011
LAB_0010:
	JSR	kgetchar
LAB_0011:
	CMPI.B	#$08,D0
	BNE.S	LAB_0012
	TST	D3
	BEQ.S	LAB_000F
	JSR	LAB_0001
	MOVEQ	#32,D0
	JSR	LAB_0001
	MOVEQ	#8,D0
	JSR	LAB_0001
	SUBQ	#1,D3
	BEQ.S	LAB_000F
	SWAP	D2
	MOVEQ	#0,D1
	MOVE	D2,D1
	DIVU	#$000A,D1
	SWAP	D1
	MOVE	D1,D2
	SWAP	D2
	DIVU	#$000A,D2
	MOVE	D2,D1
	MOVE.L	D1,D2
LAB_0012:
	CMPI.B	#$30,D0
	BCS.S	LAB_0013
	CMPI.B	#$39,D0
	BHI.S	LAB_0013
	MOVE.L	D2,D1
	ASL.L	#2,D1
	BVS.S	LAB_0010
	ADD.L	D2,D1
	BVS.S	LAB_0010
	ASL.L	#1,D1
	SUBI.B	#$30,D0
	ADD.L	D0,D1
	BCS.S	LAB_0010
	ADDI.B	#$30,D0
	MOVE.L	D1,D2
	JSR	LAB_0001
	ADDQ	#1,D3
LAB_0013:
	CMPI.B	#$0D,D0
	BNE.S	LAB_0010
	TST.B	D4
	BEQ.S	LAB_0014
	NEG.L	D2
LAB_0014:
	MOVE.L	D2,D0
	MOVEM.L	(A7)+,D2-D4
	RTS
