

;       C-65 interface routines to BBS Express! Professional
;
;            Copyright (c) 1988 by Orion Micro Systems


echo:           jmp     $3200
echos:          jmp     $3203
cr_lf:          jmp     $3209

        .IF_REFERENCED get_string
get_string:     lda     _parm1
                sta     .parms+0
                lda     _parm1+1
                sta     .parms+1
                lda     _parm2
                sta     .parms+2
                lda     _parm3
                sta     .parms+3
                lda     _parm4
                sta     $a4
                lda     .parms+3
                sta     $a3
                lda     .parms+2
                tay
                lda     .parms+1
                tax
                lda     .parms+0
                jmp     $320c
.parms:         ds.b    5
        .ENDIF

suspend:        jmp     $320f
miosuspend:     jmp     $3212
resume:         jmp     $3215
mioresume:      jmp     $3218
update_status:	jmp		$30ed


        .IF_REFERENCED open_ulog
open_ulog:      jsr     $321b
                lda     _freslo
                ldx     #0
                rts
        .ENDIF

close_ulog:     jmp     $321e


        .IF_REFERENCED read_user
read_user:      jsr     $3221
                lda     _freslo
                ldx     #0
                rts
        .ENDIF

        .IF_REFERENCED write_user
write_user:     jsr     $3224
                lda     _freslo
                ldx     #0
                rts
        .ENDIF

ck_range:       jsr     $3227
                lda     _freslo
                ldx     #0
                rts
chain:          jmp     $322A
reset_bbs:      jmp     $322d

get_key:        jsr     $3230
                lda     _freslo
                ldx     #0
                rts

get_byte:       jsr     $3233
                lda     _freslo
                ldx     #0
                rts
get_card:       jsr     $3236
                lda  _freslo
                ldx  _freshi
                rts
pause:          jmp     $3239
carrier:        jmp     $323C
syserror:       jmp     $323F
echose:         jmp     $3284
echob:          jmp     $3257
check_carrier:	jsr		$32C3
				ldx		#0
				rts


        .IF_REFERENCED partial_overlay
partial_overlay:
		lda     _parm2+1
                sta     $a3
                lda     _parm2
                tay
                lda     _parm1+1
                tax
                lda     _parm1
		jmp	$32e7
	.ENDIF


        .IF_REFERENCED to_ascii
to_ascii:       lda     _parm2+1
                sta     $a3
                lda     _parm2
                tay
                lda     _parm1+1
                tax
                lda     _parm1
                jmp     $3251
        .ENDIF

        .IF_REFERENCED to_str
to_str:         lda     _parm2+1
                sta     $a3
                lda     _parm2
                tay
                lda     _parm1+1
                tax
                lda     _parm1
                jmp     $3254
        .ENDIF

echoc:          jmp     $325a
datestamp:      jmp     $325d
show_time:      jmp     $3260
show_date:      jmp     $3263

        .IF_REFERENCED sec_lvl
sec_lvl:        ldy     _parm2
                lda     _parm1+1
                tax
                lda     _parm1
                jsr     $3266
                lda     _freslo
                ldx     #0
                rts
        .ENDIF

first_free:     jsr     $3269
                lda     _freslo
                ldx     _freshi
                rts
first_new:      jsr     $326C
                lda     _freslo
                ldx     _freshi
                rts
find_handle:    jsr     $326f
                lda     _freslo
                ldx     _freshi
                rts
find_name:      jsr     $3272
                lda     _freslo
                ldx     _freshi
                rts
y_or_n:         jsr     $3275
                lda     _freslo
                ldx     #0
                rts
helpfile:       jmp     $3278
showfile:       jmp     $327B
dumpfile:       jmp     $327E
checktime:      jmp     $3281
echobe:         jmp     $3287
echoce:         jmp     $328a

        .IF_REFERENCED parse
parse:          lda     _parm4
                sta     $a6
                lda     _parm4+1
                sta     $a7
                lda     _parm3
                sta     $a4
                lda     _parm3+1
                sta     $a5
                lda     _parm2+1
                sta     $a3
                lda     _parm2
                tay
                lda     _parm1+1
                tax
                lda     _parm1
                jsr     $328d
                lda     _freslo
                ldx     #0
                rts
        .ENDIF

show_chat:      jmp     $3290
dos_run:        jmp     $3293
re_answer:      jmp     $3296
main_loop:      jmp     $3299
file_stat:      jmp     $32a2

bytes_in:       jsr     $32a5
                lda     _freslo
                ldx     #0
                rts
bytes_out:      jsr     $32a8
                lda     _freslo
                ldx     #0
                rts
calc_sum:       jsr     $32ab
                lda     _freslo
                ldx     #0
                rts

        .IF_REFERENCED calc_crc
calc_crc:       lda     _parm2+1
                sta     $a3
                lda     _parm2
                tay
                lda     _parm1+1
                tax
                lda     _parm1
                jsr     $32ae
                lda     _freslo
                ldx     _freshi
                rts
        .ENDIF

clr_lvl:        ldy     _parm2
                lda     _parm1+1
                tax
                lda     _parm1
                jmp     $32b1
set_lvl:        ldy     _parm2
                lda     _parm1+1
                tax
                lda     _parm1
                jmp     $32b4

set_date:       ldy     _parm3
                ldx     _parm2
                lda     _parm1
                jmp     $32ba
set_time:       ldy     _parm3
                ldx     _parm2
                lda     _parm1
                jmp     $32bd


foreground:     jmp     $32c6
dtroff:         jmp     $32c9
dtron:          jmp     $32cc
config:         jmp     $32cf
mdmstat:        jmp     $32d2
open_mdm:       jmp     $32d5
exit_netcall:   jmp     $32d8
echo3i:         jmp     $32db
overlay:        jmp     $32de

	.IF_REFERENCED echof
echof:		lda 	_parm1
		sta 	_pfptr
		lda 	_parm1+1
		sta 	_pfptr+1
		ldy 	#0		;make our own private copy of
.gstack:	lda 	_parm2,y	; the stack parameters
		sta 	.stack,y
		iny
		cpy 	#18
		bcc 	.gstack
		ldy 	#0
		sty 	.stkidx
		lda 	(_pfptr),y		;length of mask
		sta 	.strlth
		iny
		sty 	.stridx
.loop:		ldy 	.stridx
		cpy 	.strlth
		bcc 	.notdone
		beq 	.notdone
.exit_ef:	rts
.notdone:	lda 	(_pfptr),y		;next byte of string
		cmp 	#'%'			;special lead-in?
		beq 	.special
.thischar:	jsr	echo			;echo it
.nextbyte:	inc 	.stridx
		jmp 	.loop
.special:	iny
		sty 	.stridx
		lda 	(_pfptr),y
		cmp 	#'s'			;string?
		beq 	.string
		cmp 	#'d'
		beq 	.decimal
		cmp 	#'e'
		beq 	.eol
		cmp 	#'c'			;string?
		beq 	.char
		jmp 	.thischar
.eol:		lda 	#$9b
		jmp	.thischar
.string:	lda 	.stkidx
		asl
		tay
		lda 	.stack+1,y
		tax
		lda 	.stack,y
		jsr 	echos
		inc 	.stkidx
		jmp 	.nextbyte
.decimal:	lda 	.stkidx
		asl
		tay
		lda 	.stack+1,y
                tax
		lda 	.stack,y
		jsr	echoc
		inc 	.stkidx
		jmp 	.nextbyte
.char:		lda 	.stkidx
		asl
		tay
		lda 	.stack,y
		jsr 	echo
		inc 	.stkidx
		jmp 	.nextbyte
.device:	ds.b	1
.strlth:	ds.b	1
.stridx:	ds.b	1
.stkidx:	ds.b	1
.stack: 	ds.b	20
	.ENDIF

